D3DX8.pas
资源名称:CAST2SDK.rar [点击查看]
上传用户:yj_qiu
上传日期:2022-08-08
资源大小:23636k
文件大小:174k
源码类别:
游戏引擎
开发平台:
Delphi
- //////////////////////////////////////////////////////////////////////////////
- //
- // Copyright (C) Microsoft Corporation. All Rights Reserved.
- //
- // File: d3dx8tex.h
- // Content: D3DX texturing APIs
- //
- //////////////////////////////////////////////////////////////////////////////
- //----------------------------------------------------------------------------
- // D3DX_FILTER flags:
- // ------------------
- //
- // A valid filter must contain one of these values:
- //
- // D3DX_FILTER_NONE
- // No scaling or filtering will take place. Pixels outside the bounds
- // of the source image are assumed to be transparent black.
- // D3DX_FILTER_POINT
- // Each destination pixel is computed by sampling the nearest pixel
- // from the source image.
- // D3DX_FILTER_LINEAR
- // Each destination pixel is computed by linearly interpolating between
- // the nearest pixels in the source image. This filter works best
- // when the scale on each axis is less than 2.
- // D3DX_FILTER_TRIANGLE
- // Every pixel in the source image contributes equally to the
- // destination image. This is the slowest of all the filters.
- // D3DX_FILTER_BOX
- // Each pixel is computed by averaging a 2x2(x2) box pixels from
- // the source image. Only works when the dimensions of the
- // destination are half those of the source. (as with mip maps)
- //
- // And can be OR'd with any of these optional flags:
- //
- // D3DX_FILTER_MIRROR_U
- // Indicates that pixels off the edge of the texture on the U-axis
- // should be mirrored, not wraped.
- // D3DX_FILTER_MIRROR_V
- // Indicates that pixels off the edge of the texture on the V-axis
- // should be mirrored, not wraped.
- // D3DX_FILTER_MIRROR_W
- // Indicates that pixels off the edge of the texture on the W-axis
- // should be mirrored, not wraped.
- // D3DX_FILTER_MIRROR
- // Same as specifying D3DX_FILTER_MIRROR_U | D3DX_FILTER_MIRROR_V |
- // D3DX_FILTER_MIRROR_V
- // D3DX_FILTER_DITHER
- // Dithers the resulting image.
- //
- //----------------------------------------------------------------------------
- const
- D3DX_FILTER_NONE = (1 shl 0);
- {$EXTERNALSYM D3DX_FILTER_NONE}
- D3DX_FILTER_POINT = (2 shl 0);
- {$EXTERNALSYM D3DX_FILTER_POINT}
- D3DX_FILTER_LINEAR = (3 shl 0);
- {$EXTERNALSYM D3DX_FILTER_LINEAR}
- D3DX_FILTER_TRIANGLE = (4 shl 0);
- {$EXTERNALSYM D3DX_FILTER_TRIANGLE}
- D3DX_FILTER_BOX = (5 shl 0);
- {$EXTERNALSYM D3DX_FILTER_BOX}
- D3DX_FILTER_MIRROR_U = (1 shl 16);
- {$EXTERNALSYM D3DX_FILTER_MIRROR_U}
- D3DX_FILTER_MIRROR_V = (2 shl 16);
- {$EXTERNALSYM D3DX_FILTER_MIRROR_V}
- D3DX_FILTER_MIRROR_W = (4 shl 16);
- {$EXTERNALSYM D3DX_FILTER_MIRROR_W}
- D3DX_FILTER_MIRROR = (7 shl 16);
- {$EXTERNALSYM D3DX_FILTER_MIRROR}
- D3DX_FILTER_DITHER = (8 shl 16);
- {$EXTERNALSYM D3DX_FILTER_DITHER}
- //----------------------------------------------------------------------------
- // D3DX_NORMALMAP flags:
- // ---------------------
- // These flags are used to control how D3DXComputeNormalMap generates normal
- // maps. Any number of these flags may be OR'd together in any combination.
- //
- // D3DX_NORMALMAP_MIRROR_U
- // Indicates that pixels off the edge of the texture on the U-axis
- // should be mirrored, not wraped.
- // D3DX_NORMALMAP_MIRROR_V
- // Indicates that pixels off the edge of the texture on the V-axis
- // should be mirrored, not wraped.
- // D3DX_NORMALMAP_MIRROR
- // Same as specifying D3DX_NORMALMAP_MIRROR_U | D3DX_NORMALMAP_MIRROR_V
- // D3DX_NORMALMAP_INVERTSIGN
- // Inverts the direction of each normal
- // D3DX_NORMALMAP_COMPUTE_OCCLUSION
- // Compute the per pixel Occlusion term and encodes it into the alpha.
- // An Alpha of 1 means that the pixel is not obscured in anyway, and
- // an alpha of 0 would mean that the pixel is completly obscured.
- //
- //----------------------------------------------------------------------------
- //----------------------------------------------------------------------------
- const
- D3DX_NORMALMAP_MIRROR_U = (1 shl 16);
- {$EXTERNALSYM D3DX_NORMALMAP_MIRROR_U}
- D3DX_NORMALMAP_MIRROR_V = (2 shl 16);
- {$EXTERNALSYM D3DX_NORMALMAP_MIRROR_V}
- D3DX_NORMALMAP_MIRROR = (3 shl 16);
- {$EXTERNALSYM D3DX_NORMALMAP_MIRROR}
- D3DX_NORMALMAP_INVERTSIGN = (8 shl 16);
- {$EXTERNALSYM D3DX_NORMALMAP_INVERTSIGN}
- D3DX_NORMALMAP_COMPUTE_OCCLUSION = (16 shl 16);
- {$EXTERNALSYM D3DX_NORMALMAP_COMPUTE_OCCLUSION}
- //----------------------------------------------------------------------------
- // D3DX_CHANNEL flags:
- // -------------------
- // These flags are used by functions which operate on or more channels
- // in a texture.
- //
- // D3DX_CHANNEL_RED
- // Indicates the red channel should be used
- // D3DX_CHANNEL_BLUE
- // Indicates the blue channel should be used
- // D3DX_CHANNEL_GREEN
- // Indicates the green channel should be used
- // D3DX_CHANNEL_ALPHA
- // Indicates the alpha channel should be used
- // D3DX_CHANNEL_LUMINANCE
- // Indicates the luminaces of the red green and blue channels should be
- // used.
- //
- //----------------------------------------------------------------------------
- const
- D3DX_CHANNEL_RED = (1 shl 0);
- {$EXTERNALSYM D3DX_CHANNEL_RED}
- D3DX_CHANNEL_BLUE = (1 shl 1);
- {$EXTERNALSYM D3DX_CHANNEL_BLUE}
- D3DX_CHANNEL_GREEN = (1 shl 2);
- {$EXTERNALSYM D3DX_CHANNEL_GREEN}
- D3DX_CHANNEL_ALPHA = (1 shl 3);
- {$EXTERNALSYM D3DX_CHANNEL_ALPHA}
- D3DX_CHANNEL_LUMINANCE = (1 shl 4);
- {$EXTERNALSYM D3DX_CHANNEL_LUMINANCE}
- //----------------------------------------------------------------------------
- // D3DXIMAGE_FILEFORMAT:
- // ---------------------
- // This enum is used to describe supported image file formats.
- //
- //----------------------------------------------------------------------------
- type
- PD3DXImageFileFormat = ^TD3DXImageFileFormat;
- _D3DXIMAGE_FILEFORMAT = (
- D3DXIFF_BMP {= 0},
- D3DXIFF_JPG {= 1},
- D3DXIFF_TGA {= 2},
- D3DXIFF_PNG {= 3},
- D3DXIFF_DDS {= 4},
- D3DXIFF_PPM {= 5},
- D3DXIFF_DIB {= 6}
- );
- {$EXTERNALSYM _D3DXIMAGE_FILEFORMAT}
- D3DXIMAGE_FILEFORMAT = _D3DXIMAGE_FILEFORMAT;
- {$EXTERNALSYM D3DXIMAGE_FILEFORMAT}
- TD3DXImageFileFormat = _D3DXIMAGE_FILEFORMAT;
- //----------------------------------------------------------------------------
- // LPD3DXFILL2D and LPD3DXFILL3D:
- // ------------------------------
- // Function types used by the texture fill functions.
- //
- // Parameters:
- // pOut
- // Pointer to a vector which the function uses to return its result.
- // X,Y,Z,W will be mapped to R,G,B,A respectivly.
- // pTexCoord
- // Pointer to a vector containing the coordinates of the texel currently
- // being evaluated. Textures and VolumeTexture texcoord components
- // range from 0 to 1. CubeTexture texcoord component range from -1 to 1.
- // pTexelSize
- // Pointer to a vector containing the dimensions of the current texel.
- // pData
- // Pointer to user data.
- //
- //----------------------------------------------------------------------------
- type
- // typedef VOID (*LPD3DXFILL2D)(D3DXVECTOR4 *pOut, D3DXVECTOR2 *pTexCoord, D3DXVECTOR2 *pTexelSize, LPVOID pData);
- LPD3DXFILL2D = procedure (out pOut: TD3DXVector4; const pTexCoord, pTexelSize: TD3DXVector2; var pData); cdecl;
- {$EXTERNALSYM LPD3DXFILL2D}
- TD3DXFill2D = LPD3DXFILL2D;
- // typedef VOID (*LPD3DXFILL3D)(D3DXVECTOR4 *pOut, D3DXVECTOR3 *pTexCoord, D3DXVECTOR3 *pTexelSize, LPVOID pData);
- LPD3DXFILL3D = procedure (out pOut: TD3DXVector4; const pTexCoord, pTexelSize: TD3DXVector3; var pData); cdecl;
- {$EXTERNALSYM LPD3DXFILL3D}
- TD3DXFill3D = LPD3DXFILL3D;
- //----------------------------------------------------------------------------
- // D3DXIMAGE_INFO:
- // ---------------
- // This structure is used to return a rough description of what the
- // the original contents of an image file looked like.
- //
- // Width
- // Width of original image in pixels
- // Height
- // Height of original image in pixels
- // Depth
- // Depth of original image in pixels
- // MipLevels
- // Number of mip levels in original image
- // Format
- // D3D format which most closely describes the data in original image
- // ResourceType
- // D3DRESOURCETYPE representing the type of texture stored in the file.
- // D3DRTYPE_TEXTURE, D3DRTYPE_VOLUMETEXTURE, or D3DRTYPE_CUBETEXTURE.
- // ImageFileFormat
- // D3DXIMAGE_FILEFORMAT representing the format of the image file.
- //
- //----------------------------------------------------------------------------
- type
- PD3DXImageInfo = ^TD3DXImageInfo;
- _D3DXIMAGE_INFO = packed record
- Width: LongWord;
- Height: LongWord;
- Depth: LongWord;
- MipLevels: LongWord;
- Format: TD3DFormat;
- ResourceType: TD3DResourceType;
- ImageFileFormat: TD3DXImageFileFormat;
- end;
- {$EXTERNALSYM _D3DXIMAGE_INFO}
- D3DXIMAGE_INFO = _D3DXIMAGE_INFO;
- {$EXTERNALSYM D3DXIMAGE_INFO}
- TD3DXImageInfo = _D3DXIMAGE_INFO;
- //////////////////////////////////////////////////////////////////////////////
- // Image File APIs ///////////////////////////////////////////////////////////
- //////////////////////////////////////////////////////////////////////////////
- //----------------------------------------------------------------------------
- // GetImageInfoFromFile/Resource:
- // ------------------------------
- // Fills in a D3DXIMAGE_INFO struct with information about an image file.
- //
- // Parameters:
- // pSrcFile
- // File name of the source image.
- // pSrcModule
- // Module where resource is located, or NULL for module associated
- // with image the os used to create the current process.
- // pSrcResource
- // Resource name
- // pSrcData
- // Pointer to file in memory.
- // SrcDataSize
- // Size in bytes of file in memory.
- // pSrcInfo
- // Pointer to a D3DXIMAGE_INFO structure to be filled in with the
- // description of the data in the source image file.
- //
- //----------------------------------------------------------------------------
- function D3DXGetImageInfoFromFileA(
- pSrcFile: PAnsiChar;
- out pSrcInfo: TD3DXImageInfo): HResult; stdcall; external d3dx8dll name 'D3DXGetImageInfoFromFileA';
- {$EXTERNALSYM D3DXGetImageInfoFromFileA}
- function D3DXGetImageInfoFromFileW(
- pSrcFile: PWideChar;
- out pSrcInfo: TD3DXImageInfo): HResult; stdcall; external d3dx8dll name 'D3DXGetImageInfoFromFileW';
- {$EXTERNALSYM D3DXGetImageInfoFromFileW}
- function D3DXGetImageInfoFromFile(
- pSrcFile: PChar;
- out pSrcInfo: TD3DXImageInfo): HResult; stdcall; external d3dx8dll name 'D3DXGetImageInfoFromFileA';
- {$EXTERNALSYM D3DXGetImageInfoFromFile}
- function D3DXGetImageInfoFromResourceA(
- hSrcModule: HModule;
- pSrcResource: PAnsiChar;
- out pSrcInfo: TD3DXImageInfo): HResult; stdcall; external d3dx8dll name 'D3DXGetImageInfoFromResourceA';
- {$EXTERNALSYM D3DXGetImageInfoFromResourceA}
- function D3DXGetImageInfoFromResourceW(
- hSrcModule: HModule;
- pSrcResource: PWideChar;
- out pSrcInfo: TD3DXImageInfo): HResult; stdcall; external d3dx8dll name 'D3DXGetImageInfoFromResourceW';
- {$EXTERNALSYM D3DXGetImageInfoFromResourceW}
- function D3DXGetImageInfoFromResource(
- hSrcModule: HModule;
- pSrcResource: PChar;
- out pSrcInfo: TD3DXImageInfo): HResult; stdcall; external d3dx8dll name 'D3DXGetImageInfoFromResourceA';
- {$EXTERNALSYM D3DXGetImageInfoFromResource}
- function D3DXGetImageInfoFromFileInMemory(
- const pSrcData;
- SrcDataSize: LongWord;
- out pSrcInfo: TD3DXImageInfo): HResult; stdcall; external d3dx8dll;
- {$EXTERNALSYM D3DXGetImageInfoFromFileInMemory}
- //////////////////////////////////////////////////////////////////////////////
- // Load/Save Surface APIs ////////////////////////////////////////////////////
- //////////////////////////////////////////////////////////////////////////////
- //----------------------------------------------------------------------------
- // D3DXLoadSurfaceFromFile/Resource:
- // ---------------------------------
- // Load surface from a file or resource
- //
- // Parameters:
- // pDestSurface
- // Destination surface, which will receive the image.
- // pDestPalette
- // Destination palette of 256 colors, or NULL
- // pDestRect
- // Destination rectangle, or NULL for entire surface
- // pSrcFile
- // File name of the source image.
- // pSrcModule
- // Module where resource is located, or NULL for module associated
- // with image the os used to create the current process.
- // pSrcResource
- // Resource name
- // pSrcData
- // Pointer to file in memory.
- // SrcDataSize
- // Size in bytes of file in memory.
- // pSrcRect
- // Source rectangle, or NULL for entire image
- // Filter
- // D3DX_FILTER flags controlling how the image is filtered.
- // Or D3DX_DEFAULT for D3DX_FILTER_TRIANGLE.
- // ColorKey
- // Color to replace with transparent black, or 0 to disable colorkey.
- // This is always a 32-bit ARGB color, independent of the source image
- // format. Alpha is significant, and should usually be set to FF for
- // opaque colorkeys. (ex. Opaque black == 0xff000000)
- // pSrcInfo
- // Pointer to a D3DXIMAGE_INFO structure to be filled in with the
- // description of the data in the source image file, or NULL.
- //
- //----------------------------------------------------------------------------
- function D3DXLoadSurfaceFromFileA(
- pDestSurface: IDirect3DSurface8;
- pDestPalette: PPaletteEntry;
- pDestRect: PRect;
- pSrcFile: PAnsiChar;
- pSrcRect: PRect;
- Filter: DWord;
- ColorKey: TD3DColor;
- pSrcInfo: PD3DXImageInfo): HResult; stdcall; external d3dx8dll name 'D3DXLoadSurfaceFromFileA';
- {$EXTERNALSYM D3DXLoadSurfaceFromFileA}
- function D3DXLoadSurfaceFromFileW(
- pDestSurface: IDirect3DSurface8;
- pDestPalette: PPaletteEntry;
- pDestRect: PRect;
- pSrcFile: PWideChar;
- pSrcRect: PRect;
- Filter: DWord;
- ColorKey: TD3DColor;
- pSrcInfo: PD3DXImageInfo): HResult; stdcall; external d3dx8dll name 'D3DXLoadSurfaceFromFileW';
- {$EXTERNALSYM D3DXLoadSurfaceFromFileW}
- function D3DXLoadSurfaceFromFile(
- pDestSurface: IDirect3DSurface8;
- pDestPalette: PPaletteEntry;
- pDestRect: PRect;
- pSrcFile: PChar;
- pSrcRect: PRect;
- Filter: DWord;
- ColorKey: TD3DColor;
- pSrcInfo: PD3DXImageInfo): HResult; stdcall; external d3dx8dll name 'D3DXLoadSurfaceFromFileA';
- {$EXTERNALSYM D3DXLoadSurfaceFromFile}
- function D3DXLoadSurfaceFromResourceA(
- pDestSurface: IDirect3DSurface8;
- pDestPalette: PPaletteEntry;
- pDestRect: PRect;
- hSrcModule: HModule;
- pSrcResource: PAnsiChar;
- pSrcRect: PRect;
- Filter: DWord;
- ColorKey: TD3DColor;
- pSrcInfo: PD3DXImageInfo): HResult; stdcall; external d3dx8dll name 'D3DXLoadSurfaceFromResourceA';
- {$EXTERNALSYM D3DXLoadSurfaceFromResourceA}
- function D3DXLoadSurfaceFromResourceW(
- pDestSurface: IDirect3DSurface8;
- pDestPalette: PPaletteEntry;
- pDestRect: PRect;
- hSrcModule: HModule;
- pSrcResource: PWideChar;
- pSrcRect: PRect;
- Filter: DWord;
- ColorKey: TD3DColor;
- pSrcInfo: PD3DXImageInfo): HResult; stdcall; external d3dx8dll name 'D3DXLoadSurfaceFromResourceW';
- {$EXTERNALSYM D3DXLoadSurfaceFromResourceW}
- function D3DXLoadSurfaceFromResource(
- pDestSurface: IDirect3DSurface8;
- pDestPalette: PPaletteEntry;
- pDestRect: PRect;
- hSrcModule: HModule;
- pSrcResource: PChar;
- pSrcRect: PRect;
- Filter: DWord;
- ColorKey: TD3DColor;
- pSrcInfo: PD3DXImageInfo): HResult; stdcall; external d3dx8dll name 'D3DXLoadSurfaceFromResourceA';
- {$EXTERNALSYM D3DXLoadSurfaceFromResource}
- function D3DXLoadSurfaceFromFileInMemory(
- pDestSurface: IDirect3DSurface8;
- pDestPalette: PPaletteEntry;
- pDestRect: PRect;
- const pSrcData;
- SrcDataSize: LongWord;
- pSrcRect: PRect;
- Filter: DWord;
- ColorKey: TD3DColor;
- pSrcInfo: PD3DXImageInfo): HResult; stdcall; external d3dx8dll;
- {$EXTERNALSYM D3DXLoadSurfaceFromFileInMemory}
- //----------------------------------------------------------------------------
- // D3DXLoadSurfaceFromSurface:
- // ---------------------------
- // Load surface from another surface (with color conversion)
- //
- // Parameters:
- // pDestSurface
- // Destination surface, which will receive the image.
- // pDestPalette
- // Destination palette of 256 colors, or NULL
- // pDestRect
- // Destination rectangle, or NULL for entire surface
- // pSrcSurface
- // Source surface
- // pSrcPalette
- // Source palette of 256 colors, or NULL
- // pSrcRect
- // Source rectangle, or NULL for entire surface
- // Filter
- // D3DX_FILTER flags controlling how the image is filtered.
- // Or D3DX_DEFAULT for D3DX_FILTER_TRIANGLE.
- // ColorKey
- // Color to replace with transparent black, or 0 to disable colorkey.
- // This is always a 32-bit ARGB color, independent of the source image
- // format. Alpha is significant, and should usually be set to FF for
- // opaque colorkeys. (ex. Opaque black == 0xff000000)
- //
- //----------------------------------------------------------------------------
- function D3DXLoadSurfaceFromSurface(
- pDestSurface: IDirect3DSurface8;
- pDestPalette: PPaletteEntry;
- pDestRect: PRect;
- pSrcSurface: IDirect3DSurface8;
- pSrcPalette: PPaletteEntry;
- pSrcRect: PRect;
- Filter: DWord;
- ColorKey: TD3DColor): HResult; stdcall; external d3dx8dll;
- {$EXTERNALSYM D3DXLoadSurfaceFromSurface}
- //----------------------------------------------------------------------------
- // D3DXLoadSurfaceFromMemory:
- // ---------------------------
- // Load surface from memory.
- //
- // Parameters:
- // pDestSurface
- // Destination surface, which will receive the image.
- // pDestPalette
- // Destination palette of 256 colors, or NULL
- // pDestRect
- // Destination rectangle, or NULL for entire surface
- // pSrcMemory
- // Pointer to the top-left corner of the source image in memory
- // SrcFormat
- // Pixel format of the source image.
- // SrcPitch
- // Pitch of source image, in bytes. For DXT formats, this number
- // should represent the width of one row of cells, in bytes.
- // pSrcPalette
- // Source palette of 256 colors, or NULL
- // pSrcRect
- // Source rectangle.
- // Filter
- // D3DX_FILTER flags controlling how the image is filtered.
- // Or D3DX_DEFAULT for D3DX_FILTER_TRIANGLE.
- // ColorKey
- // Color to replace with transparent black, or 0 to disable colorkey.
- // This is always a 32-bit ARGB color, independent of the source image
- // format. Alpha is significant, and should usually be set to FF for
- // opaque colorkeys. (ex. Opaque black == 0xff000000)
- //
- //----------------------------------------------------------------------------
- function D3DXLoadSurfaceFromMemory(
- pDestSurface: IDirect3DSurface8;
- pDestPalette: PPaletteEntry;
- pDestRect: PRect;
- const pSrcMemory;
- SrcFormat: TD3DFormat;
- SrcPitch: LongWord;
- pSrcPalette: PPaletteEntry;
- pSrcRect: PRect;
- Filter: DWord;
- ColorKey: TD3DColor): HResult; stdcall; external d3dx8dll;
- {$EXTERNALSYM D3DXLoadSurfaceFromMemory}
- //----------------------------------------------------------------------------
- // D3DXSaveSurfaceToFile:
- // ----------------------
- // Save a surface to a image file.
- //
- // Parameters:
- // pDestFile
- // File name of the destination file
- // DestFormat
- // D3DXIMAGE_FILEFORMAT specifying file format to use when saving.
- // pSrcSurface
- // Source surface, containing the image to be saved
- // pSrcPalette
- // Source palette of 256 colors, or NULL
- // pSrcRect
- // Source rectangle, or NULL for the entire image
- //
- //----------------------------------------------------------------------------
- function D3DXSaveSurfaceToFileA(
- pDestFile: PAnsiChar;
- DestFormat: TD3DXImageFileFormat;
- pSrcSurface: IDirect3DSurface8;
- pSrcPalette: PPaletteEntry;
- pSrcRect: PRect): HResult; stdcall; external d3dx8dll name 'D3DXSaveSurfaceToFileA';
- {$EXTERNALSYM D3DXSaveSurfaceToFileA}
- function D3DXSaveSurfaceToFileW(
- pDestFile: PWideChar;
- DestFormat: TD3DXImageFileFormat;
- pSrcSurface: IDirect3DSurface8;
- pSrcPalette: PPaletteEntry;
- pSrcRect: PRect): HResult; stdcall; external d3dx8dll name 'D3DXSaveSurfaceToFileW';
- {$EXTERNALSYM D3DXSaveSurfaceToFileW}
- function D3DXSaveSurfaceToFile(
- pDestFile: PChar;
- DestFormat: TD3DXImageFileFormat;
- pSrcSurface: IDirect3DSurface8;
- pSrcPalette: PPaletteEntry;
- pSrcRect: PRect): HResult; stdcall; external d3dx8dll name 'D3DXSaveSurfaceToFileA';
- {$EXTERNALSYM D3DXSaveSurfaceToFile}
- //////////////////////////////////////////////////////////////////////////////
- // Load/Save Volume APIs /////////////////////////////////////////////////////
- //////////////////////////////////////////////////////////////////////////////
- //----------------------------------------------------------------------------
- // D3DXLoadVolumeFromFile/Resource:
- // --------------------------------
- // Load volume from a file or resource
- //
- // Parameters:
- // pDestVolume
- // Destination volume, which will receive the image.
- // pDestPalette
- // Destination palette of 256 colors, or NULL
- // pDestBox
- // Destination box, or NULL for entire volume
- // pSrcFile
- // File name of the source image.
- // pSrcModule
- // Module where resource is located, or NULL for module associated
- // with image the os used to create the current process.
- // pSrcResource
- // Resource name
- // pSrcData
- // Pointer to file in memory.
- // SrcDataSize
- // Size in bytes of file in memory.
- // pSrcBox
- // Source box, or NULL for entire image
- // Filter
- // D3DX_FILTER flags controlling how the image is filtered.
- // Or D3DX_DEFAULT for D3DX_FILTER_TRIANGLE.
- // ColorKey
- // Color to replace with transparent black, or 0 to disable colorkey.
- // This is always a 32-bit ARGB color, independent of the source image
- // format. Alpha is significant, and should usually be set to FF for
- // opaque colorkeys. (ex. Opaque black == 0xff000000)
- // pSrcInfo
- // Pointer to a D3DXIMAGE_INFO structure to be filled in with the
- // description of the data in the source image file, or NULL.
- //
- //----------------------------------------------------------------------------
- function D3DXLoadVolumeFromFileA(
- pDestVolume: IDirect3DVolume8;
- pDestPalette: PPaletteEntry;
- pDestBox: TD3DBox;
- pSrcFile: PAnsiChar;
- pSrcBox: TD3DBox;
- Filter: DWord;
- ColorKey: TD3DColor;
- pSrcInfo: PD3DXImageInfo): HResult; stdcall; external d3dx8dll name 'D3DXLoadVolumeFromFileA';
- {$EXTERNALSYM D3DXLoadVolumeFromFileA}
- function D3DXLoadVolumeFromFileW(
- pDestVolume: IDirect3DVolume8;
- pDestPalette: PPaletteEntry;
- pDestBox: TD3DBox;
- pSrcFile: PWideChar;
- pSrcBox: TD3DBox;
- Filter: DWord;
- ColorKey: TD3DColor;
- pSrcInfo: PD3DXImageInfo): HResult; stdcall; external d3dx8dll name 'D3DXLoadVolumeFromFileW';
- {$EXTERNALSYM D3DXLoadVolumeFromFileW}
- function D3DXLoadVolumeFromFile(
- pDestVolume: IDirect3DVolume8;
- pDestPalette: PPaletteEntry;
- pDestBox: TD3DBox;
- pSrcFile: PChar;
- pSrcBox: TD3DBox;
- Filter: DWord;
- ColorKey: TD3DColor;
- pSrcInfo: PD3DXImageInfo): HResult; stdcall; external d3dx8dll name 'D3DXLoadVolumeFromFileA';
- {$EXTERNALSYM D3DXLoadVolumeFromFile}
- function D3DXLoadVolumeFromResourceA(
- pDestVolume: IDirect3DVolume8;
- pDestPalette: PPaletteEntry;
- pDestBox: TD3DBox;
- hSrcModule: HModule;
- pSrcResource: PAnsiChar;
- pSrcBox: TD3DBox;
- Filter: DWord;
- ColorKey: TD3DColor;
- pSrcInfo: PD3DXImageInfo): HResult; stdcall; external d3dx8dll name 'D3DXLoadVolumeFromResourceA';
- {$EXTERNALSYM D3DXLoadVolumeFromResourceA}
- function D3DXLoadVolumeFromResourceW(
- pDestVolume: IDirect3DVolume8;
- pDestPalette: PPaletteEntry;
- pDestBox: TD3DBox;
- hSrcModule: HModule;
- pSrcResource: PWideChar;
- pSrcBox: TD3DBox;
- Filter: DWord;
- ColorKey: TD3DColor;
- pSrcInfo: PD3DXImageInfo): HResult; stdcall; external d3dx8dll name 'D3DXLoadVolumeFromResourceW';
- {$EXTERNALSYM D3DXLoadVolumeFromResourceW}
- function D3DXLoadVolumeFromResource(
- pDestVolume: IDirect3DVolume8;
- pDestPalette: PPaletteEntry;
- pDestBox: TD3DBox;
- hSrcModule: HModule;
- pSrcResource: PChar;
- pSrcBox: TD3DBox;
- Filter: DWord;
- ColorKey: TD3DColor;
- pSrcInfo: PD3DXImageInfo): HResult; stdcall; external d3dx8dll name 'D3DXLoadVolumeFromResourceA';
- {$EXTERNALSYM D3DXLoadVolumeFromResource}
- function D3DXLoadVolumeFromFileInMemory(
- pDestVolume: IDirect3DVolume8;
- pDestPalette: PPaletteEntry;
- pDestBox: TD3DBox;
- const pSrcData;
- SrcDataSize: LongWord;
- pSrcBox: TD3DBox;
- Filter: DWord;
- ColorKey: TD3DColor;
- pSrcInfo: PD3DXImageInfo): HResult; stdcall; external d3dx8dll;
- {$EXTERNALSYM D3DXLoadVolumeFromFileInMemory}
- //----------------------------------------------------------------------------
- // D3DXLoadVolumeFromVolume:
- // ---------------------------
- // Load volume from another volume (with color conversion)
- //
- // Parameters:
- // pDestVolume
- // Destination volume, which will receive the image.
- // pDestPalette
- // Destination palette of 256 colors, or NULL
- // pDestBox
- // Destination box, or NULL for entire volume
- // pSrcVolume
- // Source volume
- // pSrcPalette
- // Source palette of 256 colors, or NULL
- // pSrcBox
- // Source box, or NULL for entire volume
- // Filter
- // D3DX_FILTER flags controlling how the image is filtered.
- // Or D3DX_DEFAULT for D3DX_FILTER_TRIANGLE.
- // ColorKey
- // Color to replace with transparent black, or 0 to disable colorkey.
- // This is always a 32-bit ARGB color, independent of the source image
- // format. Alpha is significant, and should usually be set to FF for
- // opaque colorkeys. (ex. Opaque black == 0xff000000)
- //
- //----------------------------------------------------------------------------
- function D3DXLoadVolumeFromVolume(
- pDestVolume: IDirect3DVolume8;
- pDestPalette: PPaletteEntry;
- pDestBox: TD3DBox;
- pSrcVolume: IDirect3DVolume8;
- pSrcPalette: PPaletteEntry;
- pSrcBox: TD3DBox;
- Filter: DWord;
- ColorKey: TD3DColor): HResult; stdcall; external d3dx8dll;
- {$EXTERNALSYM D3DXLoadVolumeFromVolume}
- //----------------------------------------------------------------------------
- // D3DXLoadVolumeFromMemory:
- // ---------------------------
- // Load volume from memory.
- //
- // Parameters:
- // pDestVolume
- // Destination volume, which will receive the image.
- // pDestPalette
- // Destination palette of 256 colors, or NULL
- // pDestBox
- // Destination box, or NULL for entire volume
- // pSrcMemory
- // Pointer to the top-left corner of the source volume in memory
- // SrcFormat
- // Pixel format of the source volume.
- // SrcRowPitch
- // Pitch of source image, in bytes. For DXT formats, this number
- // should represent the size of one row of cells, in bytes.
- // SrcSlicePitch
- // Pitch of source image, in bytes. For DXT formats, this number
- // should represent the size of one slice of cells, in bytes.
- // pSrcPalette
- // Source palette of 256 colors, or NULL
- // pSrcBox
- // Source box.
- // Filter
- // D3DX_FILTER flags controlling how the image is filtered.
- // Or D3DX_DEFAULT for D3DX_FILTER_TRIANGLE.
- // ColorKey
- // Color to replace with transparent black, or 0 to disable colorkey.
- // This is always a 32-bit ARGB color, independent of the source image
- // format. Alpha is significant, and should usually be set to FF for
- // opaque colorkeys. (ex. Opaque black == 0xff000000)
- //
- //----------------------------------------------------------------------------
- function D3DXLoadVolumeFromMemory(
- pDestVolume: IDirect3DVolume8;
- pDestPalette: PPaletteEntry;
- pDestBox: TD3DBox;
- const pSrcMemory;
- SrcFormat: TD3DFormat;
- SrcRowPitch: LongWord;
- SrcSlicePitch: LongWord;
- pSrcPalette: PPaletteEntry;
- pSrcBox: TD3DBox;
- Filter: DWord;
- ColorKey: TD3DColor): HResult; stdcall; external d3dx8dll;
- {$EXTERNALSYM D3DXLoadVolumeFromMemory}
- //----------------------------------------------------------------------------
- // D3DXSaveVolumeToFile:
- // ---------------------
- // Save a volume to a image file.
- //
- // Parameters:
- // pDestFile
- // File name of the destination file
- // DestFormat
- // D3DXIMAGE_FILEFORMAT specifying file format to use when saving.
- // pSrcVolume
- // Source volume, containing the image to be saved
- // pSrcPalette
- // Source palette of 256 colors, or NULL
- // pSrcBox
- // Source box, or NULL for the entire volume
- //
- //----------------------------------------------------------------------------
- function D3DXSaveVolumeToFileA(
- pDestFile: PAnsiChar;
- DestFormat: TD3DXImageFileFormat;
- pSrcVolume: IDirect3DVolume8;
- pSrcPalette: PPaletteEntry;
- pSrcBox: TD3DBox): HResult; stdcall; external d3dx8dll name 'D3DXSaveVolumeToFileA';
- {$EXTERNALSYM D3DXSaveVolumeToFileA}
- function D3DXSaveVolumeToFileW(
- pDestFile: PWideChar;
- DestFormat: TD3DXImageFileFormat;
- pSrcVolume: IDirect3DVolume8;
- pSrcPalette: PPaletteEntry;
- pSrcBox: TD3DBox): HResult; stdcall; external d3dx8dll name 'D3DXSaveVolumeToFileW';
- {$EXTERNALSYM D3DXSaveVolumeToFileW}
- function D3DXSaveVolumeToFile(
- pDestFile: PChar;
- DestFormat: TD3DXImageFileFormat;
- pSrcVolume: IDirect3DVolume8;
- pSrcPalette: PPaletteEntry;
- pSrcBox: TD3DBox): HResult; stdcall; external d3dx8dll name 'D3DXSaveVolumeToFileA';
- {$EXTERNALSYM D3DXSaveVolumeToFile}
- //////////////////////////////////////////////////////////////////////////////
- // Create/Save Texture APIs //////////////////////////////////////////////////
- //////////////////////////////////////////////////////////////////////////////
- //----------------------------------------------------------------------------
- // D3DXCheckTextureRequirements:
- // -----------------------------
- // Checks texture creation parameters. If parameters are invalid, this
- // function returns corrected parameters.
- //
- // Parameters:
- //
- // pDevice
- // The D3D device to be used
- // pWidth, pHeight, pDepth, pSize
- // Desired size in pixels, or NULL. Returns corrected size.
- // pNumMipLevels
- // Number of desired mipmap levels, or NULL. Returns corrected number.
- // Usage
- // Texture usage flags
- // pFormat
- // Desired pixel format, or NULL. Returns corrected format.
- // Pool
- // Memory pool to be used to create texture
- //
- //----------------------------------------------------------------------------
- function D3DXCheckTextureRequirements(
- pDevice: IDirect3DDevice8;
- pWidth: PLongWord;
- pHeight: PLongWord;
- pNumMipLevels: PLongWord;
- Usage: DWord;
- pFormat: PD3DFormat;
- Pool: TD3DPool): HResult; stdcall; external d3dx8dll;
- {$EXTERNALSYM D3DXCheckTextureRequirements}
- function D3DXCheckCubeTextureRequirements(
- pDevice: IDirect3DDevice8;
- pSize: PLongWord;
- pNumMipLevels: PLongWord;
- Usage: DWord;
- pFormat: PD3DFormat;
- Pool: TD3DPool): HResult; stdcall; external d3dx8dll;
- {$EXTERNALSYM D3DXCheckCubeTextureRequirements}
- function D3DXCheckVolumeTextureRequirements(
- pDevice: IDirect3DDevice8;
- pWidth: PLongWord;
- pHeight: PLongWord;
- pDepth: PLongWord;
- pNumMipLevels: PLongWord;
- Usage: DWord;
- pFormat: PD3DFormat;
- Pool: TD3DPool): HResult; stdcall; external d3dx8dll;
- {$EXTERNALSYM D3DXCheckVolumeTextureRequirements}
- //----------------------------------------------------------------------------
- // D3DXCreateTexture:
- // ------------------
- // Create an empty texture
- //
- // Parameters:
- //
- // pDevice
- // The D3D device with which the texture is going to be used.
- // Width, Height, Depth, Size
- // size in pixels; these must be non-zero
- // MipLevels
- // number of mip levels desired; if zero or D3DX_DEFAULT, a complete
- // mipmap chain will be created.
- // Usage
- // Texture usage flags
- // Format
- // Pixel format.
- // Pool
- // Memory pool to be used to create texture
- // ppTexture, ppCubeTexture, ppVolumeTexture
- // The texture object that will be created
- //
- //----------------------------------------------------------------------------
- function D3DXCreateTexture(
- Device: IDirect3DDevice8;
- Width: LongWord;
- Height: LongWord;
- MipLevels: LongWord;
- Usage: DWord;
- Format: TD3DFormat;
- Pool: TD3DPool;
- out ppTexture: IDirect3DTexture8): HResult; stdcall; external d3dx8dll;
- {$EXTERNALSYM D3DXCreateTexture}
- function D3DXCreateCubeTexture(
- Device: IDirect3DDevice8;
- Size: LongWord;
- MipLevels: LongWord;
- Usage: DWord;
- Format: TD3DFormat;
- Pool: TD3DPool;
- out ppCubeTexture: IDirect3DCubeTexture8): HResult; stdcall; external d3dx8dll;
- {$EXTERNALSYM D3DXCreateCubeTexture}
- function D3DXCreateVolumeTexture(
- Device: IDirect3DDevice8;
- Width: LongWord;
- Height: LongWord;
- Depth: LongWord;
- MipLevels: LongWord;
- Usage: DWord;
- Format: TD3DFormat;
- Pool: TD3DPool;
- out ppVolumeTexture: IDirect3DVolumeTexture8): HResult; stdcall; external d3dx8dll;
- {$EXTERNALSYM D3DXCreateVolumeTexture}
- //----------------------------------------------------------------------------
- // D3DXCreateTextureFromFile/Resource:
- // -----------------------------------
- // Create a texture object from a file or resource.
- //
- // Parameters:
- //
- // pDevice
- // The D3D device with which the texture is going to be used.
- // pSrcFile
- // File name.
- // hSrcModule
- // Module handle. if NULL, current module will be used.
- // pSrcResource
- // Resource name in module
- // pvSrcData
- // Pointer to file in memory.
- // SrcDataSize
- // Size in bytes of file in memory.
- // Width, Height, Depth, Size
- // Size in pixels; if zero or D3DX_DEFAULT, the size will be taken
- // from the file.
- // MipLevels
- // Number of mip levels; if zero or D3DX_DEFAULT, a complete mipmap
- // chain will be created.
- // Usage
- // Texture usage flags
- // Format
- // Desired pixel format. If D3DFMT_UNKNOWN, the format will be
- // taken from the file.
- // Pool
- // Memory pool to be used to create texture
- // Filter
- // D3DX_FILTER flags controlling how the image is filtered.
- // Or D3DX_DEFAULT for D3DX_FILTER_TRIANGLE.
- // MipFilter
- // D3DX_FILTER flags controlling how each miplevel is filtered.
- // Or D3DX_DEFAULT for D3DX_FILTER_BOX,
- // ColorKey
- // Color to replace with transparent black, or 0 to disable colorkey.
- // This is always a 32-bit ARGB color, independent of the source image
- // format. Alpha is significant, and should usually be set to FF for
- // opaque colorkeys. (ex. Opaque black == 0xff000000)
- // pSrcInfo
- // Pointer to a D3DXIMAGE_INFO structure to be filled in with the
- // description of the data in the source image file, or NULL.
- // pPalette
- // 256 color palette to be filled in, or NULL
- // ppTexture, ppCubeTexture, ppVolumeTexture
- // The texture object that will be created
- //
- //----------------------------------------------------------------------------
- // FromFile
- function D3DXCreateTextureFromFileA(
- Device: IDirect3DDevice8;
- pSrcFile: PAnsiChar;
- out ppTexture: IDirect3DTexture8): HResult; stdcall; external d3dx8dll name 'D3DXCreateTextureFromFileA';
- {$EXTERNALSYM D3DXCreateTextureFromFileA}
- function D3DXCreateTextureFromFileW(
- Device: IDirect3DDevice8;
- pSrcFile: PWideChar;
- out ppTexture: IDirect3DTexture8): HResult; stdcall; external d3dx8dll name 'D3DXCreateTextureFromFileW';
- {$EXTERNALSYM D3DXCreateTextureFromFileW}
- function D3DXCreateTextureFromFile(
- Device: IDirect3DDevice8;
- pSrcFile: PChar;
- out ppTexture: IDirect3DTexture8): HResult; stdcall; external d3dx8dll name 'D3DXCreateTextureFromFileA';
- {$EXTERNALSYM D3DXCreateTextureFromFile}
- function D3DXCreateCubeTextureFromFileA(
- Device: IDirect3DDevice8;
- pSrcFile: PAnsiChar;
- out ppCubeTexture: IDirect3DCubeTexture8): HResult; stdcall; external d3dx8dll name 'D3DXCreateCubeTextureFromFileA';
- {$EXTERNALSYM D3DXCreateCubeTextureFromFileA}
- function D3DXCreateCubeTextureFromFileW(
- Device: IDirect3DDevice8;
- pSrcFile: PWideChar;
- out ppCubeTexture: IDirect3DCubeTexture8): HResult; stdcall; external d3dx8dll name 'D3DXCreateCubeTextureFromFileW';
- {$EXTERNALSYM D3DXCreateCubeTextureFromFileW}
- function D3DXCreateCubeTextureFromFile(
- Device: IDirect3DDevice8;
- pSrcFile: PChar;
- out ppCubeTexture: IDirect3DCubeTexture8): HResult; stdcall; external d3dx8dll name 'D3DXCreateCubeTextureFromFileA';
- {$EXTERNALSYM D3DXCreateCubeTextureFromFile}
- function D3DXCreateVolumeTextureFromFileA(
- Device: IDirect3DDevice8;
- pSrcFile: PAnsiChar;
- out ppVolumeTexture: IDirect3DVolumeTexture8): HResult; stdcall; external d3dx8dll name 'D3DXCreateVolumeTextureFromFileA';
- {$EXTERNALSYM D3DXCreateVolumeTextureFromFileA}
- function D3DXCreateVolumeTextureFromFileW(
- Device: IDirect3DDevice8;
- pSrcFile: PWideChar;
- out ppVolumeTexture: IDirect3DVolumeTexture8): HResult; stdcall; external d3dx8dll name 'D3DXCreateVolumeTextureFromFileW';
- {$EXTERNALSYM D3DXCreateVolumeTextureFromFileW}
- function D3DXCreateVolumeTextureFromFile(
- Device: IDirect3DDevice8;
- pSrcFile: PChar;
- out ppVolumeTexture: IDirect3DVolumeTexture8): HResult; stdcall; external d3dx8dll name 'D3DXCreateVolumeTextureFromFileA';
- {$EXTERNALSYM D3DXCreateVolumeTextureFromFile}
- // FromResource
- function D3DXCreateTextureFromResourceA(
- Device: IDirect3DDevice8;
- hSrcModule: HModule;
- pSrcResource: PAnsiChar;
- out ppTexture: IDirect3DTexture8): HResult; stdcall; external d3dx8dll name 'D3DXCreateTextureFromResourceA';
- {$EXTERNALSYM D3DXCreateTextureFromResourceA}
- function D3DXCreateTextureFromResourceW(
- Device: IDirect3DDevice8;
- hSrcModule: HModule;
- pSrcResource: PWideChar;
- out ppTexture: IDirect3DTexture8): HResult; stdcall; external d3dx8dll name 'D3DXCreateTextureFromResourceW';
- {$EXTERNALSYM D3DXCreateTextureFromResourceW}
- function D3DXCreateTextureFromResource(
- Device: IDirect3DDevice8;
- hSrcModule: HModule;
- pSrcResource: PChar;
- out ppTexture: IDirect3DTexture8): HResult; stdcall; external d3dx8dll name 'D3DXCreateTextureFromResourceA';
- {$EXTERNALSYM D3DXCreateTextureFromResource}
- function D3DXCreateCubeTextureFromResourceA(
- Device: IDirect3DDevice8;
- hSrcModule: HModule;
- pSrcResource: PAnsiChar;
- out ppCubeTexture: IDirect3DCubeTexture8): HResult; stdcall; external d3dx8dll name 'D3DXCreateCubeTextureFromResourceA';
- {$EXTERNALSYM D3DXCreateCubeTextureFromResourceA}
- function D3DXCreateCubeTextureFromResourceW(
- Device: IDirect3DDevice8;
- hSrcModule: HModule;
- pSrcResource: PWideChar;
- out ppCubeTexture: IDirect3DCubeTexture8): HResult; stdcall; external d3dx8dll name 'D3DXCreateCubeTextureFromResourceW';
- {$EXTERNALSYM D3DXCreateCubeTextureFromResourceW}
- function D3DXCreateCubeTextureFromResource(
- Device: IDirect3DDevice8;
- hSrcModule: HModule;
- pSrcResource: PChar;
- out ppCubeTexture: IDirect3DCubeTexture8): HResult; stdcall; external d3dx8dll name 'D3DXCreateCubeTextureFromResourceA';
- {$EXTERNALSYM D3DXCreateCubeTextureFromResource}
- function D3DXCreateVolumeTextureFromResourceA(
- Device: IDirect3DDevice8;
- hSrcModule: HModule;
- pSrcResource: PAnsiChar;
- out ppVolumeTexture: IDirect3DVolumeTexture8): HResult; stdcall; external d3dx8dll name 'D3DXCreateVolumeTextureFromResourceA';
- {$EXTERNALSYM D3DXCreateVolumeTextureFromResourceA}
- function D3DXCreateVolumeTextureFromResourceW(
- Device: IDirect3DDevice8;
- hSrcModule: HModule;
- pSrcResource: PWideChar;
- out ppVolumeTexture: IDirect3DVolumeTexture8): HResult; stdcall; external d3dx8dll name 'D3DXCreateVolumeTextureFromResourceW';
- {$EXTERNALSYM D3DXCreateVolumeTextureFromResourceW}
- function D3DXCreateVolumeTextureFromResource(
- Device: IDirect3DDevice8;
- hSrcModule: HModule;
- pSrcResource: PChar;
- out ppVolumeTexture: IDirect3DVolumeTexture8): HResult; stdcall; external d3dx8dll name 'D3DXCreateVolumeTextureFromResourceA';
- {$EXTERNALSYM D3DXCreateVolumeTextureFromResource}
- // FromFileEx
- function D3DXCreateTextureFromFileExA(
- Device: IDirect3DDevice8;
- pSrcFile: PAnsiChar;
- Width: LongWord;
- Height: LongWord;
- MipLevels: LongWord;
- Usage: DWord;
- Format: TD3DFormat;
- Pool: TD3DPool;
- Filter: DWord;
- MipFilter: DWord;
- ColorKey: TD3DColor;
- pSrcInfo: PD3DXImageInfo;
- pPalette: PPaletteEntry;
- out ppTexture: IDirect3DTexture8): HResult; stdcall; external d3dx8dll name 'D3DXCreateTextureFromFileExA';
- {$EXTERNALSYM D3DXCreateTextureFromFileExA}
- function D3DXCreateTextureFromFileExW(
- Device: IDirect3DDevice8;
- pSrcFile: PWideChar;
- Width: LongWord;
- Height: LongWord;
- MipLevels: LongWord;
- Usage: DWord;
- Format: TD3DFormat;
- Pool: TD3DPool;
- Filter: DWord;
- MipFilter: DWord;
- ColorKey: TD3DColor;
- pSrcInfo: PD3DXImageInfo;
- pPalette: PPaletteEntry;
- out ppTexture: IDirect3DTexture8): HResult; stdcall; external d3dx8dll name 'D3DXCreateTextureFromFileExW';
- {$EXTERNALSYM D3DXCreateTextureFromFileExW}
- function D3DXCreateTextureFromFileEx(
- Device: IDirect3DDevice8;
- pSrcFile: PChar;
- Width: LongWord;
- Height: LongWord;
- MipLevels: LongWord;
- Usage: DWord;
- Format: TD3DFormat;
- Pool: TD3DPool;
- Filter: DWord;
- MipFilter: DWord;
- ColorKey: TD3DColor;
- pSrcInfo: PD3DXImageInfo;
- pPalette: PPaletteEntry;
- out ppTexture: IDirect3DTexture8): HResult; stdcall; external d3dx8dll name 'D3DXCreateTextureFromFileExA';
- {$EXTERNALSYM D3DXCreateTextureFromFileEx}
- function D3DXCreateCubeTextureFromFileExA(
- Device: IDirect3DDevice8;
- pSrcFile: PAnsiChar;
- Size: LongWord;
- MipLevels: LongWord;
- Usage: DWord;
- Format: TD3DFormat;
- Pool: TD3DPool;
- Filter: DWord;
- MipFilter: DWord;
- ColorKey: TD3DColor;
- pSrcInfo: PD3DXImageInfo;
- pPalette: PPaletteEntry;
- out ppCubeTexture: IDirect3DCubeTexture8): HResult; stdcall; external d3dx8dll name 'D3DXCreateCubeTextureFromFileExA';
- {$EXTERNALSYM D3DXCreateCubeTextureFromFileExA}
- function D3DXCreateCubeTextureFromFileExW(
- Device: IDirect3DDevice8;
- pSrcFile: PWideChar;
- Size: LongWord;
- MipLevels: LongWord;
- Usage: DWord;
- Format: TD3DFormat;
- Pool: TD3DPool;
- Filter: DWord;
- MipFilter: DWord;
- ColorKey: TD3DColor;
- pSrcInfo: PD3DXImageInfo;
- pPalette: PPaletteEntry;
- out ppCubeTexture: IDirect3DCubeTexture8): HResult; stdcall; external d3dx8dll name 'D3DXCreateCubeTextureFromFileExW';
- {$EXTERNALSYM D3DXCreateCubeTextureFromFileExW}
- function D3DXCreateCubeTextureFromFileEx(
- Device: IDirect3DDevice8;
- pSrcFile: PChar;
- Size: LongWord;
- MipLevels: LongWord;
- Usage: DWord;
- Format: TD3DFormat;
- Pool: TD3DPool;
- Filter: DWord;
- MipFilter: DWord;
- ColorKey: TD3DColor;
- pSrcInfo: PD3DXImageInfo;
- pPalette: PPaletteEntry;
- out ppCubeTexture: IDirect3DCubeTexture8): HResult; stdcall; external d3dx8dll name 'D3DXCreateCubeTextureFromFileExA';
- {$EXTERNALSYM D3DXCreateCubeTextureFromFileEx}
- function D3DXCreateVolumeTextureFromFileExA(
- Device: IDirect3DDevice8;
- pSrcFile: PAnsiChar;
- Width: LongWord;
- Height: LongWord;
- Depth: LongWord;
- MipLevels: LongWord;
- Usage: DWord;
- Format: TD3DFormat;
- Pool: TD3DPool;
- Filter: DWord;
- MipFilter: DWord;
- ColorKey: TD3DColor;
- pSrcInfo: PD3DXImageInfo;
- pPalette: PPaletteEntry;
- out ppVolumeTexture: IDirect3DVolumeTexture8): HResult; stdcall; external d3dx8dll name 'D3DXCreateVolumeTextureFromFileExA';
- {$EXTERNALSYM D3DXCreateVolumeTextureFromFileExA}
- function D3DXCreateVolumeTextureFromFileExW(
- Device: IDirect3DDevice8;
- pSrcFile: PWideChar;
- Width: LongWord;
- Height: LongWord;
- Depth: LongWord;
- MipLevels: LongWord;
- Usage: DWord;
- Format: TD3DFormat;
- Pool: TD3DPool;
- Filter: DWord;
- MipFilter: DWord;
- ColorKey: TD3DColor;
- pSrcInfo: PD3DXImageInfo;
- pPalette: PPaletteEntry;
- out ppVolumeTexture: IDirect3DVolumeTexture8): HResult; stdcall; external d3dx8dll name 'D3DXCreateVolumeTextureFromFileExW';
- {$EXTERNALSYM D3DXCreateVolumeTextureFromFileExW}
- function D3DXCreateVolumeTextureFromFileEx(
- Device: IDirect3DDevice8;
- pSrcFile: PChar;
- Width: LongWord;
- Height: LongWord;
- Depth: LongWord;
- MipLevels: LongWord;
- Usage: DWord;
- Format: TD3DFormat;
- Pool: TD3DPool;
- Filter: DWord;
- MipFilter: DWord;
- ColorKey: TD3DColor;
- pSrcInfo: PD3DXImageInfo;
- pPalette: PPaletteEntry;
- out ppVolumeTexture: IDirect3DVolumeTexture8): HResult; stdcall; external d3dx8dll name 'D3DXCreateVolumeTextureFromFileExA';
- {$EXTERNALSYM D3DXCreateVolumeTextureFromFileEx}
- // FromResourceEx
- function D3DXCreateTextureFromResourceExA(
- Device: IDirect3DDevice8;
- hSrcModule: HModule;
- pSrcResource: PAnsiChar;
- Width: LongWord;
- Height: LongWord;
- MipLevels: LongWord;
- Usage: DWord;
- Format: TD3DFormat;
- Pool: TD3DPool;
- Filter: DWord;
- MipFilter: DWord;
- ColorKey: TD3DColor;
- pSrcInfo: PD3DXImageInfo;
- pPalette: PPaletteEntry;
- out ppTexture: IDirect3DTexture8): HResult; stdcall; external d3dx8dll name 'D3DXCreateTextureFromResourceExA';
- {$EXTERNALSYM D3DXCreateTextureFromResourceExA}
- function D3DXCreateTextureFromResourceExW(
- Device: IDirect3DDevice8;
- hSrcModule: HModule;
- pSrcResource: PWideChar;
- Width: LongWord;
- Height: LongWord;
- MipLevels: LongWord;
- Usage: DWord;
- Format: TD3DFormat;
- Pool: TD3DPool;
- Filter: DWord;
- MipFilter: DWord;
- ColorKey: TD3DColor;
- pSrcInfo: PD3DXImageInfo;
- pPalette: PPaletteEntry;
- out ppTexture: IDirect3DTexture8): HResult; stdcall; external d3dx8dll name 'D3DXCreateTextureFromResourceExW';
- {$EXTERNALSYM D3DXCreateTextureFromResourceExW}
- function D3DXCreateTextureFromResourceEx(
- Device: IDirect3DDevice8;
- hSrcModule: HModule;
- pSrcResource: PChar;
- Width: LongWord;
- Height: LongWord;
- MipLevels: LongWord;
- Usage: DWord;
- Format: TD3DFormat;
- Pool: TD3DPool;
- Filter: DWord;
- MipFilter: DWord;
- ColorKey: TD3DColor;
- pSrcInfo: PD3DXImageInfo;
- pPalette: PPaletteEntry;
- out ppTexture: IDirect3DTexture8): HResult; stdcall; external d3dx8dll name 'D3DXCreateTextureFromResourceExA';
- {$EXTERNALSYM D3DXCreateTextureFromResourceEx}
- function D3DXCreateCubeTextureFromResourceExA(
- Device: IDirect3DDevice8;
- hSrcModule: HModule;
- pSrcResource: PAnsiChar;
- Size: LongWord;
- MipLevels: LongWord;
- Usage: DWord;
- Format: TD3DFormat;
- Pool: TD3DPool;
- Filter: DWord;
- MipFilter: DWord;
- ColorKey: TD3DColor;
- pSrcInfo: PD3DXImageInfo;
- pPalette: PPaletteEntry;
- out ppCubeTexture: IDirect3DCubeTexture8): HResult; stdcall; external d3dx8dll name 'D3DXCreateCubeTextureFromResourceExA';
- {$EXTERNALSYM D3DXCreateCubeTextureFromResourceExA}
- function D3DXCreateCubeTextureFromResourceExW(
- Device: IDirect3DDevice8;
- hSrcModule: HModule;
- pSrcResource: PWideChar;
- Size: LongWord;
- MipLevels: LongWord;
- Usage: DWord;
- Format: TD3DFormat;
- Pool: TD3DPool;
- Filter: DWord;
- MipFilter: DWord;
- ColorKey: TD3DColor;
- pSrcInfo: PD3DXImageInfo;
- pPalette: PPaletteEntry;
- out ppCubeTexture: IDirect3DCubeTexture8): HResult; stdcall; external d3dx8dll name 'D3DXCreateCubeTextureFromResourceExW';
- {$EXTERNALSYM D3DXCreateCubeTextureFromResourceExW}
- function D3DXCreateCubeTextureFromResourceEx(
- Device: IDirect3DDevice8;
- hSrcModule: HModule;
- pSrcResource: PChar;
- Size: LongWord;
- MipLevels: LongWord;
- Usage: DWord;
- Format: TD3DFormat;
- Pool: TD3DPool;
- Filter: DWord;
- MipFilter: DWord;
- ColorKey: TD3DColor;
- pSrcInfo: PD3DXImageInfo;
- pPalette: PPaletteEntry;
- out ppCubeTexture: IDirect3DCubeTexture8): HResult; stdcall; external d3dx8dll name 'D3DXCreateCubeTextureFromResourceExA';
- {$EXTERNALSYM D3DXCreateCubeTextureFromResourceEx}
- function D3DXCreateVolumeTextureFromResourceExA(
- Device: IDirect3DDevice8;
- hSrcModule: HModule;
- pSrcResource: PAnsiChar;
- Width: LongWord;
- Height: LongWord;
- Depth: LongWord;
- MipLevels: LongWord;
- Usage: DWord;
- Format: TD3DFormat;
- Pool: TD3DPool;
- Filter: DWord;
- MipFilter: DWord;
- ColorKey: TD3DColor;
- pSrcInfo: PD3DXImageInfo;
- pPalette: PPaletteEntry;
- out ppVolumeTexture: IDirect3DVolumeTexture8): HResult; stdcall; external d3dx8dll name 'D3DXCreateVolumeTextureFromResourceExA';
- {$EXTERNALSYM D3DXCreateVolumeTextureFromResourceExA}
- function D3DXCreateVolumeTextureFromResourceExW(
- Device: IDirect3DDevice8;
- hSrcModule: HModule;
- pSrcResource: PWideChar;
- Width: LongWord;
- Height: LongWord;
- Depth: LongWord;
- MipLevels: LongWord;
- Usage: DWord;
- Format: TD3DFormat;
- Pool: TD3DPool;
- Filter: DWord;
- MipFilter: DWord;
- ColorKey: TD3DColor;
- pSrcInfo: PD3DXImageInfo;
- pPalette: PPaletteEntry;
- out ppVolumeTexture: IDirect3DVolumeTexture8): HResult; stdcall; external d3dx8dll name 'D3DXCreateVolumeTextureFromResourceExW';
- {$EXTERNALSYM D3DXCreateVolumeTextureFromResourceExW}
- function D3DXCreateVolumeTextureFromResourceEx(
- Device: IDirect3DDevice8;
- hSrcModule: HModule;
- pSrcResource: PChar;
- Width: LongWord;
- Height: LongWord;
- Depth: LongWord;
- MipLevels: LongWord;
- Usage: DWord;
- Format: TD3DFormat;
- Pool: TD3DPool;
- Filter: DWord;
- MipFilter: DWord;
- ColorKey: TD3DColor;
- pSrcInfo: PD3DXImageInfo;
- pPalette: PPaletteEntry;
- out ppVolumeTexture: IDirect3DVolumeTexture8): HResult; stdcall; external d3dx8dll name 'D3DXCreateVolumeTextureFromResourceExA';
- {$EXTERNALSYM D3DXCreateVolumeTextureFromResourceEx}
- // FromFileInMemory
- function D3DXCreateTextureFromFileInMemory(
- Device: IDirect3DDevice8;
- const pSrcData;
- SrcDataSize: LongWord;
- out ppTexture: IDirect3DTexture8): HResult; stdcall; external d3dx8dll;
- {$EXTERNALSYM D3DXCreateTextureFromFileInMemory}
- function D3DXCreateCubeTextureFromFileInMemory(
- Device: IDirect3DDevice8;
- const pSrcData;
- SrcDataSize: LongWord;
- out ppCubeTexture: IDirect3DCubeTexture8): HResult; stdcall; external d3dx8dll;
- {$EXTERNALSYM D3DXCreateCubeTextureFromFileInMemory}
- function D3DXCreateVolumeTextureFromFileInMemory(
- Device: IDirect3DDevice8;
- const pSrcData;
- SrcDataSize: LongWord;
- out ppVolumeTexture: IDirect3DVolumeTexture8): HResult; stdcall; external d3dx8dll;
- {$EXTERNALSYM D3DXCreateVolumeTextureFromFileInMemory}
- // FromFileInMemoryEx
- function D3DXCreateTextureFromFileInMemoryEx(
- Device: IDirect3DDevice8;
- const pSrcData;
- SrcDataSize: LongWord;
- Width: LongWord;
- Height: LongWord;
- MipLevels: LongWord;
- Usage: DWord;
- Format: TD3DFormat;
- Pool: TD3DPool;
- Filter: DWord;
- MipFilter: DWord;
- ColorKey: TD3DColor;
- pSrcInfo: PD3DXImageInfo;
- pPalette: PPaletteEntry;
- out ppTexture: IDirect3DTexture8): HResult; stdcall; external d3dx8dll;
- {$EXTERNALSYM D3DXCreateTextureFromFileInMemoryEx}
- function D3DXCreateCubeTextureFromFileInMemoryEx(
- Device: IDirect3DDevice8;
- const pSrcData;
- SrcDataSize: LongWord;
- Size: LongWord;
- MipLevels: LongWord;
- Usage: DWord;
- Format: TD3DFormat;
- Pool: TD3DPool;
- Filter: DWord;
- MipFilter: DWord;
- ColorKey: TD3DColor;
- pSrcInfo: PD3DXImageInfo;
- pPalette: PPaletteEntry;
- out ppCubeTexture: IDirect3DCubeTexture8): HResult; stdcall; external d3dx8dll;
- {$EXTERNALSYM D3DXCreateCubeTextureFromFileInMemoryEx}
- function D3DXCreateVolumeTextureFromFileInMemoryEx(
- Device: IDirect3DDevice8;
- const pSrcData;
- SrcDataSize: LongWord;
- Width: LongWord;
- Height: LongWord;
- Depth: LongWord;
- MipLevels: LongWord;
- Usage: DWord;
- Format: TD3DFormat;
- Pool: TD3DPool;
- Filter: DWord;
- MipFilter: DWord;
- ColorKey: TD3DColor;
- pSrcInfo: PD3DXImageInfo;
- pPalette: PPaletteEntry;
- out ppVolumeTexture: IDirect3DVolumeTexture8): HResult; stdcall; external d3dx8dll;
- {$EXTERNALSYM D3DXCreateVolumeTextureFromFileInMemoryEx}
- //----------------------------------------------------------------------------
- // D3DXSaveTextureToFile:
- // ----------------------
- // Save a texture to a file.
- //
- // Parameters:
- // pDestFile
- // File name of the destination file
- // DestFormat
- // D3DXIMAGE_FILEFORMAT specifying file format to use when saving.
- // pSrcTexture
- // Source texture, containing the image to be saved
- // pSrcPalette
- // Source palette of 256 colors, or NULL
- //
- //----------------------------------------------------------------------------
- function D3DXSaveTextureToFileA(
- pDestFile: PAnsiChar;
- DestFormat: TD3DXImageFileFormat;
- pSrcTexture: IDirect3DBaseTexture8;
- pSrcPalette: PPaletteEntry): HResult; stdcall; external d3dx8dll name 'D3DXSaveTextureToFileA';
- {$EXTERNALSYM D3DXSaveTextureToFileA}
- function D3DXSaveTextureToFileW(
- pDestFile: PWideChar;
- DestFormat: TD3DXImageFileFormat;
- pSrcTexture: IDirect3DBaseTexture8;
- pSrcPalette: PPaletteEntry): HResult; stdcall; external d3dx8dll name 'D3DXSaveTextureToFileW';
- {$EXTERNALSYM D3DXSaveTextureToFileW}
- function D3DXSaveTextureToFile(
- pDestFile: PChar;
- DestFormat: TD3DXImageFileFormat;
- pSrcTexture: IDirect3DBaseTexture8;
- pSrcPalette: PPaletteEntry): HResult; stdcall; external d3dx8dll name 'D3DXSaveTextureToFileA';
- {$EXTERNALSYM D3DXSaveTextureToFile}
- //////////////////////////////////////////////////////////////////////////////
- // Misc Texture APIs /////////////////////////////////////////////////////////
- //////////////////////////////////////////////////////////////////////////////
- //----------------------------------------------------------------------------
- // D3DXFilterTexture:
- // ------------------
- // Filters mipmaps levels of a texture.
- //
- // Parameters:
- // pBaseTexture
- // The texture object to be filtered
- // pPalette
- // 256 color palette to be used, or NULL for non-palettized formats
- // SrcLevel
- // The level whose image is used to generate the subsequent levels.
- // Filter
- // D3DX_FILTER flags controlling how each miplevel is filtered.
- // Or D3DX_DEFAULT for D3DX_FILTER_BOX,
- //
- //-------------------------------------------------------------------------
- function D3DXFilterTexture(
- pTexture: IDirect3DTexture8;
- pPalette: PPaletteEntry;
- SrcLevel: LongWord;
- Filter: DWord): HResult; stdcall; external d3dx8dll;
- {$EXTERNALSYM D3DXFilterTexture}
- // #define D3DXFilterCubeTexture D3DXFilterTexture
- // In Pascal this mapped to DLL-exported "D3DXFilterTexture" function
- function D3DXFilterCubeTexture(
- pTexture: IDirect3DCubeTexture8;
- pPalette: PPaletteEntry;
- SrcLevel: LongWord;
- Filter: DWord): HResult; stdcall; external d3dx8dll name 'D3DXFilterTexture';
- {$EXTERNALSYM D3DXFilterCubeTexture}
- // #define D3DXFilterVolumeTexture D3DXFilterTexture
- // In Pascal this mapped to DLL-exported "D3DXFilterTexture" function
- function D3DXFilterVolumeTexture(
- pTexture: IDirect3DVolumeTexture8;
- pPalette: PPaletteEntry;
- SrcLevel: LongWord;
- Filter: DWord): HResult; stdcall; external d3dx8dll name 'D3DXFilterTexture';
- {$EXTERNALSYM D3DXFilterVolumeTexture}
- //----------------------------------------------------------------------------
- // D3DXFillTexture:
- // ----------------
- // Uses a user provided function to fill each texel of each mip level of a
- // given texture.
- //
- // Paramters:
- // pTexture, pCubeTexture, pVolumeTexture
- // Pointer to the texture to be filled.
- // pFunction
- // Pointer to user provided evalutor function which will be used to
- // compute the value of each texel.
- // pData
- // Pointer to an arbitrary block of user defined data. This pointer
- // will be passed to the function provided in pFunction
- //-----------------------------------------------------------------------------
- function D3DXFillTexture(
- pTexture: IDirect3DTexture8;
- pFunction: TD3DXFill2D;
- pData: Pointer): HResult; stdcall; external d3dx8dll;
- {$EXTERNALSYM D3DXFillTexture}
- function D3DXFillCubeTexture(
- pCubeTexture: IDirect3DCubeTexture8;
- pFunction: TD3DXFill2D;
- pData: Pointer): HResult; stdcall; external d3dx8dll;
- {$EXTERNALSYM D3DXFillCubeTexture}
- function D3DXFillVolumeTexture(
- pVolumeTexture: IDirect3DVolumeTexture8;
- pFunction: TD3DXFill3D;
- pData: Pointer): HResult; stdcall; external d3dx8dll;
- {$EXTERNALSYM D3DXFillVolumeTexture}
- //----------------------------------------------------------------------------
- // D3DXComputeNormalMap:
- // ---------------------
- // Converts a height map into a normal map. The (x,y,z) components of each
- // normal are mapped to the (r,g,b) channels of the output texture.
- //
- // Parameters
- // pTexture
- // Pointer to the destination texture
- // pSrcTexture
- // Pointer to the source heightmap texture
- // pSrcPalette
- // Source palette of 256 colors, or NULL
- // Flags
- // D3DX_NORMALMAP flags
- // Channel
- // D3DX_CHANNEL specifying source of height information
- // Amplitude
- // The constant value which the height information is multiplied by.
- //---------------------------------------------------------------------------
- function D3DXComputeNormalMap(
- pTexture: IDirect3DTexture8;
- pSrcTexture: IDirect3DTexture8;
- pSrcPalette: PPaletteEntry;
- Flags: DWord;
- Channel: DWord;
- Amplitude: Single): HResult; stdcall; external d3dx8dll;
- {$EXTERNALSYM D3DXComputeNormalMap}
- //********************************************************************
- // Introduced types for compatibility with "REVISED" D3DX8.pas translation
- // by Ampaze (Tim Baumgarten) from www.Delphi-Jedi.org/DelphiGraphics
- type
- PD3DXEffect_Desc = PD3DXEffectDesc;
- PD3DXImage_Info = PD3DXImageInfo;
- PD3DXParameter_Desc = PD3DXParameterDesc;
- PD3DXPass_Desc = PD3DXPassDesc;
- PD3DXRTE_Desc = PD3DXRTEDesc;
- PD3DXRTS_Desc = PD3DXRTSDesc;
- PD3DXTechnique_Desc = PD3DXTechniqueDesc;
- TD3DXEffect_Desc = TD3DXEffectDesc;
- TD3DXImage_Info = TD3DXImageInfo;
- TD3DXParameter_Desc = TD3DXParameterDesc;
- TD3DXPass_Desc = TD3DXPassDesc;
- TD3DXRTE_Desc = TD3DXRTEDesc;
- TD3DXRTS_Desc = TD3DXRTSDesc;
- TD3DXTechnique_Desc = TD3DXTechniqueDesc;
- PD3DXImage_FileFormat = PD3DXImageFileFormat;
- TD3DXImage_FileFormat = TD3DXImageFileFormat;
- (*$HPPEMIT '} /* namespace D3dx8 */' *)
- //***************************************************************************//
- //***************************************************************************//
- //***************************************************************************//
- implementation
- //***************************************************************************//
- //***************************************************************************//
- //***************************************************************************//
- //////////////////////////////////////////////////////////////////////////////
- //
- // Copyright (C) Microsoft Corporation. All Rights Reserved.
- //
- // File: d3dx8math.h
- // Content: D3DX math types and functions
- //
- //////////////////////////////////////////////////////////////////////////////
- //===========================================================================
- //
- // General purpose utilities
- //
- //===========================================================================
- function D3DXToRadian(Degree: Single): Single;
- begin
- Result:= Degree * (D3DX_PI / 180.0);
- end;
- function D3DXToDegree(Radian: Single): Single;
- begin
- Result:= Radian * (180.0 / D3DX_PI);
- end;
- //--------------------------
- // 2D Vector
- //--------------------------
- function D3DXVector2(_x, _y: Single): TD3DXVector2;
- begin
- Result.x:= _x; Result.y:= _y;
- end;
- function D3DXVector2Equal(const v1, v2: TD3DXVector2): Boolean;
- begin
- Result:= (v1.x = v2.x) and (v1.y = v2.y);
- end;
- //--------------------------
- // 3D Vector
- //--------------------------
- function D3DXVector3(_x, _y, _z: Single): TD3DXVector3;
- begin
- Result.x:= _x; Result.y:= _y; Result.z:=_z;
- end;
- function D3DXVector3Equal(const v1, v2: TD3DXVector3): Boolean;
- begin
- Result:= (v1.x = v2.x) and (v1.y = v2.y) and (v1.z = v2.z);
- end;
- //--------------------------
- // 4D Vector
- //--------------------------
- function D3DXVector4(_x, _y, _z, _w: Single): TD3DXVector4;
- begin
- with Result do
- begin
- x:= _x; y:= _y; z:= _z; w:= _w;
- end;
- end;
- function D3DXVector4Equal(const v1, v2: TD3DXVector4): Boolean;
- begin
- Result:= (v1.x = v2.x) and (v1.y = v2.y) and
- (v1.z = v2.z) and (v1.w = v2.w);
- end;
- //--------------------------
- // 4D Matrix
- //--------------------------
- function D3DXMatrix(
- _m00, _m01, _m02, _m03,
- _m10, _m11, _m12, _m13,
- _m20, _m21, _m22, _m23,
- _m30, _m31, _m32, _m33: Single): TD3DXMatrix;
- begin
- with Result do
- begin
- m[0,0]:= _m00; m[0,1]:= _m01; m[0,2]:= _m02; m[0,3]:= _m03;
- m[1,0]:= _m10; m[1,1]:= _m11; m[1,2]:= _m12; m[1,3]:= _m13;
- m[2,0]:= _m20; m[2,1]:= _m21; m[2,2]:= _m22; m[2,3]:= _m23;
- m[3,0]:= _m30; m[3,1]:= _m31; m[3,2]:= _m32; m[3,3]:= _m33;
- end;
- end;
- function D3DXMatrixAdd(out mOut: TD3DXMatrix; const m1, m2: TD3DXMatrix): PD3DXMatrix;
- var
- pOut, p1, p2: PSingle; x: Integer;
- begin
- pOut:= @mOut._11; p1:= @m1._11; p2:= @m2._11;
- for x:= 0 to 15 do
- begin
- pOut^:= p1^+p2^;
- Inc(pOut); Inc(p1); Inc(p2);
- end;
- Result:= @mOut;
- end;
- function D3DXMatrixSubtract(out mOut: TD3DXMatrix; const m1, m2: TD3DXMatrix): PD3DXMatrix;
- var
- pOut, p1, p2: PSingle; x: Integer;
- begin
- pOut:= @mOut._11; p1:= @m1._11; p2:= @m2._11;
- for x:= 0 to 15 do
- begin
- pOut^:= p1^-p2^;
- Inc(pOut); Inc(p1); Inc(p2);
- end;
- Result:= @mOut;
- end;
- function D3DXMatrixMul(out mOut: TD3DXMatrix; const m: TD3DXMatrix; MulBy: Single): PD3DXMatrix;
- var
- pOut, p: PSingle; x: Integer;
- begin
- pOut:= @mOut._11; p:= @m._11;
- for x:= 0 to 15 do
- begin
- pOut^:= p^* MulBy;
- Inc(pOut); Inc(p);
- end;
- Result:= @mOut;
- end;
- function D3DXMatrixEqual(const m1, m2: TD3DXMatrix): Boolean;
- begin
- Result:= CompareMem(@m1, @m2, SizeOf(TD3DXMatrix));
- end;
- //--------------------------
- // Quaternion
- //--------------------------
- function D3DXQuaternion(_x, _y, _z, _w: Single): TD3DXQuaternion;
- begin
- with Result do
- begin
- x:= _x; y:= _y; z:= _z; w:= _w;
- end;
- end;
- function D3DXQuaternionAdd(const q1, q2: TD3DXQuaternion): TD3DXQuaternion;
- begin
- with Result do
- begin
- x:= q1.x+q2.x; y:= q1.y+q2.y; z:= q1.z+q2.z; w:= q1.w+q2.w;
- end;
- end;
- function D3DXQuaternionSubtract(const q1, q2: TD3DXQuaternion): TD3DXQuaternion;
- begin
- with Result do
- begin
- x:= q1.x-q2.x; y:= q1.y-q2.y; z:= q1.z-q2.z; w:= q1.w-q2.w;
- end;
- end;
- function D3DXQuaternionEqual(const q1, q2: TD3DXQuaternion): Boolean;
- begin
- Result:= (q1.x = q2.x) and (q1.y = q2.y) and
- (q1.z = q2.z) and (q1.w = q2.w);
- end;
- function D3DXQuaternionScale(out qOut: TD3DXQuaternion; const q: TD3DXQuaternion;
- s: Single): PD3DXQuaternion;
- begin
- with qOut do
- begin
- x:= q.x*s; y:= q.y*s; z:= q.z*s; w:= q.w*s;
- end;
- Result:= @qOut;
- end;
- //--------------------------
- // Plane
- //--------------------------
- function D3DXPlane(_a, _b, _c, _d: Single): TD3DXPlane;
- begin
- with Result do
- begin
- a:= _a; b:= _b; c:= _c; d:= _d;
- end;
- end;
- function D3DXPlaneEqual(const p1, p2: TD3DXPlane): Boolean;
- begin
- Result:=
- (p1.a = p2.a) and (p1.b = p2.b) and
- (p1.c = p2.c) and (p1.d = p2.d);
- end;
- //--------------------------
- // Color
- //--------------------------
- function D3DXColor(_r, _g, _b, _a: Single): TD3DXColor;
- begin
- with Result do
- begin
- r:= _r; g:= _g; b:= _b; a:= _a;
- end;
- end;
- function D3DXColorToDWord(c: TD3DXColor): DWord;
- function ColorLimit(const x: Single): DWord;
- begin
- if x > 1.0 then Result:= 255
- else if x < 0 then Result:= 0
- else Result:= Trunc(x * 255.0 + 0.5);
- end;
- begin
- Result:= ColorLimit(c.a) shl 24 or ColorLimit(c.r) shl 16
- or ColorLimit(c.g) shl 8 or ColorLimit(c.b);
- end;
- function D3DXColorFromDWord(c: DWord): TD3DXColor;
- const
- f: Single = 1/255;
- begin
- with Result do
- begin
- r:= f * Byte(c shr 16);
- g:= f * Byte(c shr 8);
- b:= f * Byte(c shr 0);
- a:= f * Byte(c shr 24);
- end;
- end;
- function D3DXColorEqual(const c1, c2: TD3DXColor): Boolean;
- begin
- Result:= (c1.r = c2.r) and (c1.g = c2.g) and (c1.b = c2.b) and (c1.a = c2.a);
- end;
- //===========================================================================
- //
- // D3DX math functions:
- //
- // NOTE:
- // * All these functions can take the same object as in and out parameters.
- //
- // * Out parameters are typically also returned as return values, so that
- // the output of one function may be used as a parameter to another.
- //
- //===========================================================================
- //--------------------------
- // 2D Vector
- //--------------------------
- // "inline"
- function D3DXVec2Length(const v: TD3DXVector2): Single;
- begin
- with v do Result:= Sqrt(x*x + y*y);
- end;
- function D3DXVec2LengthSq(const v: TD3DXVector2): Single;
- begin
- with v do Result:= x*x + y*y;
- end;
- function D3DXVec2Dot(const v1, v2: TD3DXVector2): Single;
- begin
- Result:= v1.x*v2.x + v1.y*v2.y;
- end;
- // Z component of ((x1,y1,0) cross (x2,y2,0))
- function D3DXVec2CCW(const v1, v2: TD3DXVector2): Single;
- begin
- Result:= v1.x*v2.y - v1.y*v2.x;
- end;
- function D3DXVec2Add(const v1, v2: TD3DXVector2): TD3DXVector2;
- begin
- Result.x:= v1.x + v2.x;
- Result.y:= v1.y + v2.y;
- end;
- function D3DXVec2Subtract(const v1, v2: TD3DXVector2): TD3DXVector2;
- begin
- Result.x:= v1.x - v2.x;
- Result.y:= v1.y - v2.y;
- end;
- // Minimize each component. x = min(x1, x2), y = min(y1, y2)
- function D3DXVec2Minimize(out vOut: TD3DXVector2; const v1, v2: TD3DXVEctor2): PD3DXVector2;
- begin
- if v1.x < v2.x then vOut.x:= v1.x else vOut.x:= v2.x;
- if v1.y < v2.y then vOut.y:= v1.y else vOut.y:= v2.y;
- Result:= @vOut;
- end;
- // Maximize each component. x = max(x1, x2), y = max(y1, y2)
- function D3DXVec2Maximize(out vOut: TD3DXVector2; const v1, v2: TD3DXVector2): PD3DXVector2;
- begin
- if v1.x > v2.x then vOut.x:= v1.x else vOut.x:= v2.x;
- if v1.y > v2.y then vOut.y:= v1.y else vOut.y:= v2.y;
- Result:= @vOut;
- end;
- function D3DXVec2Scale(out vOut: TD3DXVector2; const v: TD3DXVector2; s: Single): PD3DXVector2;
- begin
- vOut.x:= v.x*s; vOut.y:= v.y*s;
- Result:= @vOut;
- end;
- // Linear interpolation. V1 + s(V2-V1)
- function D3DXVec2Lerp(out vOut: TD3DXVector2; const v1, v2: TD3DXVector2; s: Single): PD3DXVector2;
- begin
- vOut.x:= v1.x + s * (v2.x-v1.x);
- vOut.y:= v1.y + s * (v2.y-v1.y);
- Result:= @vOut;
- end;
- //--------------------------
- // 3D Vector
- //--------------------------
- function D3DXVec3Length(const v: TD3DXVector3): Single;
- begin
- with v do Result:= Sqrt(x*x + y*y + z*z);
- end;
- function D3DXVec3LengthSq(const v: TD3DXVector3): Single;
- begin
- with v do Result:= x*x + y*y + z*z;
- end;
- function D3DXVec3Dot(const v1, v2: TD3DXVector3): Single;
- begin
- Result:= v1.x * v2.x + v1.y * v2.y + v1.z * v2.z;
- end;
- function D3DXVec3Cross(out vOut: TD3DXVector3; const v1, v2: TD3DXVector3): PD3DXVector3;
- begin
- vOut.x:= v1.y * v2.z - v1.z * v2.y;
- vOut.y:= v1.z * v2.x - v1.x * v2.z;
- vOut.z:= v1.x * v2.y - v1.y * v2.x;
- Result:= @vOut;
- end;
- function D3DXVec3Add(out vOut: TD3DXVector3; const v1, v2: TD3DXVector3): PD3DXVector3;
- begin
- with vOut do
- begin
- x:= v1.x + v2.x;
- y:= v1.y + v2.y;
- z:= v1.z + v2.z;
- end;
- Result:= @vOut;
- end;
- function D3DXVec3Subtract(out vOut: TD3DXVector3; const v1, v2: TD3DXVector3): PD3DXVector3;
- begin
- with vOut do
- begin
- x:= v1.x - v2.x;
- y:= v1.y - v2.y;
- z:= v1.z - v2.z;
- end;
- Result:= @vOut;
- end;
- // Minimize each component. x = min(x1, x2), y = min(y1, y2)
- function D3DXVec3Minimize(out vOut: TD3DXVector3; const v1, v2: TD3DXVector3): PD3DXVector3;
- begin
- if v1.x < v2.x then vOut.x:= v1.x else vOut.x:= v2.x;
- if v1.y < v2.y then vOut.y:= v1.y else vOut.y:= v2.y;
- if v1.z < v2.z then vOut.z:= v1.z else vOut.z:= v2.z;
- Result:= @vOut;
- end;
- // Maximize each component. x = max(x1, x2), y = max(y1, y2)
- function D3DXVec3Maximize(out vOut: TD3DXVector3; const v1, v2: TD3DXVector3): PD3DXVector3;
- begin
- if v1.x > v2.x then vOut.x:= v1.x else vOut.x:= v2.x;
- if v1.y > v2.y then vOut.y:= v1.y else vOut.y:= v2.y;
- if v1.z > v2.z then vOut.z:= v1.z else vOut.z:= v2.z;
- Result:= @vOut;
- end;
- function D3DXVec3Scale(out vOut: TD3DXVector3; const v: TD3DXVector3; s: Single): PD3DXVector3;
- begin
- with vOut do
- begin
- x:= v.x * s; y:= v.y * s; z:= v.z * s;
- end;
- Result:= @vOut;
- end;
- // Linear interpolation. V1 + s(V2-V1)
- function D3DXVec3Lerp(out vOut: TD3DXVector3; const v1, v2: TD3DXVector3; s: Single): PD3DXVector3;
- begin
- vOut.x:= v1.x + s * (v2.x-v1.x);
- vOut.y:= v1.y + s * (v2.y-v1.y);
- vOut.z:= v1.z + s * (v2.z-v1.z);
- Result:= @vOut;
- end;
- //--------------------------
- // 4D Vector
- //--------------------------
- function D3DXVec4Length(const v: TD3DXVector4): Single;
- begin
- with v do Result:= Sqrt(x*x + y*y + z*z + w*w);
- end;
- function D3DXVec4LengthSq(const v: TD3DXVector4): Single;
- begin
- with v do Result:= x*x + y*y + z*z + w*w
- end;
- function D3DXVec4Dot(const v1, v2: TD3DXVector4): Single;
- begin
- Result:= v1.x * v2.x + v1.y * v2.y + v1.z * v2.z + v1.w * v2.w;
- end;
- function D3DXVec4Add(out vOut: TD3DXVector4; const v1, v2: TD3DXVector4): PD3DXVector4;
- begin
- with vOut do
- begin
- x:= v1.x + v2.x;
- y:= v1.y + v2.y;
- z:= v1.z + v2.z;
- w:= v1.w + v2.w;
- end;
- Result:= @vOut;
- end;
- function D3DXVec4Subtract(out vOut: TD3DXVector4; const v1, v2: TD3DXVector4): PD3DXVector4;
- begin
- with vOut do
- begin
- x:= v1.x - v2.x;
- y:= v1.y - v2.y;
- z:= v1.z - v2.z;
- w:= v1.w - v2.w;
- end;
- Result:= @vOut;
- end;
- // Minimize each component. x = min(x1, x2), y = min(y1, y2)
- function D3DXVec4Minimize(out vOut: TD3DXVector4; const v1, v2: TD3DXVector4): PD3DXVector4;
- begin
- if v1.x < v2.x then vOut.x:= v1.x else vOut.x:= v2.x;
- if v1.y < v2.y then vOut.y:= v1.y else vOut.y:= v2.y;
- if v1.z < v2.z then vOut.z:= v1.z else vOut.z:= v2.z;
- if v1.w < v2.w then vOut.w:= v1.w else vOut.w:= v2.w;
- Result:= @vOut;
- end;
- // Maximize each component. x = max(x1, x2), y = max(y1, y2)
- function D3DXVec4Maximize(out vOut: TD3DXVector4; const v1, v2: TD3DXVector4): PD3DXVector4;
- begin
- if v1.x > v2.x then vOut.x:= v1.x else vOut.x:= v2.x;
- if v1.y > v2.y then vOut.y:= v1.y else vOut.y:= v2.y;
- if v1.z > v2.z then vOut.z:= v1.z else vOut.z:= v2.z;
- if v1.w > v2.w then vOut.w:= v1.w else vOut.w:= v2.w;
- Result:= @vOut;
- end;
- function D3DXVec4Scale(out vOut: TD3DXVector4; const v: TD3DXVector4; s: Single): PD3DXVector4;
- begin
- with vOut do
- begin
- x:= v.x * s; y:= v.y * s; z:= v.z * s; w:= v.w * s;
- end;
- Result:= @vOut;
- end;
- // Linear interpolation. V1 + s(V2-V1)
- function D3DXVec4Lerp(out vOut: TD3DXVector4;
- const v1, v2: TD3DXVector4; s: Single): PD3DXVector4;
- begin
- with vOut do
- begin
- x:= v1.x + s * (v2.x - v1.x);
- y:= v1.y + s * (v2.y - v1.y);
- z:= v1.z + s * (v2.z - v1.z);
- w:= v1.w + s * (v2.w - v1.w);
- end;
- Result:= @vOut;
- end;
- //--------------------------
- // 4D Matrix
- //--------------------------
- // inline
- function D3DXMatrixIdentity(out mOut: TD3DXMatrix): PD3DXMatrix;
- begin
- FillChar(mOut, SizeOf(mOut), 0);
- mOut._11:= 1; mOut._22:= 1; mOut._33:= 1; mOut._44:= 1;
- Result:= @mOut;
- end;
- function D3DXMatrixIsIdentity(const m: TD3DXMatrix): BOOL;
- begin
- with m do Result:=
- (_11 = 1) and (_12 = 0) and (_13 = 0) and (_14 = 0) and
- (_21 = 0) and (_22 = 1) and (_23 = 0) and (_24 = 0) and
- (_31 = 0) and (_32 = 0) and (_33 = 1) and (_34 = 0) and
- (_41 = 0) and (_42 = 0) and (_43 = 0) and (_44 = 1);
- end;
- //--------------------------
- // Quaternion
- //--------------------------
- // inline
- function D3DXQuaternionLength(const q: TD3DXQuaternion): Single;
- begin
- with q do Result:= Sqrt(x*x + y*y + z*z + w*w);
- end;
- // Length squared, or "norm"
- function D3DXQuaternionLengthSq(const q: TD3DXQuaternion): Single;
- begin
- with q do Result:= x*x + y*y + z*z + w*w;
- end;
- function D3DXQuaternionDot(const q1, q2: TD3DXQuaternion): Single;
- begin
- Result:= q1.x * q2.x + q1.y * q2.y + q1.z * q2.z + q1.w * q2.w;
- end;
- function D3DXQuaternionIdentity(out qOut: TD3DXQuaternion): PD3DXQuaternion;
- begin
- with qOut do
- begin
- x:= 0; y:= 0; z:= 0; w:= 1.0;
- end;
- Result:= @qOut;
- end;
- function D3DXQuaternionIsIdentity(const q: TD3DXQuaternion): BOOL;
- begin
- with q do Result:= (x = 0) and (y = 0) and (z = 0) and (w = 1);
- end;
- // (-x, -y, -z, w)
- function D3DXQuaternionConjugate(out qOut: TD3DXQuaternion;
- const q: TD3DXQuaternion): PD3DXQuaternion;
- begin
- with qOut do
- begin
- x:= -q.x; y:= -q.y; z:= -q.z; w:= q.w;
- end;
- Result:= @qOut;
- end;
- //--------------------------
- // Plane
- //--------------------------
- // ax + by + cz + dw
- function D3DXPlaneDot(const p: TD3DXPlane; const v: TD3DXVector4): Single;
- begin
- with p,v do Result:= a*x + b*y + c*z + d*w;
- end;
- // ax + by + cz + d
- function D3DXPlaneDotCoord(const p: TD3DXPlane; const v: TD3DXVector3): Single;
- begin
- with p,v do Result:= a*x + b*y + c*z + d;
- end;
- // ax + by + cz
- function D3DXPlaneDotNormal(const p: TD3DXPlane; const v: TD3DXVector3): Single;
- begin
- with p,v do Result:= a*x + b*y + c*z;
- end;
- //--------------------------
- // Color
- //--------------------------
- // inline
- function D3DXColorNegative(out cOut: TD3DXColor; const c: TD3DXColor): PD3DXColor;
- begin
- with cOut do
- begin
- r:= 1.0 - c.r; g:= 1.0 - c.g; b:= 1.0 - c.b;
- a:= c.a;
- end;
- Result:= @cOut;
- end;
- function D3DXColorAdd(out cOut: TD3DXColor; const c1,c2: TD3DXColor): PD3DXColor;
- begin
- with cOut do
- begin
- r:= c1.r + c2.r; g:= c1.g + c2.g; b:= c1.b + c2.b;
- a:= c1.a + c2.a;
- end;
- Result:= @cOut;
- end;
- function D3DXColorSubtract(out cOut: TD3DXColor; const c1,c2: TD3DXColor): PD3DXColor;
- begin
- with cOut do
- begin
- r:= c1.r - c2.r; g:= c1.g - c2.g; b:= c1.b - c2.b;
- a:= c1.a - c2.a;
- end;
- Result:= @cOut;
- end;
- function D3DXColorScale(out cOut: TD3DXColor; const c: TD3DXColor; s: Single): PD3DXColor;
- begin
- with cOut do
- begin
- r:= c.r * s; g:= c.g * s;
- b:= c.b * s; a:= c.a * s;
- end;
- Result:= @cOut;
- end;
- // (r1*r2, g1*g2, b1*b2, a1*a2)
- function D3DXColorModulate(out cOut: TD3DXColor; const c1,c2: TD3DXColor): PD3DXColor;
- begin
- with cOut do
- begin
- r:= c1.r * c2.r; g:= c1.g * c2.g;
- b:= c1.b * c2.b; a:= c1.a * c2.a;
- end;
- Result:= @cOut;
- end;
- // Linear interpolation of r,g,b, and a. C1 + s(C2-C1)
- function D3DXColorLerp(out cOut: TD3DXColor; const c1,c2: TD3DXColor; s: Single): PD3DXColor;
- begin
- with cOut do
- begin
- r:= c1.r + s * (c2.r - c1.r);
- g:= c1.g + s * (c2.g - c1.g);
- b:= c1.b + s * (c2.b - c1.b);
- a:= c1.a + s * (c2.a - c1.a);
- end;
- Result:= @cOut;
- end;
- ///////////////////////////////////////////////////////////////////////////
- //
- // Copyright (C) Microsoft Corporation. All Rights Reserved.
- //
- // File: d3dx8core.h
- // Content: D3DX core types and functions
- //
- ///////////////////////////////////////////////////////////////////////////
- // Object Pascal support functions for D3DXGetErrorString
- function D3DXGetErrorStringA(hr: HResult): AnsiString; overload;
- var
- Buffer: array [0..254] of AnsiChar;
- begin
- D3DXGetErrorStringA(hr, PAnsiChar(@Buffer), 255);
- SetLength(Result, StrLen(PAnsiChar(@Buffer)));
- Move(Buffer, Result[1], Length(Result));
- end;
- function D3DXGetErrorStringW(hr: HResult): WideString; overload;
- function WStrLen(Str: PWideChar): Integer;
- begin
- Result := 0;
- while Str[Result] <> #0 do Inc(Result);
- end;
- begin
- SetLength(Result, 255);
- D3DXGetErrorStringW(hr, PWideChar(Result), Length(Result));
- SetLength(Result, WStrLen(PWideChar(Result)));
- end;
- function D3DXGetErrorString(hr: HResult): String; overload;
- begin
- Result := string(D3DXGetErrorStringW(hr));
- end;
- end.