G940LEDControl/DirectX/Direct3D.pas

5588 lines
213 KiB
ObjectPascal

{******************************************************************************}
{* *}
{* Copyright (C) Microsoft Corporation. All Rights Reserved. *}
{* *}
{* Files: d3dtypes.h d3dcaps.h d3d.h *}
{* Content: Direct3D8 include files *}
{* *}
{* DirectX 9.0 Delphi / FreePascal adaptation by Alexey Barkovoy *}
{* E-Mail: directx@clootie.ru *}
{* *}
{* Modified: 19-Jan-2004 *}
{* *}
{* Partly based upon : *}
{* DirectX 7.0 Object Pascal adaptation by *}
{* Erik Unger, e-Mail: DelphiDirectX@next-reality.com *}
{* *}
{* Latest version can be downloaded from: *}
{* http://clootie.ru *}
{* http://sourceforge.net/projects/delphi-dx9sdk *}
{* *}
{******************************************************************************}
{ }
{ Obtained through: Joint Endeavour of Delphi Innovators (Project JEDI) }
{ }
{ The contents of this file are used with permission, subject to the Mozilla }
{ Public License Version 1.1 (the "License"); you may not use this file except }
{ in compliance with the License. You may obtain a copy of the License at }
{ http://www.mozilla.org/MPL/MPL-1.1.html }
{ }
{ Software distributed under the License is distributed on an "AS IS" basis, }
{ WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for }
{ the specific language governing rights and limitations under the License. }
{ }
{ Alternatively, the contents of this file may be used under the terms of the }
{ GNU Lesser General Public License (the "LGPL License"), in which case the }
{ provisions of the LGPL License are applicable instead of those above. }
{ If you wish to allow use of your version of this file only under the terms }
{ of the LGPL License and not to allow others to use your version of this file }
{ under the MPL, indicate your decision by deleting the provisions above and }
{ replace them with the notice and other provisions required by the LGPL }
{ License. If you do not delete the provisions above, a recipient may use }
{ your version of this file under either the MPL or the LGPL License. }
{ }
{ For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html }
{ }
{******************************************************************************}
///////////////////////////////////////////////////////////////////////////////
// Notes:
//----------------------------------------------------------------------------
// Possible input defines for this file, mapped to original C values:
// DIRECT3D_VERSION_8 : DIRECT3D_VERSION = 0x0800,
// DIRECT3D_VERSION_7 : DIRECT3D_VERSION = 0x0700,
// DIRECT3D_VERSION_6 : DIRECT3D_VERSION = 0x0600,
// DIRECT3D_VERSION_5 : DIRECT3D_VERSION = 0x0500,
// DIRECT3D_VERSION_LESS_5 : DIRECT3D_VERSION < 0x0500,
//
// By default DIRECT3D_VERSION_7 (DIRECT3D_VERSION = 0x0700) is assumed
///////////////////////////////////////////////////////////////////////////////
unit Direct3D;
{$I DirectX.inc}
// Remove "dots" below to exclude DXFile interfaces - these interfaces
// are included for compatibility with original Erik Unger translation
{$DEFINE EXCLUDE_DXFILE_FROM_DIRECT3D}
// Assume for what Direct3D version we will compile headers
{$IFNDEF DIRECT3D_VERSION_8}
{$IFNDEF DIRECT3D_VERSION_7}
{$IFNDEF DIRECT3D_VERSION_6}
{$IFNDEF DIRECT3D_VERSION_5}
{$IFNDEF DIRECT3D_VERSION_LESS_5}
{$DEFINE DIRECT3D_VERSION_7} // Compiling for Direct3D7 by default
{$ENDIF}
{$ENDIF}
{$ENDIF}
{$ENDIF}
{$ENDIF}
// Emit conditionals to C++Builder compiler
{$IFDEF DIRECT3D_VERSION_8}
{$HPPEMIT '#define DIRECT3D_VERSION 0x0800'}
{$ENDIF}
{$IFDEF DIRECT3D_VERSION_7}
{$HPPEMIT '#define DIRECT3D_VERSION 0x0700'}
{$ENDIF}
{$IFDEF DIRECT3D_VERSION_6}
{$HPPEMIT '#define DIRECT3D_VERSION 0x0600'}
{$ENDIF}
{$IFDEF DIRECT3D_VERSION_5}
{$HPPEMIT '#define DIRECT3D_VERSION 0x0500'}
{$ENDIF}
{$IFDEF DIRECT3D_VERSION_LESS_5}
{$HPPEMIT '#define DIRECT3D_VERSION 0x0300'}
{$ENDIF}
// Define symbols for '>=' comparision
{$IFDEF DIRECT3D_VERSION_8}
{$DEFINE DIRECT3D_VERSION_7}
{$ENDIF}
{$IFDEF DIRECT3D_VERSION_7}
{$DEFINE DIRECT3D_VERSION_6}
{$ENDIF}
{$IFDEF DIRECT3D_VERSION_6}
{$DEFINE DIRECT3D_VERSION_5}
{$ENDIF}
// Define symbols for '<' comparision
{$IFNDEF DIRECT3D_VERSION_8}
{$DEFINE DIRECT3D_VERSION_LESS_8}
{$ENDIF}
{$IFNDEF DIRECT3D_VERSION_7}
{$DEFINE DIRECT3D_VERSION_LESS_7}
{$ENDIF}
{$IFNDEF DIRECT3D_VERSION_6}
{$DEFINE DIRECT3D_VERSION_LESS_6}
{$ENDIF}
{$IFNDEF DIRECT3D_VERSION_5}
{$DEFINE DIRECT3D_VERSION_LESS_5}
{$ENDIF}
interface
uses
Windows, DXTypes, DirectDraw{$IFDEF DIRECT3D_VERSION_8}, Direct3D8{$ENDIF};
{$NOINCLUDE Windows}
{$NOINCLUDE DirectDraw}
{$IFDEF DIRECT3D_VERSION_8}
{$NOINCLUDE Direct3D8}
{$ENDIF}
{$HPPEMIT '#include "d3d.h"'}
{$HPPEMIT '#include "d3dtypes.h"'}
{$HPPEMIT '#include "d3dcaps.h"'}
(* TD3DValue is the fundamental Direct3D fractional data type *)
type
TRefClsID = TGUID;
type
D3DVALUE = DXTypes.D3DVALUE;
{$EXTERNALSYM D3DVALUE}
TD3DValue = DXTypes.TD3DValue;
PD3DValue = DXTypes.PD3DValue;
D3DFIXED = Longint;
{$EXTERNALSYM D3DFIXED}
TD3DFixed = D3DFIXED;
float = TD3DValue;
{$EXTERNALSYM float}
D3DCOLOR = DXTypes.D3DCOLOR;
{$EXTERNALSYM D3DCOLOR}
TD3DColor = DXTypes.TD3DColor;
PD3DColor = DXTypes.PD3DColor;
function D3DVal(val: Variant): Single;
{$EXTERNALSYM D3DVal}
function D3DDivide(a, b: Double): Single;
{$EXTERNALSYM D3DDivide}
function D3DMultiply(a, b: Double): Single;
{$EXTERNALSYM D3DMultiply}
(*
* Format of CI colors is
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
* | alpha | color index | fraction |
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
*)
// #define CI_GETALPHA(ci) ((ci) >> 24)
function CI_GETALPHA(ci: DWORD): DWORD;
{$EXTERNALSYM CI_GETALPHA}
// #define CI_GETINDEX(ci) (((ci) >> 8) & 0xffff)
function CI_GETINDEX(ci: DWORD): DWORD;
{$EXTERNALSYM CI_GETINDEX}
// #define CI_GETFRACTION(ci) ((ci) & 0xff)
function CI_GETFRACTION(ci: DWORD): DWORD;
{$EXTERNALSYM CI_GETFRACTION}
// #define CI_ROUNDINDEX(ci) CI_GETINDEX((ci) + 0x80)
function CI_ROUNDINDEX(ci: DWORD): DWORD;
{$EXTERNALSYM CI_ROUNDINDEX}
// #define CI_MASKALPHA(ci) ((ci) & 0xffffff)
function CI_MASKALPHA(ci: DWORD): DWORD;
{$EXTERNALSYM CI_MASKALPHA}
// #define CI_MAKE(a, i, f) (((a) << 24) | ((i) << 8) | (f))
function CI_MAKE(a,i,f: DWORD): DWORD;
{$EXTERNALSYM CI_MAKE}
(*
* Format of RGBA colors is
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
* | alpha | red | green | blue |
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
*)
// #define RGBA_GETALPHA(rgb) ((rgb) >> 24)
function RGBA_GETALPHA(rgb: TD3DColor): DWORD;
{$EXTERNALSYM RGBA_GETALPHA}
// #define RGBA_GETRED(rgb) (((rgb) >> 16) & 0xff)
function RGBA_GETRED(rgb: TD3DColor): DWORD;
{$EXTERNALSYM RGBA_GETRED}
// #define RGBA_GETGREEN(rgb) (((rgb) >> 8) & 0xff)
function RGBA_GETGREEN(rgb: TD3DColor): DWORD;
{$EXTERNALSYM RGBA_GETGREEN}
// #define RGBA_GETBLUE(rgb) ((rgb) & 0xff)
function RGBA_GETBLUE(rgb: TD3DColor): DWORD;
{$EXTERNALSYM RGBA_GETBLUE}
// #define RGBA_MAKE(r, g, b, a) ((TD3DColor) (((a) << 24) | ((r) << 16) | ((g) << 8) | (b)))
function RGBA_MAKE(r, g, b, a: DWORD): TD3DColor;
{$EXTERNALSYM RGBA_MAKE}
(* D3DRGB and D3DRGBA may be used as initialisers for D3DCOLORs
* The float values must be in the range 0..1
*)
// #define D3DRGB(r, g, b) \
// (0xff000000L | (((long)((r) * 255)) << 16) | (((long)((g) * 255)) << 8) | (long)((b) * 255))
function D3DRGB(r, g, b: Single): TD3DColor;
{$EXTERNALSYM D3DRGB}
// #define D3DRGBA(r, g, b, a) \
// ( (((long)((a) * 255)) << 24) | (((long)((r) * 255)) << 16) \
// | (((long)((g) * 255)) << 8) | (long)((b) * 255) \
// )
function D3DRGBA(r, g, b, a: Single): TD3DColor;
{$EXTERNALSYM D3DRGBA}
(*
* Format of RGB colors is
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
* | ignored | red | green | blue |
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
*)
// #define RGB_GETRED(rgb) (((rgb) >> 16) & 0xff)
function RGB_GETRED(rgb: TD3DColor): DWORD;
{$EXTERNALSYM RGB_GETRED}
// #define RGB_GETGREEN(rgb) (((rgb) >> 8) & 0xff)
function RGB_GETGREEN(rgb: TD3DColor): DWORD;
{$EXTERNALSYM RGB_GETGREEN}
// #define RGB_GETBLUE(rgb) ((rgb) & 0xff)
function RGB_GETBLUE(rgb: TD3DColor): DWORD;
{$EXTERNALSYM RGB_GETBLUE}
// #define RGBA_SETALPHA(rgba, x) (((x) << 24) | ((rgba) & 0x00ffffff))
function RGBA_SETALPHA(rgba: TD3DColor; x: DWORD): TD3DColor;
{$EXTERNALSYM RGBA_SETALPHA}
// #define RGB_MAKE(r, g, b) ((TD3DColor) (((r) << 16) | ((g) << 8) | (b)))
function RGB_MAKE(r, g, b: DWORD): TD3DColor;
{$EXTERNALSYM RGB_MAKE}
// #define RGBA_TORGB(rgba) ((TD3DColor) ((rgba) & 0xffffff))
function RGBA_TORGB(rgba: TD3DColor): TD3DColor;
{$EXTERNALSYM RGBA_TORGB}
// #define RGB_TORGBA(rgb) ((TD3DColor) ((rgb) | 0xff000000))
function RGB_TORGBA(rgb: TD3DColor): TD3DColor;
{$EXTERNALSYM RGB_TORGBA}
(*
* Flags for Enumerate functions
*)
const
(*
* Stop the enumeration
*)
D3DENUMRET_CANCEL = DDENUMRET_CANCEL;
{$EXTERNALSYM D3DENUMRET_CANCEL}
(*
* Continue the enumeration
*)
D3DENUMRET_OK = DDENUMRET_OK;
{$EXTERNALSYM D3DENUMRET_OK}
type
TD3DValidateCallback = function (lpUserArg: Pointer;
dwOffset: DWORD): HResult; stdcall;
{$NODEFINE TD3DValidateCallback}
{$HPPEMIT 'typedef LPD3DVALIDATECALLBACK TD3DValidateCallback;'}
TD3DEnumTextureFormatsCallback = function (var lpDdsd: TDDSurfaceDesc;
lpContext: Pointer): HResult; stdcall;
{$NODEFINE TD3DEnumTextureFormatsCallback}
{$HPPEMIT 'typedef LPD3DENUMTEXTUREFORMATSCALLBACK TD3DEnumTextureFormatsCallback;'}
TD3DEnumPixelFormatsCallback = function (var lpDDPixFmt: TDDPixelFormat;
lpContext: Pointer): HResult; stdcall;
{$NODEFINE TD3DEnumPixelFormatsCallback}
{$HPPEMIT 'typedef LPD3DENUMPIXELFORMATSCALLBACK TD3DEnumPixelFormatsCallback;'}
PD3DMaterialHandle = ^TD3DMaterialHandle;
TD3DMaterialHandle = DWORD;
PD3DTextureHandle = ^TD3DTextureHandle;
TD3DTextureHandle = DWORD;
PD3DMatrixHandle = ^TD3DMatrixHandle;
TD3DMatrixHandle = DWORD;
PD3DColorValue = ^TD3DColorValue;
_D3DCOLORVALUE = packed record
case Integer of
0: (
r: TD3DValue;
g: TD3DValue;
b: TD3DValue;
a: TD3DValue;
);
1: (
dvR: TD3DValue;
dvG: TD3DValue;
dvB: TD3DValue;
dvA: TD3DValue;
);
end {_D3DCOLORVALUE};
{$EXTERNALSYM _D3DCOLORVALUE}
D3DCOLORVALUE = _D3DCOLORVALUE;
{$EXTERNALSYM D3DCOLORVALUE}
TD3DColorValue = _D3DCOLORVALUE;
PD3DRect = ^TD3DRect;
_D3DRECT = packed record
case Integer of
0: (
x1: LongInt;
y1: LongInt;
x2: LongInt;
y2: LongInt;
);
1: (
lX1: LongInt;
lY1: LongInt;
lX2: LongInt;
lY2: LongInt;
);
2: (
a: array[0..3] of LongInt;
);
end {_D3DRECT};
{$EXTERNALSYM _D3DRECT}
D3DRECT = _D3DRECT;
{$EXTERNALSYM D3DRECT}
TD3DRect = _D3DRECT;
PD3DVector = ^TD3DVector;
_D3DVECTOR = packed record
case Integer of
0: (
x: TD3DValue;
y: TD3DValue;
z: TD3DValue;
);
1: (
dvX: TD3DValue;
dvY: TD3DValue;
dvZ: TD3DValue;
);
end {_D3DVECTOR};
{$EXTERNALSYM _D3DVECTOR}
D3DVECTOR = _D3DVECTOR;
{$EXTERNALSYM D3DVECTOR}
TD3DVector = _D3DVECTOR;
(******************************************************************
* *
* D3DVec.inl *
* *
* float-valued 3D vector class for Direct3D. *
* *
* Copyright (c) 1996-1998 Microsoft Corp. All rights reserved. *
* *
******************************************************************)
// Addition and subtraction
function VectorAdd(const v1, v2: TD3DVector): TD3DVector;
function VectorSub(const v1, v2: TD3DVector): TD3DVector;
// Scalar multiplication and division
function VectorMulS(const v: TD3DVector; s: TD3DValue): TD3DVector;
function VectorDivS(const v: TD3DVector; s: TD3DValue): TD3DVector;
// Memberwise multiplication and division
function VectorMul(const v1, v2: TD3DVector): TD3DVector;
function VectorDiv(const v1, v2: TD3DVector): TD3DVector;
// Vector dominance
function VectorSmaller(v1, v2: TD3DVector): Boolean;
function VectorSmallerEqual(v1, v2: TD3DVector): Boolean;
// Bitwise equality
function VectorEqual(v1, v2: TD3DVector): Boolean;
// Length-related functions
function VectorSquareMagnitude(v: TD3DVector): TD3DValue;
function VectorMagnitude(v: TD3DVector): TD3DValue;
// Returns vector with same direction and unit length
function VectorNormalize(const v: TD3DVector): TD3DVector;
// Return min/max component of the input vector
function VectorMin(v: TD3DVector): TD3DValue;
function VectorMax(v: TD3DVector): TD3DValue;
// Return memberwise min/max of input vectors
function VectorMinimize(const v1, v2: TD3DVector): TD3DVector;
function VectorMaximize(const v1, v2: TD3DVector): TD3DVector;
// Dot and cross product
function VectorDotProduct(v1, v2: TD3DVector): TD3DValue;
function VectorCrossProduct(const v1, v2: TD3DVector): TD3DVector;
type
(*
* Vertex data types supported in an ExecuteBuffer.
*)
(*
* Homogeneous vertices
*)
PD3DHVertex = ^TD3DHVertex;
_D3DHVERTEX = packed record
dwFlags: DWORD; (* Homogeneous clipping flags *)
case Integer of
0: (
hx: TD3DValue;
hy: TD3DValue;
hz: TD3DValue;
);
1: (
dvHX: TD3DValue;
dvHY: TD3DValue;
dvHZ: TD3DValue;
);
end;
{$EXTERNALSYM _D3DHVERTEX}
D3DHVERTEX = _D3DHVERTEX;
{$EXTERNALSYM D3DHVERTEX}
TD3DHVertex = _D3DHVERTEX;
(*
* Transformed/lit vertices
*)
PD3DTLVertex = ^TD3DTLVertex;
_D3DTLVERTEX = packed record
case Integer of
0: (
sx: TD3DValue; (* Screen coordinates *)
sy: TD3DValue;
sz: TD3DValue;
rhw: TD3DValue; (* Reciprocal of homogeneous w *)
color: TD3DColor; (* Vertex color *)
specular: TD3DColor; (* Specular component of vertex *)
tu: TD3DValue; (* Texture coordinates *)
tv: TD3DValue;
);
1: (
dvSX: TD3DValue;
dvSY: TD3DValue;
dvSZ: TD3DValue;
dvRHW: TD3DValue;
dcColor: TD3DColor;
dcSpecular: TD3DColor;
dvTU: TD3DValue;
dvTV: TD3DValue;
);
end;
{$EXTERNALSYM _D3DTLVERTEX}
D3DTLVERTEX = _D3DTLVERTEX;
{$EXTERNALSYM D3DTLVERTEX}
TD3DTLVertex = _D3DTLVERTEX;
(*
* Untransformed/lit vertices
*)
PD3DLVertex = ^TD3DLVertex;
_D3DLVERTEX = packed record
case Integer of
0: (
x: TD3DValue; (* Homogeneous coordinates *)
y: TD3DValue;
z: TD3DValue;
dwReserved: DWORD;
color: TD3DColor; (* Vertex color *)
specular: TD3DColor; (* Specular component of vertex *)
tu: TD3DValue; (* Texture coordinates *)
tv: TD3DValue;
);
1: (
dvX: TD3DValue;
dvY: TD3DValue;
dvZ: TD3DValue;
UNIONFILLER1d: DWORD;
dcColor: TD3DColor;
dcSpecular: TD3DColor;
dvTU: TD3DValue;
dvTV: TD3DValue;
);
end;
{$EXTERNALSYM _D3DLVERTEX}
D3DLVERTEX = _D3DLVERTEX;
{$EXTERNALSYM D3DLVERTEX}
TD3DLVertex = _D3DLVERTEX;
(*
* Untransformed/unlit vertices
*)
PD3DVertex = ^TD3DVertex;
_D3DVERTEX = packed record
case Integer of
0: (
x: TD3DValue; (* Homogeneous coordinates *)
y: TD3DValue;
z: TD3DValue;
nx: TD3DValue; (* Normal *)
ny: TD3DValue;
nz: TD3DValue;
tu: TD3DValue; (* Texture coordinates *)
tv: TD3DValue;
);
1: (
dvX: TD3DValue;
dvY: TD3DValue;
dvZ: TD3DValue;
dvNX: TD3DValue;
dvNY: TD3DValue;
dvNZ: TD3DValue;
dvTU: TD3DValue;
dvTV: TD3DValue;
);
end;
{$EXTERNALSYM _D3DVERTEX}
D3DVERTEX = _D3DVERTEX;
{$EXTERNALSYM D3DVERTEX}
TD3DVertex = _D3DVERTEX;
(*
* Matrix, viewport, and tranformation structures and definitions.
*)
PD3DMatrix = ^TD3DMatrix;
_D3DMATRIX = packed record
case integer of
0 : (_11, _12, _13, _14: TD3DValue;
_21, _22, _23, _24: TD3DValue;
_31, _32, _33, _34: TD3DValue;
_41, _42, _43, _44: TD3DValue);
1 : (m : array [0..3, 0..3] of TD3DValue);
end {_D3DMATRIX};
{$EXTERNALSYM _D3DMATRIX}
D3DMATRIX = _D3DMATRIX;
{$EXTERNALSYM D3DMATRIX}
TD3DMatrix = _D3DMATRIX;
PD3DViewport = ^TD3DViewport;
_D3DVIEWPORT = packed record
dwSize: DWORD;
dwX: DWORD;
dwY: DWORD; (* Top left *)
dwWidth: DWORD;
dwHeight: DWORD; (* Dimensions *)
dvScaleX: TD3DValue; (* Scale homogeneous to screen *)
dvScaleY: TD3DValue; (* Scale homogeneous to screen *)
dvMaxX: TD3DValue; (* Min/max homogeneous x coord *)
dvMaxY: TD3DValue; (* Min/max homogeneous y coord *)
dvMinZ: TD3DValue;
dvMaxZ: TD3DValue; (* Min/max homogeneous z coord *)
end {_D3DVIEWPORT};
{$EXTERNALSYM _D3DVIEWPORT}
D3DVIEWPORT = _D3DVIEWPORT;
{$EXTERNALSYM D3DVIEWPORT}
TD3DViewport = _D3DVIEWPORT;
{$IFDEF DIRECT3D_VERSION_5}
PD3DViewport2 = ^TD3DViewport2;
_D3DVIEWPORT2 = packed record
dwSize: DWORD;
dwX: DWORD;
dwY: DWORD; (* Viewport Top left *)
dwWidth: DWORD;
dwHeight: DWORD; (* Viewport Dimensions *)
dvClipX: TD3DValue; (* Top left of clip volume *)
dvClipY: TD3DValue;
dvClipWidth: TD3DValue; (* Clip Volume Dimensions *)
dvClipHeight: TD3DValue;
dvMinZ: TD3DValue; (* Min/max of clip Volume *)
dvMaxZ: TD3DValue;
end;
{$EXTERNALSYM _D3DVIEWPORT2}
D3DVIEWPORT2 = _D3DVIEWPORT2;
{$EXTERNALSYM D3DVIEWPORT2}
TD3DViewport2 = _D3DVIEWPORT2;
{$ENDIF} // DIRECT3D_VERSION_5
{$IFDEF DIRECT3D_VERSION_7}
PD3DViewport7 = ^TD3DViewport7;
_D3DVIEWPORT7 = packed record
dwX: DWORD;
dwY: DWORD; (* Viewport Top left *)
dwWidth: DWORD;
dwHeight: DWORD; (* Viewport Dimensions *)
dvMinZ: TD3DValue; (* Min/max of clip Volume *)
dvMaxZ: TD3DValue;
end;
{$EXTERNALSYM _D3DVIEWPORT7}
D3DVIEWPORT7 = _D3DVIEWPORT7;
{$EXTERNALSYM D3DVIEWPORT7}
TD3DViewport7 = _D3DVIEWPORT7;
{$ENDIF} // DIRECT3D_VERSION_7
(*
* Values for clip fields.
*)
{$IFDEF DIRECT3D_VERSION_7}
const
// Max number of user clipping planes, supported in D3D.
D3DMAXUSERCLIPPLANES = 32;
{$EXTERNALSYM D3DMAXUSERCLIPPLANES}
// These bits could be ORed together to use with D3DRENDERSTATE_CLIPPLANEENABLE
//
D3DCLIPPLANE0 = (1 shl 0);
{$EXTERNALSYM D3DCLIPPLANE0}
D3DCLIPPLANE1 = (1 shl 1);
{$EXTERNALSYM D3DCLIPPLANE1}
D3DCLIPPLANE2 = (1 shl 2);
{$EXTERNALSYM D3DCLIPPLANE2}
D3DCLIPPLANE3 = (1 shl 3);
{$EXTERNALSYM D3DCLIPPLANE3}
D3DCLIPPLANE4 = (1 shl 4);
{$EXTERNALSYM D3DCLIPPLANE4}
D3DCLIPPLANE5 = (1 shl 5);
{$EXTERNALSYM D3DCLIPPLANE5}
{$ENDIF} // DIRECT3D_VERSION_7
const
D3DCLIP_LEFT = $00000001;
{$EXTERNALSYM D3DCLIP_LEFT}
D3DCLIP_RIGHT = $00000002;
{$EXTERNALSYM D3DCLIP_RIGHT}
D3DCLIP_TOP = $00000004;
{$EXTERNALSYM D3DCLIP_TOP}
D3DCLIP_BOTTOM = $00000008;
{$EXTERNALSYM D3DCLIP_BOTTOM}
D3DCLIP_FRONT = $00000010;
{$EXTERNALSYM D3DCLIP_FRONT}
D3DCLIP_BACK = $00000020;
{$EXTERNALSYM D3DCLIP_BACK}
D3DCLIP_GEN0 = $00000040;
{$EXTERNALSYM D3DCLIP_GEN0}
D3DCLIP_GEN1 = $00000080;
{$EXTERNALSYM D3DCLIP_GEN1}
D3DCLIP_GEN2 = $00000100;
{$EXTERNALSYM D3DCLIP_GEN2}
D3DCLIP_GEN3 = $00000200;
{$EXTERNALSYM D3DCLIP_GEN3}
D3DCLIP_GEN4 = $00000400;
{$EXTERNALSYM D3DCLIP_GEN4}
D3DCLIP_GEN5 = $00000800;
{$EXTERNALSYM D3DCLIP_GEN5}
(*
* Values for d3d status.
*)
D3DSTATUS_CLIPUNIONLEFT = D3DCLIP_LEFT;
{$EXTERNALSYM D3DSTATUS_CLIPUNIONLEFT}
D3DSTATUS_CLIPUNIONRIGHT = D3DCLIP_RIGHT;
{$EXTERNALSYM D3DSTATUS_CLIPUNIONRIGHT}
D3DSTATUS_CLIPUNIONTOP = D3DCLIP_TOP;
{$EXTERNALSYM D3DSTATUS_CLIPUNIONTOP}
D3DSTATUS_CLIPUNIONBOTTOM = D3DCLIP_BOTTOM;
{$EXTERNALSYM D3DSTATUS_CLIPUNIONBOTTOM}
D3DSTATUS_CLIPUNIONFRONT = D3DCLIP_FRONT;
{$EXTERNALSYM D3DSTATUS_CLIPUNIONFRONT}
D3DSTATUS_CLIPUNIONBACK = D3DCLIP_BACK;
{$EXTERNALSYM D3DSTATUS_CLIPUNIONBACK}
D3DSTATUS_CLIPUNIONGEN0 = D3DCLIP_GEN0;
{$EXTERNALSYM D3DSTATUS_CLIPUNIONGEN0}
D3DSTATUS_CLIPUNIONGEN1 = D3DCLIP_GEN1;
{$EXTERNALSYM D3DSTATUS_CLIPUNIONGEN1}
D3DSTATUS_CLIPUNIONGEN2 = D3DCLIP_GEN2;
{$EXTERNALSYM D3DSTATUS_CLIPUNIONGEN2}
D3DSTATUS_CLIPUNIONGEN3 = D3DCLIP_GEN3;
{$EXTERNALSYM D3DSTATUS_CLIPUNIONGEN3}
D3DSTATUS_CLIPUNIONGEN4 = D3DCLIP_GEN4;
{$EXTERNALSYM D3DSTATUS_CLIPUNIONGEN4}
D3DSTATUS_CLIPUNIONGEN5 = D3DCLIP_GEN5;
{$EXTERNALSYM D3DSTATUS_CLIPUNIONGEN5}
D3DSTATUS_CLIPINTERSECTIONLEFT = $00001000;
{$EXTERNALSYM D3DSTATUS_CLIPINTERSECTIONLEFT}
D3DSTATUS_CLIPINTERSECTIONRIGHT = $00002000;
{$EXTERNALSYM D3DSTATUS_CLIPINTERSECTIONRIGHT}
D3DSTATUS_CLIPINTERSECTIONTOP = $00004000;
{$EXTERNALSYM D3DSTATUS_CLIPINTERSECTIONTOP}
D3DSTATUS_CLIPINTERSECTIONBOTTOM = $00008000;
{$EXTERNALSYM D3DSTATUS_CLIPINTERSECTIONBOTTOM}
D3DSTATUS_CLIPINTERSECTIONFRONT = $00010000;
{$EXTERNALSYM D3DSTATUS_CLIPINTERSECTIONFRONT}
D3DSTATUS_CLIPINTERSECTIONBACK = $00020000;
{$EXTERNALSYM D3DSTATUS_CLIPINTERSECTIONBACK}
D3DSTATUS_CLIPINTERSECTIONGEN0 = $00040000;
{$EXTERNALSYM D3DSTATUS_CLIPINTERSECTIONGEN0}
D3DSTATUS_CLIPINTERSECTIONGEN1 = $00080000;
{$EXTERNALSYM D3DSTATUS_CLIPINTERSECTIONGEN1}
D3DSTATUS_CLIPINTERSECTIONGEN2 = $00100000;
{$EXTERNALSYM D3DSTATUS_CLIPINTERSECTIONGEN2}
D3DSTATUS_CLIPINTERSECTIONGEN3 = $00200000;
{$EXTERNALSYM D3DSTATUS_CLIPINTERSECTIONGEN3}
D3DSTATUS_CLIPINTERSECTIONGEN4 = $00400000;
{$EXTERNALSYM D3DSTATUS_CLIPINTERSECTIONGEN4}
D3DSTATUS_CLIPINTERSECTIONGEN5 = $00800000;
{$EXTERNALSYM D3DSTATUS_CLIPINTERSECTIONGEN5}
D3DSTATUS_ZNOTVISIBLE = $01000000;
{$EXTERNALSYM D3DSTATUS_ZNOTVISIBLE}
(* Do not use 0x80000000 for any status flags in future as it is reserved *)
D3DSTATUS_CLIPUNIONALL = (
D3DSTATUS_CLIPUNIONLEFT or
D3DSTATUS_CLIPUNIONRIGHT or
D3DSTATUS_CLIPUNIONTOP or
D3DSTATUS_CLIPUNIONBOTTOM or
D3DSTATUS_CLIPUNIONFRONT or
D3DSTATUS_CLIPUNIONBACK or
D3DSTATUS_CLIPUNIONGEN0 or
D3DSTATUS_CLIPUNIONGEN1 or
D3DSTATUS_CLIPUNIONGEN2 or
D3DSTATUS_CLIPUNIONGEN3 or
D3DSTATUS_CLIPUNIONGEN4 or
D3DSTATUS_CLIPUNIONGEN5);
{$EXTERNALSYM D3DSTATUS_CLIPUNIONALL}
D3DSTATUS_CLIPINTERSECTIONALL = (
D3DSTATUS_CLIPINTERSECTIONLEFT or
D3DSTATUS_CLIPINTERSECTIONRIGHT or
D3DSTATUS_CLIPINTERSECTIONTOP or
D3DSTATUS_CLIPINTERSECTIONBOTTOM or
D3DSTATUS_CLIPINTERSECTIONFRONT or
D3DSTATUS_CLIPINTERSECTIONBACK or
D3DSTATUS_CLIPINTERSECTIONGEN0 or
D3DSTATUS_CLIPINTERSECTIONGEN1 or
D3DSTATUS_CLIPINTERSECTIONGEN2 or
D3DSTATUS_CLIPINTERSECTIONGEN3 or
D3DSTATUS_CLIPINTERSECTIONGEN4 or
D3DSTATUS_CLIPINTERSECTIONGEN5);
{$EXTERNALSYM D3DSTATUS_CLIPINTERSECTIONALL}
D3DSTATUS_DEFAULT = (
D3DSTATUS_CLIPINTERSECTIONALL or
D3DSTATUS_ZNOTVISIBLE);
{$EXTERNALSYM D3DSTATUS_DEFAULT}
(*
* Options for direct transform calls
*)
D3DTRANSFORM_CLIPPED = $00000001;
{$EXTERNALSYM D3DTRANSFORM_CLIPPED}
D3DTRANSFORM_UNCLIPPED = $00000002;
{$EXTERNALSYM D3DTRANSFORM_UNCLIPPED}
type
PD3DTransformData = ^TD3DTransformData;
_D3DTRANSFORMDATA = packed record
dwSize: DWORD;
lpIn: Pointer; (* Input vertices *)
dwInSize: DWORD; (* Stride of input vertices *)
lpOut: Pointer; (* Output vertices *)
dwOutSize: DWORD; (* Stride of output vertices *)
lpHOut: ^TD3DHVertex; (* Output homogeneous vertices *)
dwClip: DWORD; (* Clipping hint *)
dwClipIntersection: DWORD;
dwClipUnion: DWORD; (* Union of all clip flags *)
drExtent: TD3DRect; (* Extent of transformed vertices *)
end;
{$EXTERNALSYM _D3DTRANSFORMDATA}
D3DTRANSFORMDATA = _D3DTRANSFORMDATA;
{$EXTERNALSYM D3DTRANSFORMDATA}
TD3DTransformData = _D3DTRANSFORMDATA;
(*
* Structure defining position and direction properties for lighting.
*)
PD3DLightingElement = ^TD3DLightingElement;
_D3DLIGHTINGELEMENT = packed record
dvPosition: TD3DVector; (* Lightable point in model space *)
dvNormal: TD3DVector; (* Normalised unit vector *)
end;
{$EXTERNALSYM _D3DLIGHTINGELEMENT}
D3DLIGHTINGELEMENT = _D3DLIGHTINGELEMENT;
{$EXTERNALSYM D3DLIGHTINGELEMENT}
TD3DLightingElement = _D3DLIGHTINGELEMENT;
(*
* Structure defining material properties for lighting.
*)
PD3DMaterial = ^TD3DMaterial;
_D3DMATERIAL = packed record
dwSize: DWORD;
case Integer of
0: (
diffuse: TD3DColorValue; (* Diffuse color RGBA *)
ambient: TD3DColorValue; (* Ambient color RGB *)
specular: TD3DColorValue; (* Specular 'shininess' *)
emissive: TD3DColorValue; (* Emissive color RGB *)
power: TD3DValue; (* Sharpness if specular highlight *)
hTexture: TD3DTextureHandle; (* Handle to texture map *)
dwRampSize: DWORD;
);
1: (
dcvDiffuse: TD3DColorValue;
dcvAmbient: TD3DColorValue;
dcvSpecular: TD3DColorValue;
dcvEmissive: TD3DColorValue;
dvPower: TD3DValue;
);
end;
{$EXTERNALSYM _D3DMATERIAL}
D3DMATERIAL = _D3DMATERIAL;
{$EXTERNALSYM D3DMATERIAL}
TD3DMaterial = _D3DMATERIAL;
{$IFDEF DIRECT3D_VERSION_7}
PD3DMaterial7 = ^TD3DMaterial7;
_D3DMATERIAL7 = packed record
case Integer of
0: (
diffuse: TD3DColorValue; (* Diffuse color RGBA *)
ambient: TD3DColorValue; (* Ambient color RGB *)
specular: TD3DColorValue; (* Specular 'shininess' *)
emissive: TD3DColorValue; (* Emissive color RGB *)
power: TD3DValue; (* Sharpness if specular highlight *)
);
1: (
dcvDiffuse: TD3DColorValue;
dcvAmbient: TD3DColorValue;
dcvSpecular: TD3DColorValue;
dcvEmissive: TD3DColorValue;
dvPower: TD3DValue;
);
end;
{$EXTERNALSYM _D3DMATERIAL7}
D3DMATERIAL7 = _D3DMATERIAL7;
{$EXTERNALSYM D3DMATERIAL7}
TD3DMaterial7 = _D3DMATERIAL7;
{$ENDIF} // DIRECT3D_VERSION_7
{$IFDEF DIRECT3D_VERSION_LESS_8}
PD3DLightType = ^TD3DLightType;
_D3DLIGHTTYPE = (
D3DLIGHT_INVALID_0,
D3DLIGHT_POINT,
D3DLIGHT_SPOT,
D3DLIGHT_DIRECTIONAL,
// Note: The following light type (D3DLIGHT_PARALLELPOINT)
// is no longer supported from D3D for DX7 onwards.
D3DLIGHT_PARALLELPOINT
{$IFDEF DIRECT3D_VERSION_LESS_5}, // For backward compatible headers
D3DLIGHT_GLSPOT
{$ENDIF} // DIRECT3D_VERSION_LESS_5
);
{$EXTERNALSYM _D3DLIGHTTYPE}
D3DLIGHTTYPE = _D3DLIGHTTYPE;
{$EXTERNALSYM D3DLIGHTTYPE}
TD3DLightType = _D3DLIGHTTYPE;
{$ELSE}
const
D3DLIGHT_PARALLELPOINT = TD3DLightType(4);
{$EXTERNALSYM D3DLIGHT_PARALLELPOINT}
D3DLIGHT_GLSPOT = TD3DLightType(5);
{$EXTERNALSYM D3DLIGHT_GLSPOT}
type
{$ENDIF} //(DIRECT3D_VERSION < 0x0800)
(*
* Structure defining a light source and its properties.
*)
PD3DLight = ^TD3DLight;
_D3DLIGHT = packed record
dwSize: DWORD;
dltType: TD3DLightType; (* Type of light source *)
dcvColor: TD3DColorValue; (* Color of light *)
dvPosition: TD3DVector; (* Position in world space *)
dvDirection: TD3DVector; (* Direction in world space *)
dvRange: TD3DValue; (* Cutoff range *)
dvFalloff: TD3DValue; (* Falloff *)
dvAttenuation0: TD3DValue; (* Constant attenuation *)
dvAttenuation1: TD3DValue; (* Linear attenuation *)
dvAttenuation2: TD3DValue; (* Quadratic attenuation *)
dvTheta: TD3DValue; (* Inner angle of spotlight cone *)
dvPhi: TD3DValue; (* Outer angle of spotlight cone *)
end;
{$EXTERNALSYM _D3DLIGHT}
D3DLIGHT = _D3DLIGHT;
{$EXTERNALSYM D3DLIGHT}
TD3DLight = _D3DLIGHT;
{$IFDEF DIRECT3D_VERSION_7}
PD3DLight7 = ^TD3DLight7;
_D3DLIGHT7 = packed record
dltType: TD3DLightType; (* Type of light source *)
dcvDiffuse: TD3DColorValue; (* Diffuse color of light *)
dcvSpecular: TD3DColorValue;(* Specular color of light *)
dcvAmbient: TD3DColorValue; (* Ambient color of light *)
dvPosition: TD3DVector; (* Position in world space *)
dvDirection: TD3DVector; (* Direction in world space *)
dvRange: TD3DValue; (* Cutoff range *)
dvFalloff: TD3DValue; (* Falloff *)
dvAttenuation0: TD3DValue; (* Constant attenuation *)
dvAttenuation1: TD3DValue; (* Linear attenuation *)
dvAttenuation2: TD3DValue; (* Quadratic attenuation *)
dvTheta: TD3DValue; (* Inner angle of spotlight cone *)
dvPhi: TD3DValue; (* Outer angle of spotlight cone *)
end;
{$EXTERNALSYM _D3DLIGHT7}
D3DLIGHT7 = _D3DLIGHT7;
{$EXTERNALSYM D3DLIGHT7}
TD3DLight7 = _D3DLIGHT7;
{$ENDIF} // DIRECT3D_VERSION_7
{$IFDEF DIRECT3D_VERSION_5}
(*
* Structure defining a light source and its properties.
*)
(* flags bits *)
const
D3DLIGHT_ACTIVE = $00000001;
{$EXTERNALSYM D3DLIGHT_ACTIVE}
D3DLIGHT_NO_SPECULAR = $00000002;
{$EXTERNALSYM D3DLIGHT_NO_SPECULAR}
D3DLIGHT_ALL = D3DLIGHT_ACTIVE or D3DLIGHT_ACTIVE;
{$EXTERNALSYM D3DLIGHT_ALL}
(* maximum valid light range *)
D3DLIGHT_RANGE_MAX = 1.8439088915e+18; //sqrt(FLT_MAX);
{$EXTERNALSYM D3DLIGHT_RANGE_MAX}
type
PD3DLight2 = ^TD3DLight2;
_D3DLIGHT2 = packed record
dwSize: DWORD;
dltType: TD3DLightType; (* Type of light source *)
dcvColor: TD3DColorValue; (* Color of light *)
dvPosition: TD3DVector; (* Position in world space *)
dvDirection: TD3DVector; (* Direction in world space *)
dvRange: TD3DValue; (* Cutoff range *)
dvFalloff: TD3DValue; (* Falloff *)
dvAttenuation0: TD3DValue; (* Constant attenuation *)
dvAttenuation1: TD3DValue; (* Linear attenuation *)
dvAttenuation2: TD3DValue; (* Quadratic attenuation *)
dvTheta: TD3DValue; (* Inner angle of spotlight cone *)
dvPhi: TD3DValue; (* Outer angle of spotlight cone *)
dwFlags: DWORD;
end;
{$EXTERNALSYM _D3DLIGHT2}
D3DLIGHT2 = _D3DLIGHT2;
{$EXTERNALSYM D3DLIGHT2}
TD3DLight2 = _D3DLIGHT2;
{$ELSE}
PD3DLight2 = PD3DLight;
TD3DLight2 = TD3DLight;
{$ENDIF} // DIRECT3D_VERSION_5
PD3DLightData = ^TD3DLightData;
_D3DLIGHTDATA = packed record
dwSize: DWORD;
lpIn: ^TD3DLightingElement; (* Input positions and normals *)
dwInSize: DWORD; (* Stride of input elements *)
lpOut: ^TD3DTLVertex; (* Output colors *)
dwOutSize: DWORD; (* Stride of output colors *)
end;
{$EXTERNALSYM _D3DLIGHTDATA}
D3DLIGHTDATA = _D3DLIGHTDATA;
{$EXTERNALSYM D3DLIGHTDATA}
TD3DLightData = _D3DLIGHTDATA;
(*
* Before DX5, these values were in an enum called
* TD3DColorModel. This was not correct, since they are
* bit flags. A driver can surface either or both flags
* in the dcmColorModel member of D3DDEVICEDESC.
*)
type
TD3DColorModel = DWORD;
const
D3DCOLOR_MONO = 1;
{$EXTERNALSYM D3DCOLOR_MONO}
D3DCOLOR_RGB = 2;
{$EXTERNALSYM D3DCOLOR_RGB}
(*
* Options for clearing
*)
const
D3DCLEAR_TARGET = $00000001; (* Clear target surface *)
{$EXTERNALSYM D3DCLEAR_TARGET}
D3DCLEAR_ZBUFFER = $00000002; (* Clear target z buffer *)
{$EXTERNALSYM D3DCLEAR_ZBUFFER}
{$IFDEF DIRECT3D_VERSION_6}
D3DCLEAR_STENCIL = $00000004; (* Clear stencil planes *)
{$EXTERNALSYM D3DCLEAR_STENCIL}
{$ENDIF} // DIRECT3D_VERSION_6
(*
* Execute buffers are allocated via Direct3D. These buffers may then
* be filled by the application with instructions to execute along with
* vertex data.
*)
(*
* Supported op codes for execute instructions.
*)
type
PD3DOpcode = ^TD3DOpcode;
_D3DOPCODE = (
D3DOP_INVALID_0,
D3DOP_POINT,
D3DOP_LINE,
D3DOP_TRIANGLE,
D3DOP_MATRIXLOAD,
D3DOP_MATRIXMULTIPLY,
D3DOP_STATETRANSFORM,
D3DOP_STATELIGHT,
D3DOP_STATERENDER,
D3DOP_PROCESSVERTICES,
D3DOP_TEXTURELOAD,
D3DOP_EXIT,
D3DOP_BRANCHFORWARD,
D3DOP_SPAN,
D3DOP_SETSTATUS);
{$EXTERNALSYM _D3DOPCODE}
D3DOPCODE = _D3DOPCODE;
{$EXTERNALSYM D3DOPCODE}
TD3DOpcode = _D3DOPCODE;
PD3DInstruction = ^TD3DInstruction;
_D3DINSTRUCTION = packed record
bOpcode: Byte; (* Instruction opcode *)
bSize: Byte; (* Size of each instruction data unit *)
wCount: Word; (* Count of instruction data units to follow *)
end;
{$EXTERNALSYM _D3DINSTRUCTION}
D3DINSTRUCTION = _D3DINSTRUCTION;
{$EXTERNALSYM D3DINSTRUCTION}
TD3DInstruction = _D3DINSTRUCTION;
(*
* Structure for texture loads
*)
PD3DTextureLoad = ^TD3DTextureLoad;
_D3DTEXTURELOAD = packed record
hDestTexture: TD3DTextureHandle;
hSrcTexture: TD3DTextureHandle;
end;
{$EXTERNALSYM _D3DTEXTURELOAD}
D3DTEXTURELOAD = _D3DTEXTURELOAD;
{$EXTERNALSYM D3DTEXTURELOAD}
TD3DTextureLoad = _D3DTEXTURELOAD;
(*
* Structure for picking
*)
PD3DPickRecord = ^TD3DPickRecord;
_D3DPICKRECORD = packed record
bOpcode: Byte;
bPad: Byte;
dwOffset: DWORD;
dvZ: TD3DValue;
end;
{$EXTERNALSYM _D3DPICKRECORD}
D3DPICKRECORD = _D3DPICKRECORD;
{$EXTERNALSYM D3DPICKRECORD}
TD3DPickRecord = _D3DPICKRECORD;
(*
* The following defines the rendering states which can be set in the
* execute buffer.
*)
{$IFDEF DIRECT3D_VERSION_LESS_8}
PD3DShadeMode = ^TD3DShadeMode;
_D3DSHADEMODE = (
D3DSHADE_INVALID_0,
D3DSHADE_FLAT,
D3DSHADE_GOURAUD,
D3DSHADE_PHONG);
{$EXTERNALSYM _D3DSHADEMODE}
D3DSHADEMODE = _D3DSHADEMODE;
{$EXTERNALSYM D3DSHADEMODE}
TD3DShadeMode = _D3DSHADEMODE;
PD3DFillMode = ^TD3DFillMode;
_D3DFILLMODE = (
D3DFILL_INVALID_0,
D3DFILL_POINT,
D3DFILL_WIREFRAME,
D3DFILL_SOLID);
{$EXTERNALSYM _D3DFILLMODE}
D3DFILLMODE = _D3DFILLMODE;
{$EXTERNALSYM D3DFILLMODE}
TD3DFillMode = _D3DFILLMODE;
PD3DLinePattern = ^TD3DLinePattern;
_D3DLINEPATTERN = packed record
wRepeatFactor: WORD;
wLinePattern: WORD;
end;
{$EXTERNALSYM _D3DLINEPATTERN}
D3DLINEPATTERN = _D3DLINEPATTERN;
{$EXTERNALSYM D3DLINEPATTERN}
TD3DLinePattern = _D3DLINEPATTERN;
{$ENDIF} // DIRECT3D_VERSION_LESS_8
PD3DTextureFilter = ^TD3DTextureFilter;
_D3DTEXTUREFILTER = (
D3DFILTER_INVALID_0,
D3DFILTER_NEAREST,
D3DFILTER_LINEAR,
D3DFILTER_MIPNEAREST,
D3DFILTER_MIPLINEAR,
D3DFILTER_LINEARMIPNEAREST,
D3DFILTER_LINEARMIPLINEAR);
{$EXTERNALSYM _D3DTEXTUREFILTER}
D3DTEXTUREFILTER = _D3DTEXTUREFILTER;
{$EXTERNALSYM D3DTEXTUREFILTER}
TD3DTextureFilter = _D3DTEXTUREFILTER;
{$IFDEF DIRECT3D_VERSION_LESS_8}
PD3DBlend = ^TD3DBlend;
_D3DBLEND = (
D3DBLEND_INVALID_0,
D3DBLEND_ZERO,
D3DBLEND_ONE,
D3DBLEND_SRCCOLOR,
D3DBLEND_INVSRCCOLOR,
D3DBLEND_SRCALPHA,
D3DBLEND_INVSRCALPHA,
D3DBLEND_DESTALPHA,
D3DBLEND_INVDESTALPHA,
D3DBLEND_DESTCOLOR,
D3DBLEND_INVDESTCOLOR,
D3DBLEND_SRCALPHASAT,
D3DBLEND_BOTHSRCALPHA,
D3DBLEND_BOTHINVSRCALPHA);
{$EXTERNALSYM _D3DBLEND}
D3DBLEND = _D3DBLEND;
{$EXTERNALSYM D3DBLEND}
TD3DBlend = _D3DBLEND;
{$ENDIF} // DIRECT3D_VERSION_LESS_8
PD3DTextureBlend = ^TD3DTextureBlend;
_D3DTEXTUREBLEND = (
D3DTBLEND_INVALID_0,
D3DTBLEND_DECAL,
D3DTBLEND_MODULATE,
D3DTBLEND_DECALALPHA,
D3DTBLEND_MODULATEALPHA,
D3DTBLEND_DECALMASK,
D3DTBLEND_MODULATEMASK,
D3DTBLEND_COPY
{$IFDEF DIRECT3D_VERSION_5},
D3DTBLEND_ADD
{$ENDIF} // DIRECT3D_VERSION_5
);
{$EXTERNALSYM _D3DTEXTUREBLEND}
D3DTEXTUREBLEND = _D3DTEXTUREBLEND;
{$EXTERNALSYM D3DTEXTUREBLEND}
TD3DTextureBlend = _D3DTEXTUREBLEND;
{$IFDEF DIRECT3D_VERSION_LESS_8}
PD3DTextureAddress = ^TD3DTextureAddress;
_D3DTEXTUREADDRESS = (
D3DTADDRESS_INVALID_0,
D3DTADDRESS_WRAP,
D3DTADDRESS_MIRROR,
D3DTADDRESS_CLAMP
{$IFDEF DIRECT3D_VERSION_5},
D3DTADDRESS_BORDER
{$ENDIF} // DIRECT3D_VERSION_5
);
{$EXTERNALSYM _D3DTEXTUREADDRESS}
D3DTEXTUREADDRESS = _D3DTEXTUREADDRESS;
{$EXTERNALSYM D3DTEXTUREADDRESS}
TD3DTextureAddress = _D3DTEXTUREADDRESS;
PD3DCull = ^TD3DCull;
_D3DCULL = (
D3DCULL_INVALID_0,
D3DCULL_NONE,
D3DCULL_CW,
D3DCULL_CCW);
{$EXTERNALSYM _D3DCULL}
D3DCULL = _D3DCULL;
{$EXTERNALSYM D3DCULL}
TD3DCull = _D3DCULL;
PD3DCmpFunc = ^TD3DCmpFunc;
_D3DCMPFUNC = (
D3DCMP_INVALID_0,
D3DCMP_NEVER,
D3DCMP_LESS,
D3DCMP_EQUAL,
D3DCMP_LESSEQUAL,
D3DCMP_GREATER,
D3DCMP_NOTEQUAL,
D3DCMP_GREATEREQUAL,
D3DCMP_ALWAYS);
{$EXTERNALSYM _D3DCMPFUNC}
D3DCMPFUNC = _D3DCMPFUNC;
{$EXTERNALSYM D3DCMPFUNC}
TD3DCmpFunc = _D3DCMPFUNC;
{$IFDEF DIRECT3D_VERSION_6}
PD3DStencilOp = ^TD3DStencilOp;
_D3DSTENCILOP = (
D3DSTENCILOP_INVALID_0,
D3DSTENCILOP_KEEP,
D3DSTENCILOP_ZERO,
D3DSTENCILOP_REPLACE,
D3DSTENCILOP_INCRSAT,
D3DSTENCILOP_DECRSAT,
D3DSTENCILOP_INVERT,
D3DSTENCILOP_INCR,
D3DSTENCILOP_DECR);
{$EXTERNALSYM _D3DSTENCILOP}
D3DSTENCILOP = _D3DSTENCILOP;
{$EXTERNALSYM D3DSTENCILOP}
TD3DStencilOp = _D3DSTENCILOP;
{$ENDIF} // DIRECT3D_VERSION_6
PD3DFogMode = ^TD3DFogMode;
_D3DFOGMODE = (
D3DFOG_NONE,
D3DFOG_EXP,
D3DFOG_EXP2
{$IFDEF DIRECT3D_VERSION_5},
D3DFOG_LINEAR
{$ENDIF} // DIRECT3D_VERSION_5
);
{$EXTERNALSYM _D3DFOGMODE}
D3DFOGMODE = _D3DFOGMODE;
{$EXTERNALSYM D3DFOGMODE}
TD3DFogMode = _D3DFOGMODE;
{$IFDEF DIRECT3D_VERSION_6}
PD3DZBufferType = ^TD3DZBufferType;
_D3DZBUFFERTYPE = (
D3DZB_FALSE,
D3DZB_TRUE, // Z buffering
D3DZB_USEW); // W buffering
{$EXTERNALSYM _D3DZBUFFERTYPE}
D3DZBUFFERTYPE = _D3DZBUFFERTYPE;
{$EXTERNALSYM D3DZBUFFERTYPE}
TD3DZBufferType = _D3DZBUFFERTYPE;
{$ENDIF} // DIRECT3D_VERSION_6
{$ENDIF} // DIRECT3D_VERSION_LESS_8
{$IFDEF DIRECT3D_VERSION_5}
PD3DAntialiasMode = ^TD3DAntialiasMode;
_D3DANTIALIASMODE = (
D3DANTIALIAS_NONE,
D3DANTIALIAS_SORTDEPENDENT,
D3DANTIALIAS_SORTINDEPENDENT);
{$EXTERNALSYM _D3DANTIALIASMODE}
D3DANTIALIASMODE = _D3DANTIALIASMODE;
{$EXTERNALSYM D3DANTIALIASMODE}
TD3DAntialiasMode = _D3DANTIALIASMODE;
// Vertex types supported by Direct3D
PD3DVertexType = ^TD3DVertexType;
_D3DVERTEXTYPE = (
D3DVT_INVALID_0,
D3DVT_VERTEX,
D3DVT_LVERTEX,
D3DVT_TLVERTEX);
{$EXTERNALSYM _D3DVERTEXTYPE}
D3DVERTEXTYPE = _D3DVERTEXTYPE;
{$EXTERNALSYM D3DVERTEXTYPE}
TD3DVertexType = _D3DVERTEXTYPE;
{$IFDEF DIRECT3D_VERSION_LESS_8}
// Primitives supported by draw-primitive API
PD3DPrimitiveType = ^TD3DPrimitiveType;
_D3DPRIMITIVETYPE = (
D3DPT_INVALID_0,
D3DPT_POINTLIST,
D3DPT_LINELIST,
D3DPT_LINESTRIP,
D3DPT_TRIANGLELIST,
D3DPT_TRIANGLESTRIP,
D3DPT_TRIANGLEFAN);
{$EXTERNALSYM _D3DPRIMITIVETYPE}
D3DPRIMITIVETYPE = _D3DPRIMITIVETYPE;
{$EXTERNALSYM D3DPRIMITIVETYPE}
TD3DPrimitiveType = _D3DPRIMITIVETYPE;
{$ENDIF} // DIRECT3D_VERSION_LESS_8
{$ENDIF} // DIRECT3D_VERSION_5
(*
* Amount to add to a state to generate the override for that state.
*)
const
D3DSTATE_OVERRIDE_BIAS = 256;
{$EXTERNALSYM D3DSTATE_OVERRIDE_BIAS}
(*
* A state which sets the override flag for the specified state type.
*)
function D3DSTATE_OVERRIDE(StateType: DWORD): DWORD;
{$EXTERNALSYM D3DSTATE_OVERRIDE}
{$IFDEF DIRECT3D_VERSION_8}
//
// legacy transform state names
//
{$ENDIF} // DIRECT3D_VERSION_8
type
PD3DTransformStateType = ^TD3DTransformStateType;
TD3DTransformStateType = DWORD;
const
D3DTRANSFORMSTATE_WORLD = TD3DTransformStateType(1);
{$EXTERNALSYM D3DTRANSFORMSTATE_WORLD}
D3DTRANSFORMSTATE_VIEW = TD3DTransformStateType(2);
{$EXTERNALSYM D3DTRANSFORMSTATE_VIEW}
D3DTRANSFORMSTATE_PROJECTION = TD3DTransformStateType(3);
{$EXTERNALSYM D3DTRANSFORMSTATE_PROJECTION}
{$IFDEF DIRECT3D_VERSION_7}
D3DTRANSFORMSTATE_WORLD1 = TD3DTransformStateType(4); // 2nd matrix to blend
{$EXTERNALSYM D3DTRANSFORMSTATE_WORLD1}
D3DTRANSFORMSTATE_WORLD2 = TD3DTransformStateType(5); // 3rd matrix to blend
{$EXTERNALSYM D3DTRANSFORMSTATE_WORLD2}
D3DTRANSFORMSTATE_WORLD3 = TD3DTransformStateType(6); // 4th matrix to blend
{$EXTERNALSYM D3DTRANSFORMSTATE_WORLD3}
D3DTRANSFORMSTATE_TEXTURE0 = TD3DTransformStateType(16);
{$EXTERNALSYM D3DTRANSFORMSTATE_TEXTURE0}
D3DTRANSFORMSTATE_TEXTURE1 = TD3DTransformStateType(17);
{$EXTERNALSYM D3DTRANSFORMSTATE_TEXTURE1}
D3DTRANSFORMSTATE_TEXTURE2 = TD3DTransformStateType(18);
{$EXTERNALSYM D3DTRANSFORMSTATE_TEXTURE2}
D3DTRANSFORMSTATE_TEXTURE3 = TD3DTransformStateType(19);
{$EXTERNALSYM D3DTRANSFORMSTATE_TEXTURE3}
D3DTRANSFORMSTATE_TEXTURE4 = TD3DTransformStateType(20);
{$EXTERNALSYM D3DTRANSFORMSTATE_TEXTURE4}
D3DTRANSFORMSTATE_TEXTURE5 = TD3DTransformStateType(21);
{$EXTERNALSYM D3DTRANSFORMSTATE_TEXTURE5}
D3DTRANSFORMSTATE_TEXTURE6 = TD3DTransformStateType(22);
{$EXTERNALSYM D3DTRANSFORMSTATE_TEXTURE6}
D3DTRANSFORMSTATE_TEXTURE7 = TD3DTransformStateType(23);
{$EXTERNALSYM D3DTRANSFORMSTATE_TEXTURE7}
{$ENDIF} // DIRECT3D_VERSION_7
type
PD3DLightStateType = ^TD3DLightStateType;
_D3DLIGHTSTATETYPE = (
D3DLIGHTSTATE_INVALID_0,
D3DLIGHTSTATE_MATERIAL,
D3DLIGHTSTATE_AMBIENT,
D3DLIGHTSTATE_COLORMODEL,
D3DLIGHTSTATE_FOGMODE,
D3DLIGHTSTATE_FOGSTART,
D3DLIGHTSTATE_FOGEND,
D3DLIGHTSTATE_FOGDENSITY
{$IFDEF DIRECT3D_VERSION_6},
D3DLIGHTSTATE_COLORVERTEX
{$EXTERNALSYM _D3DLIGHTSTATETYPE}
{$ENDIF} // DIRECT3D_VERSION_6
);
D3DLIGHTSTATETYPE = _D3DLIGHTSTATETYPE;
{$EXTERNALSYM D3DLIGHTSTATETYPE}
TD3DLightStateType = _D3DLIGHTSTATETYPE;
type
PD3DRenderStateType = ^TD3DRenderStateType;
TD3DRenderStateType = DWORD;
const
D3DRENDERSTATE_ANTIALIAS = 2; (* D3DANTIALIASMODE *)
{$EXTERNALSYM D3DRENDERSTATE_ANTIALIAS}
D3DRENDERSTATE_TEXTUREPERSPECTIVE = 4; (* TRUE for perspective correction *)
{$EXTERNALSYM D3DRENDERSTATE_TEXTUREPERSPECTIVE}
D3DRENDERSTATE_ZENABLE = 7; (* D3DZBUFFERTYPE (or TRUE/FALSE for legacy) *)
{$EXTERNALSYM D3DRENDERSTATE_ZENABLE}
D3DRENDERSTATE_FILLMODE = 8; (* D3DFILL_MODE *)
{$EXTERNALSYM D3DRENDERSTATE_FILLMODE}
D3DRENDERSTATE_SHADEMODE = 9; (* D3DSHADEMODE *)
{$EXTERNALSYM D3DRENDERSTATE_SHADEMODE}
D3DRENDERSTATE_LINEPATTERN = 10; (* D3DLINEPATTERN *)
{$EXTERNALSYM D3DRENDERSTATE_LINEPATTERN}
D3DRENDERSTATE_ZWRITEENABLE = 14; (* TRUE to enable z writes *)
{$EXTERNALSYM D3DRENDERSTATE_ZWRITEENABLE}
D3DRENDERSTATE_ALPHATESTENABLE = 15; (* TRUE to enable alpha tests *)
{$EXTERNALSYM D3DRENDERSTATE_ALPHATESTENABLE}
D3DRENDERSTATE_LASTPIXEL = 16; (* TRUE for last-pixel on lines *)
{$EXTERNALSYM D3DRENDERSTATE_LASTPIXEL}
D3DRENDERSTATE_SRCBLEND = 19; (* D3DBLEND *)
{$EXTERNALSYM D3DRENDERSTATE_SRCBLEND}
D3DRENDERSTATE_DESTBLEND = 20; (* D3DBLEND *)
{$EXTERNALSYM D3DRENDERSTATE_DESTBLEND}
D3DRENDERSTATE_CULLMODE = 22; (* D3DCULL *)
{$EXTERNALSYM D3DRENDERSTATE_CULLMODE}
D3DRENDERSTATE_ZFUNC = 23; (* D3DCMPFUNC *)
{$EXTERNALSYM D3DRENDERSTATE_ZFUNC}
D3DRENDERSTATE_ALPHAREF = 24; (* D3DFIXED *)
{$EXTERNALSYM D3DRENDERSTATE_ALPHAREF}
D3DRENDERSTATE_ALPHAFUNC = 25; (* D3DCMPFUNC *)
{$EXTERNALSYM D3DRENDERSTATE_ALPHAFUNC}
D3DRENDERSTATE_DITHERENABLE = 26; (* TRUE to enable dithering *)
{$EXTERNALSYM D3DRENDERSTATE_DITHERENABLE}
{$IFDEF DIRECT3D_VERSION_5}
D3DRENDERSTATE_ALPHABLENDENABLE = 27; (* TRUE to enable alpha blending *)
{$EXTERNALSYM D3DRENDERSTATE_ALPHABLENDENABLE}
{$ENDIF} // DIRECT3D_VERSION_5
D3DRENDERSTATE_FOGENABLE = 28; (* TRUE to enable fog blending *)
{$EXTERNALSYM D3DRENDERSTATE_FOGENABLE}
D3DRENDERSTATE_SPECULARENABLE = 29; (* TRUE to enable specular *)
{$EXTERNALSYM D3DRENDERSTATE_SPECULARENABLE}
D3DRENDERSTATE_ZVISIBLE = 30; (* TRUE to enable z checking *)
{$EXTERNALSYM D3DRENDERSTATE_ZVISIBLE}
D3DRENDERSTATE_STIPPLEDALPHA = 33; (* TRUE to enable stippled alpha (RGB device only) *)
{$EXTERNALSYM D3DRENDERSTATE_STIPPLEDALPHA}
D3DRENDERSTATE_FOGCOLOR = 34; (* D3DCOLOR *)
{$EXTERNALSYM D3DRENDERSTATE_FOGCOLOR}
D3DRENDERSTATE_FOGTABLEMODE = 35; (* D3DFOGMODE *)
{$EXTERNALSYM D3DRENDERSTATE_FOGTABLEMODE}
{$IFDEF DIRECT3D_VERSION_7}
D3DRENDERSTATE_FOGSTART = 36; (* Fog start (for both vertex and pixel fog) *)
{$EXTERNALSYM D3DRENDERSTATE_FOGSTART}
D3DRENDERSTATE_FOGEND = 37; (* Fog end *)
{$EXTERNALSYM D3DRENDERSTATE_FOGEND}
D3DRENDERSTATE_FOGDENSITY = 38; (* Fog density *)
{$EXTERNALSYM D3DRENDERSTATE_FOGDENSITY}
{$ENDIF} // DIRECT3D_VERSION_7
{$IFDEF DIRECT3D_VERSION_5}
D3DRENDERSTATE_EDGEANTIALIAS = 40; (* TRUE to enable edge antialiasing *)
{$EXTERNALSYM D3DRENDERSTATE_EDGEANTIALIAS}
D3DRENDERSTATE_COLORKEYENABLE = 41; (* TRUE to enable source colorkeyed textures *)
{$EXTERNALSYM D3DRENDERSTATE_COLORKEYENABLE}
D3DRENDERSTATE_ZBIAS = 47; (* LONG Z bias *)
{$EXTERNALSYM D3DRENDERSTATE_ZBIAS}
D3DRENDERSTATE_RANGEFOGENABLE = 48; (* Enables range-based fog *)
{$EXTERNALSYM D3DRENDERSTATE_RANGEFOGENABLE}
{$ENDIF} // DIRECT3D_VERSION_5
{$IFDEF DIRECT3D_VERSION_6}
D3DRENDERSTATE_STENCILENABLE = 52; (* BOOL enable/disable stenciling *)
{$EXTERNALSYM D3DRENDERSTATE_STENCILENABLE}
D3DRENDERSTATE_STENCILFAIL = 53; (* D3DSTENCILOP to do if stencil test fails *)
{$EXTERNALSYM D3DRENDERSTATE_STENCILFAIL}
D3DRENDERSTATE_STENCILZFAIL = 54; (* D3DSTENCILOP to do if stencil test passes and Z test fails *)
{$EXTERNALSYM D3DRENDERSTATE_STENCILZFAIL}
D3DRENDERSTATE_STENCILPASS = 55; (* D3DSTENCILOP to do if both stencil and Z tests pass *)
{$EXTERNALSYM D3DRENDERSTATE_STENCILPASS}
D3DRENDERSTATE_STENCILFUNC = 56; (* D3DCMPFUNC fn. Stencil Test passes if ((ref & mask) stencilfn (stencil & mask)) is true *)
{$EXTERNALSYM D3DRENDERSTATE_STENCILFUNC}
D3DRENDERSTATE_STENCILREF = 57; (* Reference value used in stencil test *)
{$EXTERNALSYM D3DRENDERSTATE_STENCILREF}
D3DRENDERSTATE_STENCILMASK = 58; (* Mask value used in stencil test *)
{$EXTERNALSYM D3DRENDERSTATE_STENCILMASK}
D3DRENDERSTATE_STENCILWRITEMASK = 59; (* Write mask applied to values written to stencil buffer *)
{$EXTERNALSYM D3DRENDERSTATE_STENCILWRITEMASK}
D3DRENDERSTATE_TEXTUREFACTOR = 60; (* D3DCOLOR used for multi-texture blend *)
{$EXTERNALSYM D3DRENDERSTATE_TEXTUREFACTOR}
{$ENDIF} // DIRECT3D_VERSION_6
{$IFDEF DIRECT3D_VERSION_6}
(*
* 128 values [128; 255] are reserved for texture coordinate wrap flags.
* These are constructed with the D3DWRAP_U and D3DWRAP_V macros. Using
* a flags word preserves forward compatibility with texture coordinates
* that are >2D.
*)
D3DRENDERSTATE_WRAP0 = 128; (* wrap for 1st texture coord. set *)
{$EXTERNALSYM D3DRENDERSTATE_WRAP0}
D3DRENDERSTATE_WRAP1 = 129; (* wrap for 2nd texture coord. set *)
{$EXTERNALSYM D3DRENDERSTATE_WRAP1}
D3DRENDERSTATE_WRAP2 = 130; (* wrap for 3rd texture coord. set *)
{$EXTERNALSYM D3DRENDERSTATE_WRAP2}
D3DRENDERSTATE_WRAP3 = 131; (* wrap for 4th texture coord. set *)
{$EXTERNALSYM D3DRENDERSTATE_WRAP3}
D3DRENDERSTATE_WRAP4 = 132; (* wrap for 5th texture coord. set *)
{$EXTERNALSYM D3DRENDERSTATE_WRAP4}
D3DRENDERSTATE_WRAP5 = 133; (* wrap for 6th texture coord. set *)
{$EXTERNALSYM D3DRENDERSTATE_WRAP5}
D3DRENDERSTATE_WRAP6 = 134; (* wrap for 7th texture coord. set *)
{$EXTERNALSYM D3DRENDERSTATE_WRAP6}
D3DRENDERSTATE_WRAP7 = 135; (* wrap for 8th texture coord. set *)
{$EXTERNALSYM D3DRENDERSTATE_WRAP7}
{$ENDIF} // DIRECT3D_VERSION_6
{$IFDEF DIRECT3D_VERSION_7}
D3DRENDERSTATE_CLIPPING = 136;
{$EXTERNALSYM D3DRENDERSTATE_CLIPPING}
D3DRENDERSTATE_LIGHTING = 137;
{$EXTERNALSYM D3DRENDERSTATE_LIGHTING}
D3DRENDERSTATE_EXTENTS = 138;
{$EXTERNALSYM D3DRENDERSTATE_EXTENTS}
D3DRENDERSTATE_AMBIENT = 139;
{$EXTERNALSYM D3DRENDERSTATE_AMBIENT}
D3DRENDERSTATE_FOGVERTEXMODE = 140;
{$EXTERNALSYM D3DRENDERSTATE_FOGVERTEXMODE}
D3DRENDERSTATE_COLORVERTEX = 141;
{$EXTERNALSYM D3DRENDERSTATE_COLORVERTEX}
D3DRENDERSTATE_LOCALVIEWER = 142;
{$EXTERNALSYM D3DRENDERSTATE_LOCALVIEWER}
D3DRENDERSTATE_NORMALIZENORMALS = 143;
{$EXTERNALSYM D3DRENDERSTATE_NORMALIZENORMALS}
D3DRENDERSTATE_COLORKEYBLENDENABLE = 144;
{$EXTERNALSYM D3DRENDERSTATE_COLORKEYBLENDENABLE}
D3DRENDERSTATE_DIFFUSEMATERIALSOURCE = 145;
{$EXTERNALSYM D3DRENDERSTATE_DIFFUSEMATERIALSOURCE}
D3DRENDERSTATE_SPECULARMATERIALSOURCE = 146;
{$EXTERNALSYM D3DRENDERSTATE_SPECULARMATERIALSOURCE}
D3DRENDERSTATE_AMBIENTMATERIALSOURCE = 147;
{$EXTERNALSYM D3DRENDERSTATE_AMBIENTMATERIALSOURCE}
D3DRENDERSTATE_EMISSIVEMATERIALSOURCE = 148;
{$EXTERNALSYM D3DRENDERSTATE_EMISSIVEMATERIALSOURCE}
D3DRENDERSTATE_VERTEXBLEND = 151;
{$EXTERNALSYM D3DRENDERSTATE_VERTEXBLEND}
D3DRENDERSTATE_CLIPPLANEENABLE = 152;
{$EXTERNALSYM D3DRENDERSTATE_CLIPPLANEENABLE}
{$ENDIF} // DIRECT3D_VERSION_7
//
// retired renderstates - not supported for DX7 interfaces
//
D3DRENDERSTATE_TEXTUREHANDLE = 1; (* Texture handle for legacy interfaces (Texture;Texture2) *)
{$EXTERNALSYM D3DRENDERSTATE_TEXTUREHANDLE}
D3DRENDERSTATE_TEXTUREADDRESS = 3; (* D3DTEXTUREADDRESS *)
{$EXTERNALSYM D3DRENDERSTATE_TEXTUREADDRESS}
D3DRENDERSTATE_WRAPU = 5; (* TRUE for wrapping in u *)
{$EXTERNALSYM D3DRENDERSTATE_WRAPU}
D3DRENDERSTATE_WRAPV = 6; (* TRUE for wrapping in v *)
{$EXTERNALSYM D3DRENDERSTATE_WRAPV}
D3DRENDERSTATE_MONOENABLE = 11; (* TRUE to enable mono rasterization *)
{$EXTERNALSYM D3DRENDERSTATE_MONOENABLE}
D3DRENDERSTATE_ROP2 = 12; (* ROP2 *)
{$EXTERNALSYM D3DRENDERSTATE_ROP2}
D3DRENDERSTATE_PLANEMASK = 13; (* DWORD physical plane mask *)
{$EXTERNALSYM D3DRENDERSTATE_PLANEMASK}
D3DRENDERSTATE_TEXTUREMAG = 17; (* D3DTEXTUREFILTER *)
{$EXTERNALSYM D3DRENDERSTATE_TEXTUREMAG}
D3DRENDERSTATE_TEXTUREMIN = 18; (* D3DTEXTUREFILTER *)
{$EXTERNALSYM D3DRENDERSTATE_TEXTUREMIN}
D3DRENDERSTATE_TEXTUREMAPBLEND = 21; (* D3DTEXTUREBLEND *)
{$EXTERNALSYM D3DRENDERSTATE_TEXTUREMAPBLEND}
D3DRENDERSTATE_SUBPIXEL = 31; (* TRUE to enable subpixel correction *)
{$EXTERNALSYM D3DRENDERSTATE_SUBPIXEL}
D3DRENDERSTATE_SUBPIXELX = 32; (* TRUE to enable correction in X only *)
{$EXTERNALSYM D3DRENDERSTATE_SUBPIXELX}
D3DRENDERSTATE_STIPPLEENABLE = 39; (* TRUE to enable stippling *)
{$EXTERNALSYM D3DRENDERSTATE_STIPPLEENABLE}
{$IFDEF DIRECT3D_VERSION_5}
D3DRENDERSTATE_BORDERCOLOR = 43; (* Border color for texturing w/border *)
{$EXTERNALSYM D3DRENDERSTATE_BORDERCOLOR}
D3DRENDERSTATE_TEXTUREADDRESSU = 44; (* Texture addressing mode for U coordinate *)
{$EXTERNALSYM D3DRENDERSTATE_TEXTUREADDRESSU}
D3DRENDERSTATE_TEXTUREADDRESSV = 45; (* Texture addressing mode for V coordinate *)
{$EXTERNALSYM D3DRENDERSTATE_TEXTUREADDRESSV}
D3DRENDERSTATE_MIPMAPLODBIAS = 46; (* D3DVALUE Mipmap LOD bias *)
{$EXTERNALSYM D3DRENDERSTATE_MIPMAPLODBIAS}
D3DRENDERSTATE_ANISOTROPY = 49; (* Max. anisotropy. 1 = no anisotropy *)
{$EXTERNALSYM D3DRENDERSTATE_ANISOTROPY}
{$ENDIF} // DIRECT3D_VERSION_5
D3DRENDERSTATE_FLUSHBATCH = 50; (* Explicit flush for DP batching (DX5 Only) *)
{$EXTERNALSYM D3DRENDERSTATE_FLUSHBATCH}
{$IFDEF DIRECT3D_VERSION_6}
D3DRENDERSTATE_TRANSLUCENTSORTINDEPENDENT=51; (* BOOL enable sort-independent transparency *)
{$EXTERNALSYM D3DRENDERSTATE_TRANSLUCENTSORTINDEPENDENT}
{$ENDIF} // DIRECT3D_VERSION_6
D3DRENDERSTATE_STIPPLEPATTERN00 = 64; (* Stipple pattern 01... *)
{$EXTERNALSYM D3DRENDERSTATE_STIPPLEPATTERN00}
D3DRENDERSTATE_STIPPLEPATTERN01 = 65;
{$EXTERNALSYM D3DRENDERSTATE_STIPPLEPATTERN01}
D3DRENDERSTATE_STIPPLEPATTERN02 = 66;
{$EXTERNALSYM D3DRENDERSTATE_STIPPLEPATTERN02}
D3DRENDERSTATE_STIPPLEPATTERN03 = 67;
{$EXTERNALSYM D3DRENDERSTATE_STIPPLEPATTERN03}
D3DRENDERSTATE_STIPPLEPATTERN04 = 68;
{$EXTERNALSYM D3DRENDERSTATE_STIPPLEPATTERN04}
D3DRENDERSTATE_STIPPLEPATTERN05 = 69;
{$EXTERNALSYM D3DRENDERSTATE_STIPPLEPATTERN05}
D3DRENDERSTATE_STIPPLEPATTERN06 = 70;
{$EXTERNALSYM D3DRENDERSTATE_STIPPLEPATTERN06}
D3DRENDERSTATE_STIPPLEPATTERN07 = 71;
{$EXTERNALSYM D3DRENDERSTATE_STIPPLEPATTERN07}
D3DRENDERSTATE_STIPPLEPATTERN08 = 72;
{$EXTERNALSYM D3DRENDERSTATE_STIPPLEPATTERN08}
D3DRENDERSTATE_STIPPLEPATTERN09 = 73;
{$EXTERNALSYM D3DRENDERSTATE_STIPPLEPATTERN09}
D3DRENDERSTATE_STIPPLEPATTERN10 = 74;
{$EXTERNALSYM D3DRENDERSTATE_STIPPLEPATTERN10}
D3DRENDERSTATE_STIPPLEPATTERN11 = 75;
{$EXTERNALSYM D3DRENDERSTATE_STIPPLEPATTERN11}
D3DRENDERSTATE_STIPPLEPATTERN12 = 76;
{$EXTERNALSYM D3DRENDERSTATE_STIPPLEPATTERN12}
D3DRENDERSTATE_STIPPLEPATTERN13 = 77;
{$EXTERNALSYM D3DRENDERSTATE_STIPPLEPATTERN13}
D3DRENDERSTATE_STIPPLEPATTERN14 = 78;
{$EXTERNALSYM D3DRENDERSTATE_STIPPLEPATTERN14}
D3DRENDERSTATE_STIPPLEPATTERN15 = 79;
{$EXTERNALSYM D3DRENDERSTATE_STIPPLEPATTERN15}
D3DRENDERSTATE_STIPPLEPATTERN16 = 80;
{$EXTERNALSYM D3DRENDERSTATE_STIPPLEPATTERN16}
D3DRENDERSTATE_STIPPLEPATTERN17 = 81;
{$EXTERNALSYM D3DRENDERSTATE_STIPPLEPATTERN17}
D3DRENDERSTATE_STIPPLEPATTERN18 = 82;
{$EXTERNALSYM D3DRENDERSTATE_STIPPLEPATTERN18}
D3DRENDERSTATE_STIPPLEPATTERN19 = 83;
{$EXTERNALSYM D3DRENDERSTATE_STIPPLEPATTERN19}
D3DRENDERSTATE_STIPPLEPATTERN20 = 84;
{$EXTERNALSYM D3DRENDERSTATE_STIPPLEPATTERN20}
D3DRENDERSTATE_STIPPLEPATTERN21 = 85;
{$EXTERNALSYM D3DRENDERSTATE_STIPPLEPATTERN21}
D3DRENDERSTATE_STIPPLEPATTERN22 = 86;
{$EXTERNALSYM D3DRENDERSTATE_STIPPLEPATTERN22}
D3DRENDERSTATE_STIPPLEPATTERN23 = 87;
{$EXTERNALSYM D3DRENDERSTATE_STIPPLEPATTERN23}
D3DRENDERSTATE_STIPPLEPATTERN24 = 88;
{$EXTERNALSYM D3DRENDERSTATE_STIPPLEPATTERN24}
D3DRENDERSTATE_STIPPLEPATTERN25 = 89;
{$EXTERNALSYM D3DRENDERSTATE_STIPPLEPATTERN25}
D3DRENDERSTATE_STIPPLEPATTERN26 = 90;
{$EXTERNALSYM D3DRENDERSTATE_STIPPLEPATTERN26}
D3DRENDERSTATE_STIPPLEPATTERN27 = 91;
{$EXTERNALSYM D3DRENDERSTATE_STIPPLEPATTERN27}
D3DRENDERSTATE_STIPPLEPATTERN28 = 92;
{$EXTERNALSYM D3DRENDERSTATE_STIPPLEPATTERN28}
D3DRENDERSTATE_STIPPLEPATTERN29 = 93;
{$EXTERNALSYM D3DRENDERSTATE_STIPPLEPATTERN29}
D3DRENDERSTATE_STIPPLEPATTERN30 = 94;
{$EXTERNALSYM D3DRENDERSTATE_STIPPLEPATTERN30}
D3DRENDERSTATE_STIPPLEPATTERN31 = 95;
{$EXTERNALSYM D3DRENDERSTATE_STIPPLEPATTERN31}
//
// retired renderstate names - the values are still used under new naming conventions
//
D3DRENDERSTATE_FOGTABLESTART = 36; (* Fog table start *)
{$EXTERNALSYM D3DRENDERSTATE_FOGTABLESTART}
D3DRENDERSTATE_FOGTABLEEND = 37; (* Fog table end *)
{$EXTERNALSYM D3DRENDERSTATE_FOGTABLEEND}
D3DRENDERSTATE_FOGTABLEDENSITY = 38; (* Fog table density *)
{$EXTERNALSYM D3DRENDERSTATE_FOGTABLEDENSITY}
{$IFDEF DIRECT3D_VERSION_LESS_8}
type
// Values for material source
PD3DMateralColorSource = ^TD3DMateralColorSource;
_D3DMATERIALCOLORSOURCE = (
D3DMCS_MATERIAL, // Color from material is used
D3DMCS_COLOR1, // Diffuse vertex color is used
D3DMCS_COLOR2 // Specular vertex color is used
);
{$EXTERNALSYM _D3DMATERIALCOLORSOURCE}
D3DMATERIALCOLORSOURCE = _D3DMATERIALCOLORSOURCE;
{$EXTERNALSYM D3DMATERIALCOLORSOURCE}
TD3DMateralColorSource = _D3DMATERIALCOLORSOURCE;
{$IFDEF DIRECT3D_VERSION_5}
const
// For back-compatibility with legacy compilations
D3DRENDERSTATE_BLENDENABLE = D3DRENDERSTATE_ALPHABLENDENABLE;
{$EXTERNALSYM D3DRENDERSTATE_BLENDENABLE}
{$ENDIF} // DIRECT3D_VERSION_5
{$IFDEF DIRECT3D_VERSION_6}
// Bias to apply to the texture coordinate set to apply a wrap to.
D3DRENDERSTATE_WRAPBIAS = 128;
{$EXTERNALSYM D3DRENDERSTATE_WRAPBIAS}
(* Flags to construct the WRAP render states *)
D3DWRAP_U = $00000001;
{$EXTERNALSYM D3DWRAP_U}
D3DWRAP_V = $00000002;
{$EXTERNALSYM D3DWRAP_V}
{$ENDIF} // DIRECT3D_VERSION_6
{$IFDEF DIRECT3D_VERSION_7}
(* Flags to construct the WRAP render states for 1D thru 4D texture coordinates *)
D3DWRAPCOORD_0 = $00000001; // same as D3DWRAP_U
{$EXTERNALSYM D3DWRAPCOORD_0}
D3DWRAPCOORD_1 = $00000002; // same as D3DWRAP_V
{$EXTERNALSYM D3DWRAPCOORD_1}
D3DWRAPCOORD_2 = $00000004;
{$EXTERNALSYM D3DWRAPCOORD_2}
D3DWRAPCOORD_3 = $00000008;
{$EXTERNALSYM D3DWRAPCOORD_3}
{$ENDIF} // DIRECT3D_VERSION_7
{$ENDIF} // DIRECT3D_VERSION_LESS_8
function D3DRENDERSTATE_STIPPLEPATTERN(y: Integer): TD3DRenderStateType;
{$EXTERNALSYM D3DRENDERSTATE_STIPPLEPATTERN}
type
PD3DState = ^TD3DState;
_D3DSTATE = packed record
case Integer of
{$IFDEF DIRECT3D_VERSION_LESS_8}
0: (
dtstTransformStateType: TD3DTransformStateType;
);
{$ENDIF} // DIRECT3D_VERSION_LESS_8
1: (
dlstLightStateType: TD3DLightStateType;
dwArg: array [0..0] of DWORD;
);
2: (
drstRenderStateType: TD3DRenderStateType;
dvArg: array [0..0] of TD3DValue;
);
end;
{$EXTERNALSYM _D3DSTATE}
D3DSTATE = _D3DSTATE;
{$EXTERNALSYM D3DSTATE}
TD3DState = _D3DSTATE;
(*
* Operation used to load matrices
* hDstMat = hSrcMat
*)
PD3DMatrixLoad = ^TD3DMatrixLoad;
_D3DMATRIXLOAD = packed record
hDestMatrix: TD3DMatrixHandle; (* Destination matrix *)
hSrcMatrix: TD3DMatrixHandle; (* Source matrix *)
end;
{$EXTERNALSYM _D3DMATRIXLOAD}
D3DMATRIXLOAD = _D3DMATRIXLOAD;
{$EXTERNALSYM D3DMATRIXLOAD}
TD3DMatrixLoad = _D3DMATRIXLOAD;
(*
* Operation used to multiply matrices
* hDstMat = hSrcMat1 * hSrcMat2
*)
PD3DMatrixMultiply = ^TD3DMatrixMultiply;
_D3DMATRIXMULTIPLY = packed record
hDestMatrix: TD3DMatrixHandle; (* Destination matrix *)
hSrcMatrix1: TD3DMatrixHandle; (* First source matrix *)
hSrcMatrix2: TD3DMatrixHandle; (* Second source matrix *)
end;
{$EXTERNALSYM _D3DMATRIXMULTIPLY}
D3DMATRIXMULTIPLY = _D3DMATRIXMULTIPLY;
{$EXTERNALSYM D3DMATRIXMULTIPLY}
TD3DMatrixMultiply = _D3DMATRIXMULTIPLY;
(*
* Operation used to transform and light vertices.
*)
PD3DProcessVertices = ^TD3DProcessVertices;
_D3DPROCESSVERTICES = packed record
dwFlags: DWORD; (* Do we transform or light or just copy? *)
wStart: WORD; (* Index to first vertex in source *)
wDest: WORD; (* Index to first vertex in local buffer *)
dwCount: DWORD; (* Number of vertices to be processed *)
dwReserved: DWORD; (* Must be zero *)
end;
{$EXTERNALSYM _D3DPROCESSVERTICES}
D3DPROCESSVERTICES = _D3DPROCESSVERTICES;
{$EXTERNALSYM D3DPROCESSVERTICES}
TD3DProcessVertices = _D3DPROCESSVERTICES;
const
D3DPROCESSVERTICES_TRANSFORMLIGHT = $00000000;
{$EXTERNALSYM D3DPROCESSVERTICES_TRANSFORMLIGHT}
D3DPROCESSVERTICES_TRANSFORM = $00000001;
{$EXTERNALSYM D3DPROCESSVERTICES_TRANSFORM}
D3DPROCESSVERTICES_COPY = $00000002;
{$EXTERNALSYM D3DPROCESSVERTICES_COPY}
D3DPROCESSVERTICES_OPMASK = $00000007;
{$EXTERNALSYM D3DPROCESSVERTICES_OPMASK}
D3DPROCESSVERTICES_UPDATEEXTENTS = $00000008;
{$EXTERNALSYM D3DPROCESSVERTICES_UPDATEEXTENTS}
D3DPROCESSVERTICES_NOCOLOR = $00000010;
{$EXTERNALSYM D3DPROCESSVERTICES_NOCOLOR}
{$IFDEF DIRECT3D_VERSION_6}
{$IFDEF DIRECT3D_VERSION_LESS_8}
(*
* State enumerants for per-stage texture processing.
*)
type
PD3DTextureStageStateType = ^TD3DTextureStageStateType;
TD3DTextureStageStateType = DWORD;
const
D3DTSS_COLOROP = 1; (* D3DTEXTUREOP - per-stage blending controls for color channels *)
{$EXTERNALSYM D3DTSS_COLOROP}
D3DTSS_COLORARG1 = 2; (* D3DTA_* (texture arg) *)
{$EXTERNALSYM D3DTSS_COLORARG1}
D3DTSS_COLORARG2 = 3; (* D3DTA_* (texture arg) *)
{$EXTERNALSYM D3DTSS_COLORARG2}
D3DTSS_ALPHAOP = 4; (* D3DTEXTUREOP - per-stage blending controls for alpha channel *)
{$EXTERNALSYM D3DTSS_ALPHAOP}
D3DTSS_ALPHAARG1 = 5; (* D3DTA_* (texture arg) *)
{$EXTERNALSYM D3DTSS_ALPHAARG1}
D3DTSS_ALPHAARG2 = 6; (* D3DTA_* (texture arg) *)
{$EXTERNALSYM D3DTSS_ALPHAARG2}
D3DTSS_BUMPENVMAT00 = 7; (* D3DVALUE (bump mapping matrix) *)
{$EXTERNALSYM D3DTSS_BUMPENVMAT00}
D3DTSS_BUMPENVMAT01 = 8; (* D3DVALUE (bump mapping matrix) *)
{$EXTERNALSYM D3DTSS_BUMPENVMAT01}
D3DTSS_BUMPENVMAT10 = 9; (* D3DVALUE (bump mapping matrix) *)
{$EXTERNALSYM D3DTSS_BUMPENVMAT10}
D3DTSS_BUMPENVMAT11 = 10; (* D3DVALUE (bump mapping matrix) *)
{$EXTERNALSYM D3DTSS_BUMPENVMAT11}
D3DTSS_TEXCOORDINDEX = 11; (* identifies which set of texture coordinates index this texture *)
{$EXTERNALSYM D3DTSS_TEXCOORDINDEX}
D3DTSS_ADDRESS = 12; (* D3DTEXTUREADDRESS for both coordinates *)
{$EXTERNALSYM D3DTSS_ADDRESS}
D3DTSS_ADDRESSU = 13; (* D3DTEXTUREADDRESS for U coordinate *)
{$EXTERNALSYM D3DTSS_ADDRESSU}
D3DTSS_ADDRESSV = 14; (* D3DTEXTUREADDRESS for V coordinate *)
{$EXTERNALSYM D3DTSS_ADDRESSV}
D3DTSS_BORDERCOLOR = 15; (* D3DCOLOR *)
{$EXTERNALSYM D3DTSS_BORDERCOLOR}
D3DTSS_MAGFILTER = 16; (* D3DTEXTUREMAGFILTER filter to use for magnification *)
{$EXTERNALSYM D3DTSS_MAGFILTER}
D3DTSS_MINFILTER = 17; (* D3DTEXTUREMINFILTER filter to use for minification *)
{$EXTERNALSYM D3DTSS_MINFILTER}
D3DTSS_MIPFILTER = 18; (* D3DTEXTUREMIPFILTER filter to use between mipmaps during minification *)
{$EXTERNALSYM D3DTSS_MIPFILTER}
D3DTSS_MIPMAPLODBIAS = 19; (* D3DVALUE Mipmap LOD bias *)
{$EXTERNALSYM D3DTSS_MIPMAPLODBIAS}
D3DTSS_MAXMIPLEVEL = 20; (* DWORD 0..(n-1) LOD index of largest map to use (0 == largest) *)
{$EXTERNALSYM D3DTSS_MAXMIPLEVEL}
D3DTSS_MAXANISOTROPY = 21; (* DWORD maximum anisotropy *)
{$EXTERNALSYM D3DTSS_MAXANISOTROPY}
D3DTSS_BUMPENVLSCALE = 22; (* D3DVALUE scale for bump map luminance *)
{$EXTERNALSYM D3DTSS_BUMPENVLSCALE}
D3DTSS_BUMPENVLOFFSET = 23; (* D3DVALUE offset for bump map luminance *)
{$EXTERNALSYM D3DTSS_BUMPENVLOFFSET}
{$IFDEF DIRECT3D_VERSION_7}
D3DTSS_TEXTURETRANSFORMFLAGS = 24; (* D3DTEXTURETRANSFORMFLAGS controls texture transform *)
{$EXTERNALSYM D3DTSS_TEXTURETRANSFORMFLAGS}
{$ENDIF}
{$IFDEF DIRECT3D_VERSION_7}
// Values, used with D3DTSS_TEXCOORDINDEX, to specify that the vertex data(position
// and normal in the camera space) should be taken as texture coordinates
// Low 16 bits are used to specify texture coordinate index, to take the WRAP mode from
//
D3DTSS_TCI_PASSTHRU = $00000000;
{$EXTERNALSYM D3DTSS_TCI_PASSTHRU}
D3DTSS_TCI_CAMERASPACENORMAL = $00010000;
{$EXTERNALSYM D3DTSS_TCI_CAMERASPACENORMAL}
D3DTSS_TCI_CAMERASPACEPOSITION = $00020000;
{$EXTERNALSYM D3DTSS_TCI_CAMERASPACEPOSITION}
D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR = $00030000;
{$EXTERNALSYM D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR}
{$ENDIF}
type
(*
* Enumerations for COLOROP and ALPHAOP texture blending operations set in
* texture processing stage controls in D3DRENDERSTATE.
*)
PD3DTextureOp = ^TD3DTextureOp;
_D3DTEXTUREOP = (
D3DTOP_INVALID_0,
// Control
D3DTOP_DISABLE , // disables stage
D3DTOP_SELECTARG1, // the default
D3DTOP_SELECTARG2,
// Modulate
D3DTOP_MODULATE , // multiply args together
D3DTOP_MODULATE2X, // multiply and 1 bit
D3DTOP_MODULATE4X, // multiply and 2 bits
// Add
D3DTOP_ADD , // add arguments together
D3DTOP_ADDSIGNED , // add with -0.5 bias
D3DTOP_ADDSIGNED2X, // as above but left 1 bit
D3DTOP_SUBTRACT , // Arg1 - Arg2, with no saturation
D3DTOP_ADDSMOOTH , // add 2 args, subtract product
// Arg1 + Arg2 - Arg1*Arg2
// = Arg1 + (1-Arg1)*Arg2
// Linear alpha blend: Arg1*(Alpha) + Arg2*(1-Alpha)
D3DTOP_BLENDDIFFUSEALPHA , // iterated alpha
D3DTOP_BLENDTEXTUREALPHA , // texture alpha
D3DTOP_BLENDFACTORALPHA , // alpha from D3DRENDERSTATE_TEXTUREFACTOR
// Linear alpha blend with pre-multiplied arg1 input: Arg1 + Arg2*(1-Alpha)
D3DTOP_BLENDTEXTUREALPHAPM, // texture alpha
D3DTOP_BLENDCURRENTALPHA , // by alpha of current color
// Specular mapping
D3DTOP_PREMODULATE , // modulate with next texture before use
D3DTOP_MODULATEALPHA_ADDCOLOR, // Arg1.RGB + Arg1.A*Arg2.RGB
// COLOROP only
D3DTOP_MODULATECOLOR_ADDALPHA, // Arg1.RGB*Arg2.RGB + Arg1.A
// COLOROP only
D3DTOP_MODULATEINVALPHA_ADDCOLOR, // (1-Arg1.A)*Arg2.RGB + Arg1.RGB
// COLOROP only
D3DTOP_MODULATEINVCOLOR_ADDALPHA, // (1-Arg1.RGB)*Arg2.RGB + Arg1.A
// COLOROP only
// Bump mapping
D3DTOP_BUMPENVMAP , // per pixel env map perturbation
D3DTOP_BUMPENVMAPLUMINANCE, // with luminance channel
// This can do either diffuse or specular bump mapping with correct input.
// Performs the function (Arg1.R*Arg2.R + Arg1.G*Arg2.G + Arg1.B*Arg2.B)
// where each component has been scaled and offset to make it signed.
// The result is replicated into all four (including alpha) channels.
// This is a valid COLOROP only.
D3DTOP_DOTPRODUCT3
);
{$EXTERNALSYM _D3DTEXTUREOP}
D3DTEXTUREOP = _D3DTEXTUREOP;
{$EXTERNALSYM D3DTEXTUREOP}
TD3DTextureOp = _D3DTEXTUREOP;
(*
* Values for COLORARG1,2 and ALPHAARG1,2 texture blending operations
* set in texture processing stage controls in D3DRENDERSTATE.
*)
const
D3DTA_SELECTMASK = $0000000f; // mask for arg selector
{$EXTERNALSYM D3DTA_SELECTMASK}
D3DTA_DIFFUSE = $00000000; // select diffuse color
{$EXTERNALSYM D3DTA_DIFFUSE}
D3DTA_CURRENT = $00000001; // select result of previous stage
{$EXTERNALSYM D3DTA_CURRENT}
D3DTA_TEXTURE = $00000002; // select texture color
{$EXTERNALSYM D3DTA_TEXTURE}
D3DTA_TFACTOR = $00000003; // select RENDERSTATE_TEXTUREFACTOR
{$EXTERNALSYM D3DTA_TFACTOR}
{$IFDEF DIRECT3D_VERSION_7}
D3DTA_SPECULAR = $00000004; // select specular color
{$EXTERNALSYM D3DTA_SPECULAR}
{$ENDIF}
D3DTA_COMPLEMENT = $00000010; // take 1.0 - x
{$EXTERNALSYM D3DTA_COMPLEMENT}
D3DTA_ALPHAREPLICATE = $00000020; // replicate alpha to color components
{$EXTERNALSYM D3DTA_ALPHAREPLICATE}
{$ENDIF} // DIRECT3D_VERSION_LESS_8
(*
* IDirect3DTexture2 State Filter Types
*)
type
PD3DTextureMagFilter = ^TD3DTextureMagFilter;
_D3DTEXTUREMAGFILTER = (
D3DTFG_INVALID_0,
D3DTFG_POINT , // nearest
D3DTFG_LINEAR , // linear interpolation
D3DTFG_FLATCUBIC , // cubic
D3DTFG_GAUSSIANCUBIC, // different cubic kernel
D3DTFG_ANISOTROPIC
);
{$EXTERNALSYM _D3DTEXTUREMAGFILTER}
D3DTEXTUREMAGFILTER = _D3DTEXTUREMAGFILTER;
{$EXTERNALSYM D3DTEXTUREMAGFILTER}
TD3DTextureMagFilter = _D3DTEXTUREMAGFILTER;
PD3DTextureMinFilter = ^TD3DTextureMinFilter;
_D3DTEXTUREMINFILTER = (
D3DTFN_INVALID_0,
D3DTFN_POINT , // nearest
D3DTFN_LINEAR , // linear interpolation
D3DTFN_ANISOTROPIC
);
{$EXTERNALSYM _D3DTEXTUREMINFILTER}
D3DTEXTUREMINFILTER = _D3DTEXTUREMINFILTER;
{$EXTERNALSYM D3DTEXTUREMINFILTER}
TD3DTextureMinFilter = _D3DTEXTUREMINFILTER;
PD3DTextureMipFilter = ^TD3DTextureMipFilter;
_D3DTEXTUREMIPFILTER = (
D3DTFP_INVALID_0,
D3DTFP_NONE , // mipmapping disabled (use MAG filter)
D3DTFP_POINT , // nearest
D3DTFP_LINEAR // linear interpolation
);
{$EXTERNALSYM _D3DTEXTUREMIPFILTER}
D3DTEXTUREMIPFILTER = _D3DTEXTUREMIPFILTER;
{$EXTERNALSYM D3DTEXTUREMIPFILTER}
TD3DTextureMipFilter = _D3DTEXTUREMIPFILTER;
{$ENDIF} // DIRECT3D_VERSION_6
(*
* Triangle flags
*)
(*
* Tri strip and fan flags.
* START loads all three vertices
* EVEN and ODD load just v3 with even or odd culling
* START_FLAT contains a count from 0 to 29 that allows the
* whole strip or fan to be culled in one hit.
* e.g. for a quad len = 1
*)
const
D3DTRIFLAG_START = $00000000;
{$EXTERNALSYM D3DTRIFLAG_START}
// #define D3DTRIFLAG_STARTFLAT(len) (len) (* 0 < len < 30 *)
function D3DTRIFLAG_STARTFLAT(len: DWORD): DWORD;
{$EXTERNALSYM D3DTRIFLAG_STARTFLAT}
const
D3DTRIFLAG_ODD = $0000001e;
{$EXTERNALSYM D3DTRIFLAG_ODD}
D3DTRIFLAG_EVEN = $0000001f;
{$EXTERNALSYM D3DTRIFLAG_EVEN}
(*
* Triangle edge flags
* enable edges for wireframe or antialiasing
*)
D3DTRIFLAG_EDGEENABLE1 = $00000100; (* v0-v1 edge *)
{$EXTERNALSYM D3DTRIFLAG_EDGEENABLE1}
D3DTRIFLAG_EDGEENABLE2 = $00000200; (* v1-v2 edge *)
{$EXTERNALSYM D3DTRIFLAG_EDGEENABLE2}
D3DTRIFLAG_EDGEENABLE3 = $00000400; (* v2-v0 edge *)
{$EXTERNALSYM D3DTRIFLAG_EDGEENABLE3}
D3DTRIFLAG_EDGEENABLETRIANGLE = (
D3DTRIFLAG_EDGEENABLE1 or D3DTRIFLAG_EDGEENABLE2 or D3DTRIFLAG_EDGEENABLE3);
{$EXTERNALSYM D3DTRIFLAG_EDGEENABLETRIANGLE}
(*
* Primitive structures and related defines. Vertex offsets are to types
* TD3DVertex, TD3DLVertex, or TD3DTLVertex.
*)
(*
* Triangle list primitive structure
*)
type
PD3DTriangle = ^TD3DTriangle;
_D3DTRIANGLE = packed record
case Integer of
0: (
v1: WORD; (* Vertex indices *)
v2: WORD;
v3: WORD;
wFlags: WORD; (* Edge (and other) flags *)
);
1: (
wV1: WORD;
wV2: WORD;
wV3: WORD;
);
end;
{$EXTERNALSYM _D3DTRIANGLE}
D3DTRIANGLE = _D3DTRIANGLE;
{$EXTERNALSYM D3DTRIANGLE}
TD3DTriangle = _D3DTRIANGLE;
(*
* Line strip structure.
* The instruction count - 1 defines the number of line segments.
*)
PD3DLine = ^TD3DLine;
_D3DLINE = packed record
case Integer of
0: (
v1: WORD; (* Vertex indices *)
v2: WORD;
);
1: (
wV1: WORD;
wV2: WORD;
);
end;
{$EXTERNALSYM _D3DLINE}
D3DLINE = _D3DLINE;
{$EXTERNALSYM D3DLINE}
TD3DLine = _D3DLINE;
(*
* Span structure
* Spans join a list of points with the same y value.
* If the y value changes, a new span is started.
*)
PD3DSpan = ^TD3DSpan;
_D3DSPAN = packed record
wCount: WORD; (* Number of spans *)
wFirst: WORD; (* Index to first vertex *)
end;
{$EXTERNALSYM _D3DSPAN}
D3DSPAN = _D3DSPAN;
{$EXTERNALSYM D3DSPAN}
TD3DSpan = _D3DSPAN;
(*
* Point structure
*)
PD3DPoint = ^TD3DPoint;
_D3DPOINT = packed record
wCount: WORD; (* number of points *)
wFirst: WORD; (* index to first vertex *)
end;
{$EXTERNALSYM _D3DPOINT}
D3DPOINT = _D3DPOINT;
{$EXTERNALSYM D3DPOINT}
TD3DPoint = _D3DPOINT;
(*
* Forward branch structure.
* Mask is logically anded with the driver status mask
* if the result equals 'value', the branch is taken.
*)
PD3DBranch = ^TD3DBranch;
_D3DBRANCH = packed record
dwMask: DWORD; (* Bitmask against D3D status *)
dwValue: DWORD;
bNegate: BOOL; (* TRUE to negate comparison *)
dwOffset: DWORD; (* How far to branch forward (0 for exit)*)
end;
{$EXTERNALSYM _D3DBRANCH}
D3DBRANCH = _D3DBRANCH;
{$EXTERNALSYM D3DBRANCH}
TD3DBranch = _D3DBRANCH;
(*
* Status used for set status instruction.
* The D3D status is initialised on device creation
* and is modified by all execute calls.
*)
PD3DStatus = ^TD3DStatus;
_D3DSTATUS = packed record
dwFlags: DWORD; (* Do we set extents or status *)
dwStatus: DWORD; (* D3D status *)
drExtent: TD3DRect;
end;
{$EXTERNALSYM _D3DSTATUS}
D3DSTATUS = _D3DSTATUS;
{$EXTERNALSYM D3DSTATUS}
TD3DStatus = _D3DSTATUS;
const
D3DSETSTATUS_STATUS = $00000001;
{$EXTERNALSYM D3DSETSTATUS_STATUS}
D3DSETSTATUS_EXTENTS = $00000002;
{$EXTERNALSYM D3DSETSTATUS_EXTENTS}
D3DSETSTATUS_ALL = (D3DSETSTATUS_STATUS or D3DSETSTATUS_EXTENTS);
{$EXTERNALSYM D3DSETSTATUS_ALL}
{$IFDEF DIRECT3D_VERSION_5}
type
PD3DClipStatus = ^TD3DClipStatus;
_D3DCLIPSTATUS = packed record
dwFlags : DWORD; (* Do we set 2d extents, 3D extents or status *)
dwStatus : DWORD; (* Clip status *)
minx, maxx : Single; (* X extents *)
miny, maxy : Single; (* Y extents *)
minz, maxz : Single; (* Z extents *)
end;
{$EXTERNALSYM _D3DCLIPSTATUS}
D3DCLIPSTATUS = _D3DCLIPSTATUS;
{$EXTERNALSYM D3DCLIPSTATUS}
TD3DClipStatus = _D3DCLIPSTATUS;
const
D3DCLIPSTATUS_STATUS = $00000001;
{$EXTERNALSYM D3DCLIPSTATUS_STATUS}
D3DCLIPSTATUS_EXTENTS2 = $00000002;
{$EXTERNALSYM D3DCLIPSTATUS_EXTENTS2}
D3DCLIPSTATUS_EXTENTS3 = $00000004;
{$EXTERNALSYM D3DCLIPSTATUS_EXTENTS3}
{$ENDIF} // DIRECT3D_VERSION_5
(*
* Statistics structure
*)
type
PD3DStats = ^TD3DStats;
_D3DSTATS = packed record
dwSize: DWORD;
dwTrianglesDrawn: DWORD;
dwLinesDrawn: DWORD;
dwPointsDrawn: DWORD;
dwSpansDrawn: DWORD;
dwVerticesProcessed: DWORD;
end;
{$EXTERNALSYM _D3DSTATS}
D3DSTATS = _D3DSTATS;
{$EXTERNALSYM D3DSTATS}
TD3DStats = _D3DSTATS;
(*
* Execute options.
* When calling using D3DEXECUTE_UNCLIPPED all the primitives
* inside the buffer must be contained within the viewport.
*)
const
D3DEXECUTE_CLIPPED = $00000001;
{$EXTERNALSYM D3DEXECUTE_CLIPPED}
D3DEXECUTE_UNCLIPPED = $00000002;
{$EXTERNALSYM D3DEXECUTE_UNCLIPPED}
type
PD3DExecuteData = ^TD3DExecuteData;
_D3DEXECUTEDATA = packed record
dwSize: DWORD;
dwVertexOffset: DWORD;
dwVertexCount: DWORD;
dwInstructionOffset: DWORD;
dwInstructionLength: DWORD;
dwHVertexOffset: DWORD;
dsStatus: TD3DStatus; (* Status after execute *)
end;
{$EXTERNALSYM _D3DEXECUTEDATA}
D3DEXECUTEDATA = _D3DEXECUTEDATA;
{$EXTERNALSYM D3DEXECUTEDATA}
TD3DExecuteData = _D3DEXECUTEDATA;
(*
* Palette flags.
* This are or'ed with the peFlags in the PALETTEENTRYs passed to DirectDraw.
*)
const
D3DPAL_FREE = $00; (* Renderer may use this entry freely *)
{$EXTERNALSYM D3DPAL_FREE}
D3DPAL_READONLY = $40; (* Renderer may not set this entry *)
{$EXTERNALSYM D3DPAL_READONLY}
D3DPAL_RESERVED = $80; (* Renderer may not use this entry *)
{$EXTERNALSYM D3DPAL_RESERVED}
{$IFDEF DIRECT3D_VERSION_6}
type
PD3DVertexBufferDesc = ^TD3DVertexBufferDesc;
_D3DVERTEXBUFFERDESC = packed record
dwSize : DWORD;
dwCaps : DWORD;
dwFVF : DWORD;
dwNumVertices : DWORD;
end;
{$EXTERNALSYM _D3DVERTEXBUFFERDESC}
D3DVERTEXBUFFERDESC = _D3DVERTEXBUFFERDESC;
{$EXTERNALSYM D3DVERTEXBUFFERDESC}
TD3DVertexBufferDesc = _D3DVERTEXBUFFERDESC;
const
(* These correspond to DDSCAPS_* flags *)
D3DVBCAPS_SYSTEMMEMORY = $00000800;
{$EXTERNALSYM D3DVBCAPS_SYSTEMMEMORY}
D3DVBCAPS_WRITEONLY = $00010000;
{$EXTERNALSYM D3DVBCAPS_WRITEONLY}
D3DVBCAPS_OPTIMIZED = $80000000;
{$EXTERNALSYM D3DVBCAPS_OPTIMIZED}
D3DVBCAPS_DONOTCLIP = $00000001;
{$EXTERNALSYM D3DVBCAPS_DONOTCLIP}
(* Vertex Operations for ProcessVertices *)
D3DVOP_LIGHT = (1 shl 10);
{$EXTERNALSYM D3DVOP_LIGHT}
D3DVOP_TRANSFORM = (1 shl 0);
{$EXTERNALSYM D3DVOP_TRANSFORM}
D3DVOP_CLIP = (1 shl 2);
{$EXTERNALSYM D3DVOP_CLIP}
D3DVOP_EXTENTS = (1 shl 3);
{$EXTERNALSYM D3DVOP_EXTENTS}
{$IFDEF DIRECT3D_VERSION_LESS_8}
(* The maximum number of vertices user can pass to any d3d
drawing function or to create vertex buffer with
*)
D3DMAXNUMVERTICES = ((1 shl 16) - 1);
{$EXTERNALSYM D3DMAXNUMVERTICES}
(* The maximum number of primitives user can pass to any d3d
drawing function.
*)
D3DMAXNUMPRIMITIVES = ((1 shl 16) - 1);
{$EXTERNALSYM D3DMAXNUMPRIMITIVES}
{$IFDEF DIRECT3D_VERSION_7}
(* Bits for dwFlags in ProcessVertices call *)
D3DPV_DONOTCOPYDATA = (1 shl 0);
{$EXTERNALSYM D3DPV_DONOTCOPYDATA}
{$ENDIF} // DIRECT3D_VERSION_7
{$ENDIF} // DIRECT3D_VERSION_LESS_8
//-------------------------------------------------------------------
{$IFDEF DIRECT3D_VERSION_LESS_8}
// Flexible vertex format bits
//
D3DFVF_RESERVED0 = $001;
{$EXTERNALSYM D3DFVF_RESERVED0}
D3DFVF_POSITION_MASK = $00E;
{$EXTERNALSYM D3DFVF_POSITION_MASK}
D3DFVF_XYZ = $002;
{$EXTERNALSYM D3DFVF_XYZ}
D3DFVF_XYZRHW = $004;
{$EXTERNALSYM D3DFVF_XYZRHW}
{$IFDEF DIRECT3D_VERSION_7}
D3DFVF_XYZB1 = $006;
{$EXTERNALSYM D3DFVF_XYZB1}
D3DFVF_XYZB2 = $008;
{$EXTERNALSYM D3DFVF_XYZB2}
D3DFVF_XYZB3 = $00a;
{$EXTERNALSYM D3DFVF_XYZB3}
D3DFVF_XYZB4 = $00c;
{$EXTERNALSYM D3DFVF_XYZB4}
D3DFVF_XYZB5 = $00e;
{$EXTERNALSYM D3DFVF_XYZB5}
{$ENDIF} // DIRECT3D_VERSION_7
D3DFVF_NORMAL = $010;
{$EXTERNALSYM D3DFVF_NORMAL}
D3DFVF_RESERVED1 = $020;
{$EXTERNALSYM D3DFVF_RESERVED1}
D3DFVF_DIFFUSE = $040;
{$EXTERNALSYM D3DFVF_DIFFUSE}
D3DFVF_SPECULAR = $080;
{$EXTERNALSYM D3DFVF_SPECULAR}
D3DFVF_TEXCOUNT_MASK = $f00;
{$EXTERNALSYM D3DFVF_TEXCOUNT_MASK}
D3DFVF_TEXCOUNT_SHIFT = 8;
{$EXTERNALSYM D3DFVF_TEXCOUNT_SHIFT}
D3DFVF_TEX0 = $000;
{$EXTERNALSYM D3DFVF_TEX0}
D3DFVF_TEX1 = $100;
{$EXTERNALSYM D3DFVF_TEX1}
D3DFVF_TEX2 = $200;
{$EXTERNALSYM D3DFVF_TEX2}
D3DFVF_TEX3 = $300;
{$EXTERNALSYM D3DFVF_TEX3}
D3DFVF_TEX4 = $400;
{$EXTERNALSYM D3DFVF_TEX4}
D3DFVF_TEX5 = $500;
{$EXTERNALSYM D3DFVF_TEX5}
D3DFVF_TEX6 = $600;
{$EXTERNALSYM D3DFVF_TEX6}
D3DFVF_TEX7 = $700;
{$EXTERNALSYM D3DFVF_TEX7}
D3DFVF_TEX8 = $800;
{$EXTERNALSYM D3DFVF_TEX8}
D3DFVF_RESERVED2 = $f000; // 4 reserved bits
{$EXTERNALSYM D3DFVF_RESERVED2}
{$ELSE}
D3DFVF_RESERVED1 = $020;
{$EXTERNALSYM D3DFVF_RESERVED1}
{$ENDIF} // DIRECT3D_VERSION_LESS_8
D3DFVF_VERTEX = ( D3DFVF_XYZ or D3DFVF_NORMAL or D3DFVF_TEX1 );
{$EXTERNALSYM D3DFVF_VERTEX}
D3DFVF_LVERTEX = ( D3DFVF_XYZ or D3DFVF_RESERVED1 or D3DFVF_DIFFUSE or
D3DFVF_SPECULAR or D3DFVF_TEX1 );
{$EXTERNALSYM D3DFVF_LVERTEX}
D3DFVF_TLVERTEX = ( D3DFVF_XYZRHW or D3DFVF_DIFFUSE or D3DFVF_SPECULAR or
D3DFVF_TEX1 );
{$EXTERNALSYM D3DFVF_TLVERTEX}
type
PD3DDP_PtrStride = ^TD3DDP_PtrStride;
_D3DDP_PTRSTRIDE = packed record
lpvData : pointer;
dwStride : DWORD;
end;
{$EXTERNALSYM _D3DDP_PTRSTRIDE}
D3DDP_PTRSTRIDE = _D3DDP_PTRSTRIDE;
{$EXTERNALSYM D3DDP_PTRSTRIDE}
TD3DDP_PtrStride = _D3DDP_PTRSTRIDE;
TD3DDPPtrStride = _D3DDP_PTRSTRIDE;
PD3DDPPtrStride = ^TD3DDPPtrStride;
const
D3DDP_MAXTEXCOORD = 8;
{$EXTERNALSYM D3DDP_MAXTEXCOORD}
type
PD3DDrawPrimitiveStridedData = ^TD3DDrawPrimitiveStridedData;
_D3DDRAWPRIMITIVESTRIDEDDATA = packed record
position : TD3DDP_PtrStride;
normal : TD3DDP_PtrStride;
diffuse : TD3DDP_PtrStride;
specular : TD3DDP_PtrStride;
textureCoords : array [0..D3DDP_MAXTEXCOORD-1] of TD3DDP_PtrStride;
end;
{$EXTERNALSYM _D3DDRAWPRIMITIVESTRIDEDDATA}
D3DDRAWPRIMITIVESTRIDEDDATA = _D3DDRAWPRIMITIVESTRIDEDDATA;
{$EXTERNALSYM D3DDRAWPRIMITIVESTRIDEDDATA}
TD3DDrawPrimitiveStridedData = _D3DDRAWPRIMITIVESTRIDEDDATA;
//---------------------------------------------------------------------
// ComputeSphereVisibility return values
//
const
D3DVIS_INSIDE_FRUSTUM = 0;
{$EXTERNALSYM D3DVIS_INSIDE_FRUSTUM}
D3DVIS_INTERSECT_FRUSTUM = 1;
{$EXTERNALSYM D3DVIS_INTERSECT_FRUSTUM}
D3DVIS_OUTSIDE_FRUSTUM = 2;
{$EXTERNALSYM D3DVIS_OUTSIDE_FRUSTUM}
D3DVIS_INSIDE_LEFT = 0;
{$EXTERNALSYM D3DVIS_INSIDE_LEFT}
D3DVIS_INTERSECT_LEFT = (1 shl 2);
{$EXTERNALSYM D3DVIS_INTERSECT_LEFT}
D3DVIS_OUTSIDE_LEFT = (2 shl 2);
{$EXTERNALSYM D3DVIS_OUTSIDE_LEFT}
D3DVIS_INSIDE_RIGHT = 0;
{$EXTERNALSYM D3DVIS_INSIDE_RIGHT}
D3DVIS_INTERSECT_RIGHT = (1 shl 4);
{$EXTERNALSYM D3DVIS_INTERSECT_RIGHT}
D3DVIS_OUTSIDE_RIGHT = (2 shl 4);
{$EXTERNALSYM D3DVIS_OUTSIDE_RIGHT}
D3DVIS_INSIDE_TOP = 0;
{$EXTERNALSYM D3DVIS_INSIDE_TOP}
D3DVIS_INTERSECT_TOP = (1 shl 6);
{$EXTERNALSYM D3DVIS_INTERSECT_TOP}
D3DVIS_OUTSIDE_TOP = (2 shl 6);
{$EXTERNALSYM D3DVIS_OUTSIDE_TOP}
D3DVIS_INSIDE_BOTTOM = 0;
{$EXTERNALSYM D3DVIS_INSIDE_BOTTOM}
D3DVIS_INTERSECT_BOTTOM = (1 shl 8);
{$EXTERNALSYM D3DVIS_INTERSECT_BOTTOM}
D3DVIS_OUTSIDE_BOTTOM = (2 shl 8);
{$EXTERNALSYM D3DVIS_OUTSIDE_BOTTOM}
D3DVIS_INSIDE_NEAR = 0;
{$EXTERNALSYM D3DVIS_INSIDE_NEAR}
D3DVIS_INTERSECT_NEAR = (1 shl 10);
{$EXTERNALSYM D3DVIS_INTERSECT_NEAR}
D3DVIS_OUTSIDE_NEAR = (2 shl 10);
{$EXTERNALSYM D3DVIS_OUTSIDE_NEAR}
D3DVIS_INSIDE_FAR = 0;
{$EXTERNALSYM D3DVIS_INSIDE_FAR}
D3DVIS_INTERSECT_FAR = (1 shl 12);
{$EXTERNALSYM D3DVIS_INTERSECT_FAR}
D3DVIS_OUTSIDE_FAR = (2 shl 12);
{$EXTERNALSYM D3DVIS_OUTSIDE_FAR}
D3DVIS_MASK_FRUSTUM = (3 shl 0);
{$EXTERNALSYM D3DVIS_MASK_FRUSTUM}
D3DVIS_MASK_LEFT = (3 shl 2);
{$EXTERNALSYM D3DVIS_MASK_LEFT}
D3DVIS_MASK_RIGHT = (3 shl 4);
{$EXTERNALSYM D3DVIS_MASK_RIGHT}
D3DVIS_MASK_TOP = (3 shl 6);
{$EXTERNALSYM D3DVIS_MASK_TOP}
D3DVIS_MASK_BOTTOM = (3 shl 8);
{$EXTERNALSYM D3DVIS_MASK_BOTTOM}
D3DVIS_MASK_NEAR = (3 shl 10);
{$EXTERNALSYM D3DVIS_MASK_NEAR}
D3DVIS_MASK_FAR = (3 shl 12);
{$EXTERNALSYM D3DVIS_MASK_FAR}
{$ENDIF} // DIRECT3D_VERSION_6
{$IFDEF DIRECT3D_VERSION_LESS_8}
{$IFDEF DIRECT3D_VERSION_7}
// To be used with GetInfo()
D3DDEVINFOID_TEXTUREMANAGER = 1;
{$EXTERNALSYM D3DDEVINFOID_TEXTUREMANAGER}
D3DDEVINFOID_D3DTEXTUREMANAGER = 2;
{$EXTERNALSYM D3DDEVINFOID_D3DTEXTUREMANAGER}
D3DDEVINFOID_TEXTURING = 3;
{$EXTERNALSYM D3DDEVINFOID_TEXTURING}
type
PD3DStateBlockType = ^TD3DStateBlockType;
_D3DSTATEBLOCKTYPE = (
D3DSBT_INVALID_0 ,
D3DSBT_ALL , // capture all state
D3DSBT_PIXELSTATE , // capture pixel state
D3DSBT_VERTEXSTATE // capture vertex state
);
{$EXTERNALSYM _D3DSTATEBLOCKTYPE}
D3DSTATEBLOCKTYPE = _D3DSTATEBLOCKTYPE;
{$EXTERNALSYM D3DSTATEBLOCKTYPE}
TD3DStateBlockType = _D3DSTATEBLOCKTYPE;
// The D3DVERTEXBLENDFLAGS type is used with D3DRENDERSTATE_VERTEXBLEND state.
//
PD3DVertexBlendFlags = ^TD3DVertexBlendFlags;
_D3DVERTEXBLENDFLAGS = (
D3DVBLEND_DISABLE , // Disable vertex blending
D3DVBLEND_1WEIGHT , // blend between 2 matrices
D3DVBLEND_2WEIGHTS, // blend between 3 matrices
D3DVBLEND_3WEIGHTS // blend between 4 matrices
);
{$EXTERNALSYM _D3DVERTEXBLENDFLAGS}
D3DVERTEXBLENDFLAGS = _D3DVERTEXBLENDFLAGS;
{$EXTERNALSYM D3DVERTEXBLENDFLAGS}
TD3DVertexBlendFlags = _D3DVERTEXBLENDFLAGS;
PD3DTextureTransformFlags = ^TD3DTextureTransformFlags;
_D3DTEXTURETRANSFORMFLAGS = (
D3DTTFF_DISABLE , // texture coordinates are passed directly
D3DTTFF_COUNT1 , // rasterizer should expect 1-D texture coords
D3DTTFF_COUNT2 , // rasterizer should expect 2-D texture coords
D3DTTFF_COUNT3 , // rasterizer should expect 3-D texture coords
D3DTTFF_COUNT4 // rasterizer should expect 4-D texture coords
);
{$EXTERNALSYM _D3DTEXTURETRANSFORMFLAGS}
D3DTEXTURETRANSFORMFLAGS = _D3DTEXTURETRANSFORMFLAGS;
{$EXTERNALSYM D3DTEXTURETRANSFORMFLAGS}
TD3DTextureTransformFlags = _D3DTEXTURETRANSFORMFLAGS;
const
D3DTTFF_PROJECTED = TD3DTextureTransformFlags(256); // texcoords to be divided by COUNTth element
{$EXTERNALSYM D3DTTFF_PROJECTED}
// Macros to set texture coordinate format bits in the FVF id
D3DFVF_TEXTUREFORMAT2 = 0; // Two floating point values
{$EXTERNALSYM D3DFVF_TEXTUREFORMAT2}
D3DFVF_TEXTUREFORMAT1 = 3; // One floating point value
{$EXTERNALSYM D3DFVF_TEXTUREFORMAT1}
D3DFVF_TEXTUREFORMAT3 = 1; // Three floating point values
{$EXTERNALSYM D3DFVF_TEXTUREFORMAT3}
D3DFVF_TEXTUREFORMAT4 = 2; // Four floating point values
{$EXTERNALSYM D3DFVF_TEXTUREFORMAT4}
function D3DFVF_TEXCOORDSIZE3(CoordIndex: DWORD): DWORD;
{$EXTERNALSYM D3DFVF_TEXCOORDSIZE3}
function D3DFVF_TEXCOORDSIZE2(CoordIndex: DWORD): DWORD;
{$EXTERNALSYM D3DFVF_TEXCOORDSIZE2}
function D3DFVF_TEXCOORDSIZE4(CoordIndex: DWORD): DWORD;
{$EXTERNALSYM D3DFVF_TEXCOORDSIZE4}
function D3DFVF_TEXCOORDSIZE1(CoordIndex: DWORD): DWORD;
{$EXTERNALSYM D3DFVF_TEXCOORDSIZE1}
{$ENDIF} // DIRECT3D_VERSION_7
{$ELSE}
//
// legacy vertex blend names
//
type
PD3DVertexBlendFlags = ^TD3DVertexBlendFlags;
TD3DVertexBlendFlags = Direct3D8.TD3DVertexBlendFlags;
D3DVERTEXBLENDFLAGS = Direct3D8.D3DVERTEXBLENDFLAGS;
_D3DVERTEXBLENDFLAGS = Direct3D8._D3DVERTEXBLENDFLAGS;
{$ENDIF} // DIRECT3D_VERSION_LESS_8
(*==========================================================================;
*
*
* File: d3dcaps.h
* Content: Direct3D capabilities include file
*
***************************************************************************)
(* Description of capabilities of transform *)
type
PD3DTransformCaps = ^TD3DTransformCaps;
_D3DTRANSFORMCAPS = packed record
dwSize: DWORD;
dwCaps: DWORD;
end;
{$EXTERNALSYM _D3DTRANSFORMCAPS}
D3DTRANSFORMCAPS = _D3DTRANSFORMCAPS;
{$EXTERNALSYM D3DTRANSFORMCAPS}
TD3DTransformCaps = _D3DTRANSFORMCAPS;
const
D3DTRANSFORMCAPS_CLIP = $00000001; (* Will clip whilst transforming *)
{$EXTERNALSYM D3DTRANSFORMCAPS_CLIP}
(* Description of capabilities of lighting *)
type
PD3DLightingCaps = ^TD3DLightingCaps;
_D3DLIGHTINGCAPS = packed record
dwSize: DWORD;
dwCaps: DWORD; (* Lighting caps *)
dwLightingModel: DWORD; (* Lighting model - RGB or mono *)
dwNumLights: DWORD; (* Number of lights that can be handled *)
end;
{$EXTERNALSYM _D3DLIGHTINGCAPS}
D3DLIGHTINGCAPS = _D3DLIGHTINGCAPS;
{$EXTERNALSYM D3DLIGHTINGCAPS}
TD3DLightingCaps = _D3DLIGHTINGCAPS;
const
D3DLIGHTINGMODEL_RGB = $00000001;
{$EXTERNALSYM D3DLIGHTINGMODEL_RGB}
D3DLIGHTINGMODEL_MONO = $00000002;
{$EXTERNALSYM D3DLIGHTINGMODEL_MONO}
D3DLIGHTCAPS_POINT = $00000001; (* Point lights supported *)
{$EXTERNALSYM D3DLIGHTCAPS_POINT}
D3DLIGHTCAPS_SPOT = $00000002; (* Spot lights supported *)
{$EXTERNALSYM D3DLIGHTCAPS_SPOT}
D3DLIGHTCAPS_DIRECTIONAL = $00000004; (* Directional lights supported *)
{$EXTERNALSYM D3DLIGHTCAPS_DIRECTIONAL}
{$IFDEF DIRECT3D_VERSION_LESS_7}
D3DLIGHTCAPS_PARALLELPOINT = $00000008; (* Parallel point lights supported *)
{$EXTERNALSYM D3DLIGHTCAPS_PARALLELPOINT}
{$ENDIF} // DIRECT3D_VERSION_LESS_7
{$IFDEF DIRECT3D_VERSION_LESS_5}
D3DLIGHTCAPS_GLSPOT = $00000010; (* GL syle spot lights supported *)
{$EXTERNALSYM D3DLIGHTCAPS_GLSPOT}
{$ENDIF} // DIRECT3D_VERSION_LESS_5
(* Description of capabilities for each primitive type *)
type
PD3DPrimCaps = ^TD3DPrimCaps;
_D3DPrimCaps = packed record
dwSize: DWORD;
dwMiscCaps: DWORD; (* Capability flags *)
dwRasterCaps: DWORD;
dwZCmpCaps: DWORD;
dwSrcBlendCaps: DWORD;
dwDestBlendCaps: DWORD;
dwAlphaCmpCaps: DWORD;
dwShadeCaps: DWORD;
dwTextureCaps: DWORD;
dwTextureFilterCaps: DWORD;
dwTextureBlendCaps: DWORD;
dwTextureAddressCaps: DWORD;
dwStippleWidth: DWORD; (* maximum width and height of *)
dwStippleHeight: DWORD; (* of supported stipple (up to 32x32) *)
end;
{$EXTERNALSYM _D3DPrimCaps}
D3DPrimCaps = _D3DPrimCaps;
{$EXTERNALSYM D3DPrimCaps}
TD3DPrimCaps = _D3DPrimCaps;
const
(* TD3DPrimCaps dwMiscCaps *)
D3DPMISCCAPS_MASKPLANES = $00000001;
{$EXTERNALSYM D3DPMISCCAPS_MASKPLANES}
D3DPMISCCAPS_MASKZ = $00000002;
{$EXTERNALSYM D3DPMISCCAPS_MASKZ}
D3DPMISCCAPS_LINEPATTERNREP = $00000004;
{$EXTERNALSYM D3DPMISCCAPS_LINEPATTERNREP}
D3DPMISCCAPS_CONFORMANT = $00000008;
{$EXTERNALSYM D3DPMISCCAPS_CONFORMANT}
D3DPMISCCAPS_CULLNONE = $00000010;
{$EXTERNALSYM D3DPMISCCAPS_CULLNONE}
D3DPMISCCAPS_CULLCW = $00000020;
{$EXTERNALSYM D3DPMISCCAPS_CULLCW}
D3DPMISCCAPS_CULLCCW = $00000040;
{$EXTERNALSYM D3DPMISCCAPS_CULLCCW}
(* TD3DPrimCaps dwRasterCaps *)
D3DPRASTERCAPS_DITHER = $00000001;
{$EXTERNALSYM D3DPRASTERCAPS_DITHER}
D3DPRASTERCAPS_ROP2 = $00000002;
{$EXTERNALSYM D3DPRASTERCAPS_ROP2}
D3DPRASTERCAPS_XOR = $00000004;
{$EXTERNALSYM D3DPRASTERCAPS_XOR}
D3DPRASTERCAPS_PAT = $00000008;
{$EXTERNALSYM D3DPRASTERCAPS_PAT}
D3DPRASTERCAPS_ZTEST = $00000010;
{$EXTERNALSYM D3DPRASTERCAPS_ZTEST}
D3DPRASTERCAPS_SUBPIXEL = $00000020;
{$EXTERNALSYM D3DPRASTERCAPS_SUBPIXEL}
D3DPRASTERCAPS_SUBPIXELX = $00000040;
{$EXTERNALSYM D3DPRASTERCAPS_SUBPIXELX}
D3DPRASTERCAPS_FOGVERTEX = $00000080;
{$EXTERNALSYM D3DPRASTERCAPS_FOGVERTEX}
D3DPRASTERCAPS_FOGTABLE = $00000100;
{$EXTERNALSYM D3DPRASTERCAPS_FOGTABLE}
D3DPRASTERCAPS_STIPPLE = $00000200;
{$EXTERNALSYM D3DPRASTERCAPS_STIPPLE}
{$IFDEF DIRECT3D_VERSION_5}
D3DPRASTERCAPS_ANTIALIASSORTDEPENDENT = $00000400;
{$EXTERNALSYM D3DPRASTERCAPS_ANTIALIASSORTDEPENDENT}
D3DPRASTERCAPS_ANTIALIASSORTINDEPENDENT = $00000800;
{$EXTERNALSYM D3DPRASTERCAPS_ANTIALIASSORTINDEPENDENT}
D3DPRASTERCAPS_ANTIALIASEDGES = $00001000;
{$EXTERNALSYM D3DPRASTERCAPS_ANTIALIASEDGES}
D3DPRASTERCAPS_MIPMAPLODBIAS = $00002000;
{$EXTERNALSYM D3DPRASTERCAPS_MIPMAPLODBIAS}
D3DPRASTERCAPS_ZBIAS = $00004000;
{$EXTERNALSYM D3DPRASTERCAPS_ZBIAS}
D3DPRASTERCAPS_ZBUFFERLESSHSR = $00008000;
{$EXTERNALSYM D3DPRASTERCAPS_ZBUFFERLESSHSR}
D3DPRASTERCAPS_FOGRANGE = $00010000;
{$EXTERNALSYM D3DPRASTERCAPS_FOGRANGE}
D3DPRASTERCAPS_ANISOTROPY = $00020000;
{$EXTERNALSYM D3DPRASTERCAPS_ANISOTROPY}
{$ENDIF} // DIRECT3D_VERSION_5
{$IFDEF DIRECT3D_VERSION_6}
D3DPRASTERCAPS_WBUFFER = $00040000;
{$EXTERNALSYM D3DPRASTERCAPS_WBUFFER}
D3DPRASTERCAPS_TRANSLUCENTSORTINDEPENDENT = $00080000;
{$EXTERNALSYM D3DPRASTERCAPS_TRANSLUCENTSORTINDEPENDENT}
D3DPRASTERCAPS_WFOG = $00100000;
{$EXTERNALSYM D3DPRASTERCAPS_WFOG}
D3DPRASTERCAPS_ZFOG = $00200000;
{$EXTERNALSYM D3DPRASTERCAPS_ZFOG}
{$ENDIF} // DIRECT3D_VERSION_6
(* TD3DPrimCaps dwZCmpCaps, dwAlphaCmpCaps *)
const
D3DPCMPCAPS_NEVER = $00000001;
{$EXTERNALSYM D3DPCMPCAPS_NEVER}
D3DPCMPCAPS_LESS = $00000002;
{$EXTERNALSYM D3DPCMPCAPS_LESS}
D3DPCMPCAPS_EQUAL = $00000004;
{$EXTERNALSYM D3DPCMPCAPS_EQUAL}
D3DPCMPCAPS_LESSEQUAL = $00000008;
{$EXTERNALSYM D3DPCMPCAPS_LESSEQUAL}
D3DPCMPCAPS_GREATER = $00000010;
{$EXTERNALSYM D3DPCMPCAPS_GREATER}
D3DPCMPCAPS_NOTEQUAL = $00000020;
{$EXTERNALSYM D3DPCMPCAPS_NOTEQUAL}
D3DPCMPCAPS_GREATEREQUAL = $00000040;
{$EXTERNALSYM D3DPCMPCAPS_GREATEREQUAL}
D3DPCMPCAPS_ALWAYS = $00000080;
{$EXTERNALSYM D3DPCMPCAPS_ALWAYS}
(* TD3DPrimCaps dwSourceBlendCaps, dwDestBlendCaps *)
D3DPBLENDCAPS_ZERO = $00000001;
{$EXTERNALSYM D3DPBLENDCAPS_ZERO}
D3DPBLENDCAPS_ONE = $00000002;
{$EXTERNALSYM D3DPBLENDCAPS_ONE}
D3DPBLENDCAPS_SRCCOLOR = $00000004;
{$EXTERNALSYM D3DPBLENDCAPS_SRCCOLOR}
D3DPBLENDCAPS_INVSRCCOLOR = $00000008;
{$EXTERNALSYM D3DPBLENDCAPS_INVSRCCOLOR}
D3DPBLENDCAPS_SRCALPHA = $00000010;
{$EXTERNALSYM D3DPBLENDCAPS_SRCALPHA}
D3DPBLENDCAPS_INVSRCALPHA = $00000020;
{$EXTERNALSYM D3DPBLENDCAPS_INVSRCALPHA}
D3DPBLENDCAPS_DESTALPHA = $00000040;
{$EXTERNALSYM D3DPBLENDCAPS_DESTALPHA}
D3DPBLENDCAPS_INVDESTALPHA = $00000080;
{$EXTERNALSYM D3DPBLENDCAPS_INVDESTALPHA}
D3DPBLENDCAPS_DESTCOLOR = $00000100;
{$EXTERNALSYM D3DPBLENDCAPS_DESTCOLOR}
D3DPBLENDCAPS_INVDESTCOLOR = $00000200;
{$EXTERNALSYM D3DPBLENDCAPS_INVDESTCOLOR}
D3DPBLENDCAPS_SRCALPHASAT = $00000400;
{$EXTERNALSYM D3DPBLENDCAPS_SRCALPHASAT}
D3DPBLENDCAPS_BOTHSRCALPHA = $00000800;
{$EXTERNALSYM D3DPBLENDCAPS_BOTHSRCALPHA}
D3DPBLENDCAPS_BOTHINVSRCALPHA = $00001000;
{$EXTERNALSYM D3DPBLENDCAPS_BOTHINVSRCALPHA}
(* TD3DPrimCaps dwShadeCaps *)
D3DPSHADECAPS_COLORFLATMONO = $00000001;
{$EXTERNALSYM D3DPSHADECAPS_COLORFLATMONO}
D3DPSHADECAPS_COLORFLATRGB = $00000002;
{$EXTERNALSYM D3DPSHADECAPS_COLORFLATRGB}
D3DPSHADECAPS_COLORGOURAUDMONO = $00000004;
{$EXTERNALSYM D3DPSHADECAPS_COLORGOURAUDMONO}
D3DPSHADECAPS_COLORGOURAUDRGB = $00000008;
{$EXTERNALSYM D3DPSHADECAPS_COLORGOURAUDRGB}
D3DPSHADECAPS_COLORPHONGMONO = $00000010;
{$EXTERNALSYM D3DPSHADECAPS_COLORPHONGMONO}
D3DPSHADECAPS_COLORPHONGRGB = $00000020;
{$EXTERNALSYM D3DPSHADECAPS_COLORPHONGRGB}
D3DPSHADECAPS_SPECULARFLATMONO = $00000040;
{$EXTERNALSYM D3DPSHADECAPS_SPECULARFLATMONO}
D3DPSHADECAPS_SPECULARFLATRGB = $00000080;
{$EXTERNALSYM D3DPSHADECAPS_SPECULARFLATRGB}
D3DPSHADECAPS_SPECULARGOURAUDMONO = $00000100;
{$EXTERNALSYM D3DPSHADECAPS_SPECULARGOURAUDMONO}
D3DPSHADECAPS_SPECULARGOURAUDRGB = $00000200;
{$EXTERNALSYM D3DPSHADECAPS_SPECULARGOURAUDRGB}
D3DPSHADECAPS_SPECULARPHONGMONO = $00000400;
{$EXTERNALSYM D3DPSHADECAPS_SPECULARPHONGMONO}
D3DPSHADECAPS_SPECULARPHONGRGB = $00000800;
{$EXTERNALSYM D3DPSHADECAPS_SPECULARPHONGRGB}
D3DPSHADECAPS_ALPHAFLATBLEND = $00001000;
{$EXTERNALSYM D3DPSHADECAPS_ALPHAFLATBLEND}
D3DPSHADECAPS_ALPHAFLATSTIPPLED = $00002000;
{$EXTERNALSYM D3DPSHADECAPS_ALPHAFLATSTIPPLED}
D3DPSHADECAPS_ALPHAGOURAUDBLEND = $00004000;
{$EXTERNALSYM D3DPSHADECAPS_ALPHAGOURAUDBLEND}
D3DPSHADECAPS_ALPHAGOURAUDSTIPPLED = $00008000;
{$EXTERNALSYM D3DPSHADECAPS_ALPHAGOURAUDSTIPPLED}
D3DPSHADECAPS_ALPHAPHONGBLEND = $00010000;
{$EXTERNALSYM D3DPSHADECAPS_ALPHAPHONGBLEND}
D3DPSHADECAPS_ALPHAPHONGSTIPPLED = $00020000;
{$EXTERNALSYM D3DPSHADECAPS_ALPHAPHONGSTIPPLED}
D3DPSHADECAPS_FOGFLAT = $00040000;
{$EXTERNALSYM D3DPSHADECAPS_FOGFLAT}
D3DPSHADECAPS_FOGGOURAUD = $00080000;
{$EXTERNALSYM D3DPSHADECAPS_FOGGOURAUD}
D3DPSHADECAPS_FOGPHONG = $00100000;
{$EXTERNALSYM D3DPSHADECAPS_FOGPHONG}
(* TD3DPrimCaps dwTextureCaps *)
(*
* Perspective-correct texturing is supported
*)
D3DPTEXTURECAPS_PERSPECTIVE = $00000001;
{$EXTERNALSYM D3DPTEXTURECAPS_PERSPECTIVE}
(*
* Power-of-2 texture dimensions are required
*)
D3DPTEXTURECAPS_POW2 = $00000002;
{$EXTERNALSYM D3DPTEXTURECAPS_POW2}
(*
* Alpha in texture pixels is supported
*)
D3DPTEXTURECAPS_ALPHA = $00000004;
{$EXTERNALSYM D3DPTEXTURECAPS_ALPHA}
(*
* Color-keyed textures are supported
*)
D3DPTEXTURECAPS_TRANSPARENCY = $00000008;
{$EXTERNALSYM D3DPTEXTURECAPS_TRANSPARENCY}
(*
* obsolete, see D3DPTADDRESSCAPS_BORDER
*)
D3DPTEXTURECAPS_BORDER = $00000010;
{$EXTERNALSYM D3DPTEXTURECAPS_BORDER}
(*
* Only square textures are supported
*)
D3DPTEXTURECAPS_SQUAREONLY = $00000020;
{$EXTERNALSYM D3DPTEXTURECAPS_SQUAREONLY}
{$IFDEF DIRECT3D_VERSION_6}
(*
* Texture indices are not scaled by the texture size prior
* to interpolation.
*)
D3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE = $00000040;
{$EXTERNALSYM D3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE}
(*
* Device can draw alpha from texture palettes
*)
D3DPTEXTURECAPS_ALPHAPALETTE = $00000080;
{$EXTERNALSYM D3DPTEXTURECAPS_ALPHAPALETTE}
(*
* Device can use non-POW2 textures if:
* 1) D3DTEXTURE_ADDRESS is set to CLAMP for this texture's stage
* 2) D3DRS_WRAP(N) is zero for this texture's coordinates
* 3) mip mapping is not enabled (use magnification filter only)
*)
D3DPTEXTURECAPS_NONPOW2CONDITIONAL = $00000100;
{$EXTERNALSYM D3DPTEXTURECAPS_NONPOW2CONDITIONAL}
{$ENDIF} // DIRECT3D_VERSION_6
{$IFDEF DIRECT3D_VERSION_7}
// 0x00000200L unused
(*
* Device can divide transformed texture coordinates by the
* COUNTth texture coordinate (can do D3DTTFF_PROJECTED)
*)
D3DPTEXTURECAPS_PROJECTED = $00000400;
{$EXTERNALSYM D3DPTEXTURECAPS_PROJECTED}
(*
* Device can do cubemap textures
*)
D3DPTEXTURECAPS_CUBEMAP = $00000800;
{$EXTERNALSYM D3DPTEXTURECAPS_CUBEMAP}
D3DPTEXTURECAPS_COLORKEYBLEND = $00001000;
{$EXTERNALSYM D3DPTEXTURECAPS_COLORKEYBLEND}
{$ENDIF} // DIRECT3D_VERSION_7
(* TD3DPrimCaps dwTextureFilterCaps *)
D3DPTFILTERCAPS_NEAREST = $00000001;
{$EXTERNALSYM D3DPTFILTERCAPS_NEAREST}
D3DPTFILTERCAPS_LINEAR = $00000002;
{$EXTERNALSYM D3DPTFILTERCAPS_LINEAR}
D3DPTFILTERCAPS_MIPNEAREST = $00000004;
{$EXTERNALSYM D3DPTFILTERCAPS_MIPNEAREST}
D3DPTFILTERCAPS_MIPLINEAR = $00000008;
{$EXTERNALSYM D3DPTFILTERCAPS_MIPLINEAR}
D3DPTFILTERCAPS_LINEARMIPNEAREST = $00000010;
{$EXTERNALSYM D3DPTFILTERCAPS_LINEARMIPNEAREST}
D3DPTFILTERCAPS_LINEARMIPLINEAR = $00000020;
{$EXTERNALSYM D3DPTFILTERCAPS_LINEARMIPLINEAR}
{$IFDEF DIRECT3D_VERSION_6}
(* Device3 Min Filter *)
D3DPTFILTERCAPS_MINFPOINT = $00000100;
{$EXTERNALSYM D3DPTFILTERCAPS_MINFPOINT}
D3DPTFILTERCAPS_MINFLINEAR = $00000200;
{$EXTERNALSYM D3DPTFILTERCAPS_MINFLINEAR}
D3DPTFILTERCAPS_MINFANISOTROPIC = $00000400;
{$EXTERNALSYM D3DPTFILTERCAPS_MINFANISOTROPIC}
(* Device3 Mip Filter *)
D3DPTFILTERCAPS_MIPFPOINT = $00010000;
{$EXTERNALSYM D3DPTFILTERCAPS_MIPFPOINT}
D3DPTFILTERCAPS_MIPFLINEAR = $00020000;
{$EXTERNALSYM D3DPTFILTERCAPS_MIPFLINEAR}
(* Device3 Mag Filter *)
D3DPTFILTERCAPS_MAGFPOINT = $01000000;
{$EXTERNALSYM D3DPTFILTERCAPS_MAGFPOINT}
D3DPTFILTERCAPS_MAGFLINEAR = $02000000;
{$EXTERNALSYM D3DPTFILTERCAPS_MAGFLINEAR}
D3DPTFILTERCAPS_MAGFANISOTROPIC = $04000000;
{$EXTERNALSYM D3DPTFILTERCAPS_MAGFANISOTROPIC}
D3DPTFILTERCAPS_MAGFAFLATCUBIC = $08000000;
{$EXTERNALSYM D3DPTFILTERCAPS_MAGFAFLATCUBIC}
D3DPTFILTERCAPS_MAGFGAUSSIANCUBIC = $10000000;
{$EXTERNALSYM D3DPTFILTERCAPS_MAGFGAUSSIANCUBIC}
{$ENDIF} // DIRECT3D_VERSION_6
(* TD3DPrimCaps dwTextureBlendCaps *)
D3DPTBLENDCAPS_DECAL = $00000001;
{$EXTERNALSYM D3DPTBLENDCAPS_DECAL}
D3DPTBLENDCAPS_MODULATE = $00000002;
{$EXTERNALSYM D3DPTBLENDCAPS_MODULATE}
D3DPTBLENDCAPS_DECALALPHA = $00000004;
{$EXTERNALSYM D3DPTBLENDCAPS_DECALALPHA}
D3DPTBLENDCAPS_MODULATEALPHA = $00000008;
{$EXTERNALSYM D3DPTBLENDCAPS_MODULATEALPHA}
D3DPTBLENDCAPS_DECALMASK = $00000010;
{$EXTERNALSYM D3DPTBLENDCAPS_DECALMASK}
D3DPTBLENDCAPS_MODULATEMASK = $00000020;
{$EXTERNALSYM D3DPTBLENDCAPS_MODULATEMASK}
D3DPTBLENDCAPS_COPY = $00000040;
{$EXTERNALSYM D3DPTBLENDCAPS_COPY}
{$IFDEF DIRECT3D_VERSION_5}
D3DPTBLENDCAPS_ADD = $00000080;
{$EXTERNALSYM D3DPTBLENDCAPS_ADD}
{$ENDIF} // DIRECT3D_VERSION_5
(* TD3DPrimCaps dwTextureAddressCaps *)
D3DPTADDRESSCAPS_WRAP = $00000001;
{$EXTERNALSYM D3DPTADDRESSCAPS_WRAP}
D3DPTADDRESSCAPS_MIRROR = $00000002;
{$EXTERNALSYM D3DPTADDRESSCAPS_MIRROR}
D3DPTADDRESSCAPS_CLAMP = $00000004;
{$EXTERNALSYM D3DPTADDRESSCAPS_CLAMP}
{$IFDEF DIRECT3D_VERSION_5}
D3DPTADDRESSCAPS_BORDER = $00000008;
{$EXTERNALSYM D3DPTADDRESSCAPS_BORDER}
D3DPTADDRESSCAPS_INDEPENDENTUV = $00000010;
{$EXTERNALSYM D3DPTADDRESSCAPS_INDEPENDENTUV}
{$ENDIF} // DIRECT3D_VERSION_5
{$IFDEF DIRECT3D_VERSION_6}
(* D3DDEVICEDESC dwStencilCaps *)
D3DSTENCILCAPS_KEEP = $00000001;
{$EXTERNALSYM D3DSTENCILCAPS_KEEP}
D3DSTENCILCAPS_ZERO = $00000002;
{$EXTERNALSYM D3DSTENCILCAPS_ZERO}
D3DSTENCILCAPS_REPLACE = $00000004;
{$EXTERNALSYM D3DSTENCILCAPS_REPLACE}
D3DSTENCILCAPS_INCRSAT = $00000008;
{$EXTERNALSYM D3DSTENCILCAPS_INCRSAT}
D3DSTENCILCAPS_DECRSAT = $00000010;
{$EXTERNALSYM D3DSTENCILCAPS_DECRSAT}
D3DSTENCILCAPS_INVERT = $00000020;
{$EXTERNALSYM D3DSTENCILCAPS_INVERT}
D3DSTENCILCAPS_INCR = $00000040;
{$EXTERNALSYM D3DSTENCILCAPS_INCR}
D3DSTENCILCAPS_DECR = $00000080;
{$EXTERNALSYM D3DSTENCILCAPS_DECR}
(* D3DDEVICEDESC dwTextureOpCaps *)
D3DTEXOPCAPS_DISABLE = $00000001;
{$EXTERNALSYM D3DTEXOPCAPS_DISABLE}
D3DTEXOPCAPS_SELECTARG1 = $00000002;
{$EXTERNALSYM D3DTEXOPCAPS_SELECTARG1}
D3DTEXOPCAPS_SELECTARG2 = $00000004;
{$EXTERNALSYM D3DTEXOPCAPS_SELECTARG2}
D3DTEXOPCAPS_MODULATE = $00000008;
{$EXTERNALSYM D3DTEXOPCAPS_MODULATE}
D3DTEXOPCAPS_MODULATE2X = $00000010;
{$EXTERNALSYM D3DTEXOPCAPS_MODULATE2X}
D3DTEXOPCAPS_MODULATE4X = $00000020;
{$EXTERNALSYM D3DTEXOPCAPS_MODULATE4X}
D3DTEXOPCAPS_ADD = $00000040;
{$EXTERNALSYM D3DTEXOPCAPS_ADD}
D3DTEXOPCAPS_ADDSIGNED = $00000080;
{$EXTERNALSYM D3DTEXOPCAPS_ADDSIGNED}
D3DTEXOPCAPS_ADDSIGNED2X = $00000100;
{$EXTERNALSYM D3DTEXOPCAPS_ADDSIGNED2X}
D3DTEXOPCAPS_SUBTRACT = $00000200;
{$EXTERNALSYM D3DTEXOPCAPS_SUBTRACT}
D3DTEXOPCAPS_ADDSMOOTH = $00000400;
{$EXTERNALSYM D3DTEXOPCAPS_ADDSMOOTH}
D3DTEXOPCAPS_BLENDDIFFUSEALPHA = $00000800;
{$EXTERNALSYM D3DTEXOPCAPS_BLENDDIFFUSEALPHA}
D3DTEXOPCAPS_BLENDTEXTUREALPHA = $00001000;
{$EXTERNALSYM D3DTEXOPCAPS_BLENDTEXTUREALPHA}
D3DTEXOPCAPS_BLENDFACTORALPHA = $00002000;
{$EXTERNALSYM D3DTEXOPCAPS_BLENDFACTORALPHA}
D3DTEXOPCAPS_BLENDTEXTUREALPHAPM = $00004000;
{$EXTERNALSYM D3DTEXOPCAPS_BLENDTEXTUREALPHAPM}
D3DTEXOPCAPS_BLENDCURRENTALPHA = $00008000;
{$EXTERNALSYM D3DTEXOPCAPS_BLENDCURRENTALPHA}
D3DTEXOPCAPS_PREMODULATE = $00010000;
{$EXTERNALSYM D3DTEXOPCAPS_PREMODULATE}
D3DTEXOPCAPS_MODULATEALPHA_ADDCOLOR = $00020000;
{$EXTERNALSYM D3DTEXOPCAPS_MODULATEALPHA_ADDCOLOR}
D3DTEXOPCAPS_MODULATECOLOR_ADDALPHA = $00040000;
{$EXTERNALSYM D3DTEXOPCAPS_MODULATECOLOR_ADDALPHA}
D3DTEXOPCAPS_MODULATEINVALPHA_ADDCOLOR = $00080000;
{$EXTERNALSYM D3DTEXOPCAPS_MODULATEINVALPHA_ADDCOLOR}
D3DTEXOPCAPS_MODULATEINVCOLOR_ADDALPHA = $00100000;
{$EXTERNALSYM D3DTEXOPCAPS_MODULATEINVCOLOR_ADDALPHA}
D3DTEXOPCAPS_BUMPENVMAP = $00200000;
{$EXTERNALSYM D3DTEXOPCAPS_BUMPENVMAP}
D3DTEXOPCAPS_BUMPENVMAPLUMINANCE = $00400000;
{$EXTERNALSYM D3DTEXOPCAPS_BUMPENVMAPLUMINANCE}
D3DTEXOPCAPS_DOTPRODUCT3 = $00800000;
{$EXTERNALSYM D3DTEXOPCAPS_DOTPRODUCT3}
(* D3DDEVICEDESC dwFVFCaps flags *)
D3DFVFCAPS_TEXCOORDCOUNTMASK = $0000ffff; (* mask for texture coordinate count field *)
{$EXTERNALSYM D3DFVFCAPS_TEXCOORDCOUNTMASK}
D3DFVFCAPS_DONOTSTRIPELEMENTS = $00080000; (* Device prefers that vertex elements not be stripped *)
{$EXTERNALSYM D3DFVFCAPS_DONOTSTRIPELEMENTS}
{$ENDIF} // DIRECT3D_VERSION_6
(*
* Description for a device.
* This is used to describe a device that is to be created or to query
* the current device.
*)
type
PD3DDeviceDesc = ^TD3DDeviceDesc;
_D3DDeviceDesc = packed record
dwSize: DWORD; (* Size of TD3DDeviceDesc structure *)
dwFlags: DWORD; (* Indicates which fields have valid data *)
dcmColorModel: TD3DColorModel; (* Color model of device *)
dwDevCaps: DWORD; (* Capabilities of device *)
dtcTransformCaps: TD3DTransformCaps; (* Capabilities of transform *)
bClipping: BOOL; (* Device can do 3D clipping *)
dlcLightingCaps: TD3DLightingCaps; (* Capabilities of lighting *)
dpcLineCaps: TD3DPrimCaps;
dpcTriCaps: TD3DPrimCaps;
dwDeviceRenderBitDepth: DWORD; (* One of DDBB_8, 16, etc.. *)
dwDeviceZBufferBitDepth: DWORD; (* One of DDBD_16, 32, etc.. *)
dwMaxBufferSize: DWORD; (* Maximum execute buffer size *)
dwMaxVertexCount: DWORD; (* Maximum vertex count *)
{$IFDEF DIRECT3D_VERSION_5}
// *** New fields for DX5 *** //
// Width and height caps are 0 for legacy HALs.
dwMinTextureWidth, dwMinTextureHeight : DWORD;
dwMaxTextureWidth, dwMaxTextureHeight : DWORD;
dwMinStippleWidth, dwMaxStippleWidth : DWORD;
dwMinStippleHeight, dwMaxStippleHeight : DWORD;
{$ENDIF} // DIRECT3D_VERSION_5
{$IFDEF DIRECT3D_VERSION_6}
// New fields for DX6
dwMaxTextureRepeat : DWORD;
dwMaxTextureAspectRatio : DWORD;
dwMaxAnisotropy : DWORD;
// Guard band that the rasterizer can accommodate
// Screen-space vertices inside this space but outside the viewport
// will get clipped properly.
dvGuardBandLeft : TD3DValue;
dvGuardBandTop : TD3DValue;
dvGuardBandRight : TD3DValue;
dvGuardBandBottom : TD3DValue;
dvExtentsAdjust : TD3DValue;
dwStencilCaps : DWORD;
dwFVFCaps : DWORD; (* low 4 bits: 0 implies TLVERTEX only, 1..8 imply FVF aware *)
dwTextureOpCaps : DWORD;
wMaxTextureBlendStages : WORD;
wMaxSimultaneousTextures : WORD;
{$ENDIF} // DIRECT3D_VERSION_6
end;
{$EXTERNALSYM _D3DDeviceDesc}
D3DDeviceDesc = _D3DDeviceDesc;
{$EXTERNALSYM D3DDeviceDesc}
TD3DDeviceDesc = _D3DDeviceDesc;
{$IFDEF DIRECT3D_VERSION_7}
PD3DDeviceDesc7 = ^TD3DDeviceDesc7;
_D3DDeviceDesc7 = packed record
dwDevCaps: DWORD; (* Capabilities of device *)
dpcLineCaps: TD3DPrimCaps;
dpcTriCaps: TD3DPrimCaps;
dwDeviceRenderBitDepth: DWORD; (* One of DDBB_8, 16, etc.. *)
dwDeviceZBufferBitDepth: DWORD; (* One of DDBD_16, 32, etc.. *)
dwMinTextureWidth, dwMinTextureHeight: DWORD;
dwMaxTextureWidth, dwMaxTextureHeight: DWORD;
dwMaxTextureRepeat: DWORD;
dwMaxTextureAspectRatio: DWORD;
dwMaxAnisotropy: DWORD;
dvGuardBandLeft: TD3DValue;
dvGuardBandTop: TD3DValue;
dvGuardBandRight: TD3DValue;
dvGuardBandBottom: TD3DValue;
dvExtentsAdjust: TD3DValue;
dwStencilCaps: DWORD;
dwFVFCaps: DWORD;
dwTextureOpCaps: DWORD;
wMaxTextureBlendStages: WORD;
wMaxSimultaneousTextures: WORD;
dwMaxActiveLights: DWORD;
dvMaxVertexW: TD3DValue;
deviceGUID: TGUID;
wMaxUserClipPlanes: WORD;
wMaxVertexBlendMatrices: WORD;
dwVertexProcessingCaps: DWORD;
dwReserved1: DWORD;
dwReserved2: DWORD;
dwReserved3: DWORD;
dwReserved4: DWORD;
end;
{$EXTERNALSYM _D3DDeviceDesc7}
D3DDeviceDesc7 = _D3DDeviceDesc7;
{$EXTERNALSYM D3DDeviceDesc7}
TD3DDeviceDesc7 = _D3DDeviceDesc7;
{$ENDIF} // DIRECT3D_VERSION_7
const
D3DDEVICEDESCSIZE = SizeOf(TD3DDeviceDesc);
{$EXTERNALSYM D3DDEVICEDESCSIZE}
{$IFDEF DIRECT3D_VERSION_7} // There is the BUG in C++Headers
D3DDEVICEDESC7SIZE = SizeOf(TD3DDeviceDesc7);
{$EXTERNALSYM D3DDEVICEDESC7SIZE}
{$ENDIF} // DIRECT3D_VERSION_7
type
TD3DEnumDevicesCallbackA = function (lpGuid: PGUID; // nil for the default device
lpDeviceDescription: PAnsiChar; lpDeviceName: PAnsiChar;
var lpD3DHWDeviceDesc: TD3DDeviceDesc;
var lpD3DHELDeviceDesc: TD3DDeviceDesc;
lpContext: Pointer): HResult; stdcall;
TD3DEnumDevicesCallback = TD3DEnumDevicesCallbackA;
{$NODEFINE TD3DEnumDevicesCallbackA}
{$NODEFINE TD3DEnumDevicesCallback}
{$IFDEF DIRECT3D_VERSION_7}
TD3DEnumDevicesCallback7A = function (
lpDeviceDescription: PAnsiChar; lpDeviceName: PAnsiChar;
const lpD3DDeviceDesc: TD3DDeviceDesc7; lpContext: Pointer): HResult; stdcall;
TD3DEnumDevicesCallback7 = TD3DEnumDevicesCallback7A;
{$NODEFINE TD3DEnumDevicesCallback7A}
{$NODEFINE TD3DEnumDevicesCallback7}
{$ENDIF} // DIRECT3D_VERSION_7
(* TD3DDeviceDesc dwFlags indicating valid fields *)
const
D3DDD_COLORMODEL = $00000001; (* dcmColorModel is valid *)
{$EXTERNALSYM D3DDD_COLORMODEL}
D3DDD_DEVCAPS = $00000002; (* dwDevCaps is valid *)
{$EXTERNALSYM D3DDD_DEVCAPS}
D3DDD_TRANSFORMCAPS = $00000004; (* dtcTransformCaps is valid *)
{$EXTERNALSYM D3DDD_TRANSFORMCAPS}
D3DDD_LIGHTINGCAPS = $00000008; (* dlcLightingCaps is valid *)
{$EXTERNALSYM D3DDD_LIGHTINGCAPS}
D3DDD_BCLIPPING = $00000010; (* bClipping is valid *)
{$EXTERNALSYM D3DDD_BCLIPPING}
D3DDD_LINECAPS = $00000020; (* dpcLineCaps is valid *)
{$EXTERNALSYM D3DDD_LINECAPS}
D3DDD_TRICAPS = $00000040; (* dpcTriCaps is valid *)
{$EXTERNALSYM D3DDD_TRICAPS}
D3DDD_DEVICERENDERBITDEPTH = $00000080; (* dwDeviceRenderBitDepth is valid *)
{$EXTERNALSYM D3DDD_DEVICERENDERBITDEPTH}
D3DDD_DEVICEZBUFFERBITDEPTH = $00000100; (* dwDeviceZBufferBitDepth is valid *)
{$EXTERNALSYM D3DDD_DEVICEZBUFFERBITDEPTH}
D3DDD_MAXBUFFERSIZE = $00000200; (* dwMaxBufferSize is valid *)
{$EXTERNALSYM D3DDD_MAXBUFFERSIZE}
D3DDD_MAXVERTEXCOUNT = $00000400; (* dwMaxVertexCount is valid *)
{$EXTERNALSYM D3DDD_MAXVERTEXCOUNT}
(* TD3DDeviceDesc dwDevCaps flags *)
D3DDEVCAPS_FLOATTLVERTEX = $00000001; (* Device accepts floating point *)
(* for post-transform vertex data *)
{$EXTERNALSYM D3DDEVCAPS_FLOATTLVERTEX}
D3DDEVCAPS_SORTINCREASINGZ = $00000002; (* Device needs data sorted for increasing Z*)
{$EXTERNALSYM D3DDEVCAPS_SORTINCREASINGZ}
D3DDEVCAPS_SORTDECREASINGZ = $00000004; (* Device needs data sorted for decreasing Z*)
{$EXTERNALSYM D3DDEVCAPS_SORTDECREASINGZ}
D3DDEVCAPS_SORTEXACT = $00000008; (* Device needs data sorted exactly *)
{$EXTERNALSYM D3DDEVCAPS_SORTEXACT}
D3DDEVCAPS_EXECUTESYSTEMMEMORY = $00000010; (* Device can use execute buffers from system memory *)
{$EXTERNALSYM D3DDEVCAPS_EXECUTESYSTEMMEMORY}
D3DDEVCAPS_EXECUTEVIDEOMEMORY = $00000020; (* Device can use execute buffers from video memory *)
{$EXTERNALSYM D3DDEVCAPS_EXECUTEVIDEOMEMORY}
D3DDEVCAPS_TLVERTEXSYSTEMMEMORY = $00000040; (* Device can use TL buffers from system memory *)
{$EXTERNALSYM D3DDEVCAPS_TLVERTEXSYSTEMMEMORY}
D3DDEVCAPS_TLVERTEXVIDEOMEMORY = $00000080; (* Device can use TL buffers from video memory *)
{$EXTERNALSYM D3DDEVCAPS_TLVERTEXVIDEOMEMORY}
D3DDEVCAPS_TEXTURESYSTEMMEMORY = $00000100; (* Device can texture from system memory *)
{$EXTERNALSYM D3DDEVCAPS_TEXTURESYSTEMMEMORY}
D3DDEVCAPS_TEXTUREVIDEOMEMORY = $00000200; (* Device can texture from device memory *)
{$EXTERNALSYM D3DDEVCAPS_TEXTUREVIDEOMEMORY}
{$IFDEF DIRECT3D_VERSION_5}
D3DDEVCAPS_DRAWPRIMTLVERTEX = $00000400; (* Device can draw TLVERTEX primitives *)
{$EXTERNALSYM D3DDEVCAPS_DRAWPRIMTLVERTEX}
D3DDEVCAPS_CANRENDERAFTERFLIP = $00000800; (* Device can render without waiting for flip to complete *)
{$EXTERNALSYM D3DDEVCAPS_CANRENDERAFTERFLIP}
D3DDEVCAPS_TEXTURENONLOCALVIDMEM = $00001000; (* Device can texture from nonlocal video memory *)
{$EXTERNALSYM D3DDEVCAPS_TEXTURENONLOCALVIDMEM}
{$ENDIF} // DIRECT3D_VERSION_5
{$IFDEF DIRECT3D_VERSION_6}
D3DDEVCAPS_DRAWPRIMITIVES2 = $00002000; (* Device can support DrawPrimitives2 *)
{$EXTERNALSYM D3DDEVCAPS_DRAWPRIMITIVES2}
D3DDEVCAPS_SEPARATETEXTUREMEMORIES = $00004000; (* Device is texturing from separate memory pools *)
{$EXTERNALSYM D3DDEVCAPS_SEPARATETEXTUREMEMORIES}
D3DDEVCAPS_DRAWPRIMITIVES2EX = $00008000; (* Device can support Extended DrawPrimitives2 i.e. DX7 compliant driver*)
{$EXTERNALSYM D3DDEVCAPS_DRAWPRIMITIVES2EX}
{$ENDIF} // DIRECT3D_VERSION_6
{$IFDEF DIRECT3D_VERSION_7}
D3DDEVCAPS_HWTRANSFORMANDLIGHT = $00010000; (* Device can support transformation and lighting in hardware and DRAWPRIMITIVES2EX must be also *)
{$EXTERNALSYM D3DDEVCAPS_HWTRANSFORMANDLIGHT}
D3DDEVCAPS_CANBLTSYSTONONLOCAL = $00020000; (* Device supports a Tex Blt from system memory to non-local vidmem *)
{$EXTERNALSYM D3DDEVCAPS_CANBLTSYSTONONLOCAL}
D3DDEVCAPS_HWRASTERIZATION = $00080000; (* Device has HW acceleration for rasterization *)
{$EXTERNALSYM D3DDEVCAPS_HWRASTERIZATION}
(*
* These are the flags in the D3DDEVICEDESC7.dwVertexProcessingCaps field
*)
(* device can do texgen *)
D3DVTXPCAPS_TEXGEN = $00000001;
{$EXTERNALSYM D3DVTXPCAPS_TEXGEN}
(* device can do IDirect3DDevice7 colormaterialsource ops *)
D3DVTXPCAPS_MATERIALSOURCE7 = $00000002;
{$EXTERNALSYM D3DVTXPCAPS_MATERIALSOURCE7}
(* device can do vertex fog *)
D3DVTXPCAPS_VERTEXFOG = $00000004;
{$EXTERNALSYM D3DVTXPCAPS_VERTEXFOG}
(* device can do directional lights *)
D3DVTXPCAPS_DIRECTIONALLIGHTS = $00000008;
{$EXTERNALSYM D3DVTXPCAPS_DIRECTIONALLIGHTS}
(* device can do positional lights (includes point and spot) *)
D3DVTXPCAPS_POSITIONALLIGHTS = $00000010;
{$EXTERNALSYM D3DVTXPCAPS_POSITIONALLIGHTS}
(* device can do local viewer *)
D3DVTXPCAPS_LOCALVIEWER = $00000020;
{$EXTERNALSYM D3DVTXPCAPS_LOCALVIEWER}
{$ENDIF} // DIRECT3D_VERSION_7
D3DFDS_COLORMODEL = $00000001; (* Match color model *)
{$EXTERNALSYM D3DFDS_COLORMODEL}
D3DFDS_GUID = $00000002; (* Match guid *)
{$EXTERNALSYM D3DFDS_GUID}
D3DFDS_HARDWARE = $00000004; (* Match hardware/software *)
{$EXTERNALSYM D3DFDS_HARDWARE}
D3DFDS_TRIANGLES = $00000008; (* Match in triCaps *)
{$EXTERNALSYM D3DFDS_TRIANGLES}
D3DFDS_LINES = $00000010; (* Match in lineCaps *)
{$EXTERNALSYM D3DFDS_LINES}
D3DFDS_MISCCAPS = $00000020; (* Match primCaps.dwMiscCaps *)
{$EXTERNALSYM D3DFDS_MISCCAPS}
D3DFDS_RASTERCAPS = $00000040; (* Match primCaps.dwRasterCaps *)
{$EXTERNALSYM D3DFDS_RASTERCAPS}
D3DFDS_ZCMPCAPS = $00000080; (* Match primCaps.dwZCmpCaps *)
{$EXTERNALSYM D3DFDS_ZCMPCAPS}
D3DFDS_ALPHACMPCAPS = $00000100; (* Match primCaps.dwAlphaCmpCaps *)
{$EXTERNALSYM D3DFDS_ALPHACMPCAPS}
D3DFDS_SRCBLENDCAPS = $00000200; (* Match primCaps.dwSourceBlendCaps *)
{$EXTERNALSYM D3DFDS_SRCBLENDCAPS}
D3DFDS_DSTBLENDCAPS = $00000400; (* Match primCaps.dwDestBlendCaps *)
{$EXTERNALSYM D3DFDS_DSTBLENDCAPS}
D3DFDS_SHADECAPS = $00000800; (* Match primCaps.dwShadeCaps *)
{$EXTERNALSYM D3DFDS_SHADECAPS}
D3DFDS_TEXTURECAPS = $00001000; (* Match primCaps.dwTextureCaps *)
{$EXTERNALSYM D3DFDS_TEXTURECAPS}
D3DFDS_TEXTUREFILTERCAPS = $00002000; (* Match primCaps.dwTextureFilterCaps *)
{$EXTERNALSYM D3DFDS_TEXTUREFILTERCAPS}
D3DFDS_TEXTUREBLENDCAPS = $00004000; (* Match primCaps.dwTextureBlendCaps *)
{$EXTERNALSYM D3DFDS_TEXTUREBLENDCAPS}
D3DFDS_TEXTUREADDRESSCAPS = $00008000; (* Match primCaps.dwTextureBlendCaps *)
{$EXTERNALSYM D3DFDS_TEXTUREADDRESSCAPS}
(*
* FindDevice arguments
*)
type
PD3DFindDeviceSearch = ^TD3DFindDeviceSearch;
_D3DFINDDEVICESEARCH = packed record
dwSize: DWORD;
dwFlags: DWORD;
bHardware: BOOL;
dcmColorModel: TD3DColorModel;
guid: TGUID;
dwCaps: DWORD;
dpcPrimCaps: TD3DPrimCaps;
end;
{$EXTERNALSYM _D3DFINDDEVICESEARCH}
D3DFINDDEVICESEARCH = _D3DFINDDEVICESEARCH;
{$EXTERNALSYM D3DFINDDEVICESEARCH}
TD3DFindDeviceSearch = _D3DFINDDEVICESEARCH;
PD3DFindDeviceResult = ^TD3DFindDeviceResult;
_D3DFINDDEVICERESULT = packed record
dwSize: DWORD;
guid: TGUID; (* guid which matched *)
ddHwDesc: TD3DDeviceDesc; (* hardware TD3DDeviceDesc *)
ddSwDesc: TD3DDeviceDesc; (* software TD3DDeviceDesc *)
end;
{$EXTERNALSYM _D3DFINDDEVICERESULT}
D3DFINDDEVICERESULT = _D3DFINDDEVICERESULT;
{$EXTERNALSYM D3DFINDDEVICERESULT}
TD3DFindDeviceResult = _D3DFINDDEVICERESULT;
(*
* Description of execute buffer.
*)
PD3DExecuteBufferDesc = ^TD3DExecuteBufferDesc;
_D3DExecuteBufferDesc = packed record
dwSize: DWORD; (* size of this structure *)
dwFlags: DWORD; (* flags indicating which fields are valid *)
dwCaps: DWORD; (* capabilities of execute buffer *)
dwBufferSize: DWORD; (* size of execute buffer data *)
lpData: Pointer; (* pointer to actual data *)
end;
{$EXTERNALSYM _D3DExecuteBufferDesc}
D3DExecuteBufferDesc = _D3DExecuteBufferDesc;
{$EXTERNALSYM D3DExecuteBufferDesc}
TD3DExecuteBufferDesc = _D3DExecuteBufferDesc;
(* D3DEXECUTEBUFFER dwFlags indicating valid fields *)
const
D3DDEB_BUFSIZE = $00000001; (* buffer size valid *)
{$EXTERNALSYM D3DDEB_BUFSIZE}
D3DDEB_CAPS = $00000002; (* caps valid *)
{$EXTERNALSYM D3DDEB_CAPS}
D3DDEB_LPDATA = $00000004; (* lpData valid *)
{$EXTERNALSYM D3DDEB_LPDATA}
(* D3DEXECUTEBUFFER dwCaps *)
D3DDEBCAPS_SYSTEMMEMORY = $00000001; (* buffer in system memory *)
{$EXTERNALSYM D3DDEBCAPS_SYSTEMMEMORY}
D3DDEBCAPS_VIDEOMEMORY = $00000002; (* buffer in device memory *)
{$EXTERNALSYM D3DDEBCAPS_VIDEOMEMORY}
D3DDEBCAPS_MEM = (D3DDEBCAPS_SYSTEMMEMORY or D3DDEBCAPS_VIDEOMEMORY);
{$EXTERNALSYM D3DDEBCAPS_MEM}
{$IFDEF DIRECT3D_VERSION_LESS_8}
{$IFDEF DIRECT3D_VERSION_7}
type
PD3DDevInfo_TextureManager = ^TD3DDevInfo_TextureManager;
_D3DDEVINFO_TEXTUREMANAGER = packed record
bThrashing: BOOL; (* indicates if thrashing *)
dwApproxBytesDownloaded: DWORD; (* Approximate number of bytes downloaded by texture manager *)
dwNumEvicts: DWORD; (* number of textures evicted *)
dwNumVidCreates: DWORD; (* number of textures created in video memory *)
dwNumTexturesUsed: DWORD; (* number of textures used *)
dwNumUsedTexInVid: DWORD; (* number of used textures present in video memory *)
dwWorkingSet: DWORD; (* number of textures in video memory *)
dwWorkingSetBytes: DWORD; (* number of bytes in video memory *)
dwTotalManaged: DWORD; (* total number of managed textures *)
dwTotalBytes: DWORD; (* total number of bytes of managed textures *)
dwLastPri: DWORD; (* priority of last texture evicted *)
end;
{$EXTERNALSYM _D3DDEVINFO_TEXTUREMANAGER}
D3DDEVINFO_TEXTUREMANAGER = _D3DDEVINFO_TEXTUREMANAGER;
{$EXTERNALSYM D3DDEVINFO_TEXTUREMANAGER}
TD3DDevInfo_TextureManager = _D3DDEVINFO_TEXTUREMANAGER;
PD3DDevInfoTextureManager = PD3DDevInfo_TextureManager;
TD3DDevInfoTextureManager = _D3DDEVINFO_TEXTUREMANAGER;
PD3DDevInfo_Texturing = ^TD3DDevInfo_Texturing;
_D3DDEVINFO_TEXTURING = packed record
dwNumLoads: DWORD; (* counts Load() API calls *)
dwApproxBytesLoaded: DWORD; (* Approximate number bytes loaded via Load() *)
dwNumPreLoads: DWORD; (* counts PreLoad() API calls *)
dwNumSet: DWORD; (* counts SetTexture() API calls *)
dwNumCreates: DWORD; (* counts texture creates *)
dwNumDestroys: DWORD; (* counts texture destroys *)
dwNumSetPriorities: DWORD; (* counts SetPriority() API calls *)
dwNumSetLODs: DWORD; (* counts SetLOD() API calls *)
dwNumLocks: DWORD; (* counts number of texture locks *)
dwNumGetDCs: DWORD; (* counts number of GetDCs to textures *)
end;
{$EXTERNALSYM _D3DDEVINFO_TEXTURING}
D3DDEVINFO_TEXTURING = _D3DDEVINFO_TEXTURING;
{$EXTERNALSYM D3DDEVINFO_TEXTURING}
TD3DDevInfo_Texturing = _D3DDEVINFO_TEXTURING;
PD3DDevInfoTexturing = PD3DDevInfo_Texturing;
TD3DDevInfoTexturing = TD3DDevInfo_Texturing;
{$ENDIF} // DIRECT3D_VERSION_7
{$ENDIF} // DIRECT3D_VERSION_LESS_8
(*==========================================================================;
*
*
* File: d3d.h
* Content: Direct3D include file
*
****************************************************************************)
// include this file content only if compiling for <=DX7 interfaces
{$IFDEF DIRECT3D_VERSION_LESS_8}
function D3DErrorString(Value: HResult): String;
{$IFDEF DIRECT3D_VERSION_5}
const
IID_IDirect3DRampDevice: TGUID =
(D1:$F2086B20;D2:$259F;D3:$11CF;D4:($A3,$1A,$00,$AA,$00,$B9,$33,$56));
{$EXTERNALSYM IID_IDirect3DRampDevice}
IID_IDirect3DRGBDevice: TGUID =
(D1:$A4665C60;D2:$2673;D3:$11CF;D4:($A3,$1A,$00,$AA,$00,$B9,$33,$56));
{$EXTERNALSYM IID_IDirect3DRGBDevice}
IID_IDirect3DHALDevice: TGUID =
(D1:$84E63dE0;D2:$46AA;D3:$11CF;D4:($81,$6F,$00,$00,$C0,$20,$15,$6E));
{$EXTERNALSYM IID_IDirect3DHALDevice}
IID_IDirect3DMMXDevice: TGUID =
(D1:$881949a1;D2:$d6f3;D3:$11d0;D4:($89,$ab,$00,$a0,$c9,$05,$41,$29));
{$EXTERNALSYM IID_IDirect3DMMXDevice}
{$ENDIF} // DIRECT3D_VERSION_5
{$IFDEF DIRECT3D_VERSION_6}
IID_IDirect3DRefDevice: TGUID =
(D1:$50936643;D2:$13e9;D3:$11d1;D4:($89,$aa,$00,$a0,$c9,$05,$41,$29));
{$EXTERNALSYM IID_IDirect3DRefDevice}
IID_IDirect3DNullDevice: TGUID =
(D1:$8767df22;D2:$bacc;D3:$11d1;D4:($89,$69,$00,$a0,$c9,$06,$29,$a8));
{$EXTERNALSYM IID_IDirect3DNullDevice}
{$ENDIF} // DIRECT3D_VERSION_6
{$IFDEF DIRECT3D_VERSION_7}
IID_IDirect3DTnLHalDevice: TGUID = '{f5049e78-4861-11d2-a407-00a0c90629a8}';
{$EXTERNALSYM IID_IDirect3DTnLHalDevice}
{$ENDIF} // DIRECT3D_VERSION_7
type
IDirect3D = interface;
{$EXTERNALSYM IDirect3D}
{$IFDEF DIRECT3D_VERSION_5}
IDirect3D2 = interface;
{$ENDIF} // DIRECT3D_VERSION_5
{$IFDEF DIRECT3D_VERSION_6}
IDirect3D3 = interface;
{$ENDIF} // DIRECT3D_VERSION_5
{$IFDEF DIRECT3D_VERSION_7}
IDirect3D7 = interface;
{$ENDIF} // DIRECT3D_VERSION_5
IDirect3DDevice = interface;
{$IFDEF DIRECT3D_VERSION_5}
IDirect3DDevice2 = interface;
{$ENDIF} // DIRECT3D_VERSION_5
{$IFDEF DIRECT3D_VERSION_6}
IDirect3DDevice3 = interface;
{$ENDIF} // DIRECT3D_VERSION_6
{$IFDEF DIRECT3D_VERSION_7}
IDirect3DDevice7 = interface;
{$ENDIF} // DIRECT3D_VERSION_7
IDirect3DExecuteBuffer = interface;
IDirect3DLight = interface;
IDirect3DMaterial = interface;
{$IFDEF DIRECT3D_VERSION_5}
IDirect3DMaterial2 = interface;
{$ENDIF} // DIRECT3D_VERSION_5
{$IFDEF DIRECT3D_VERSION_6}
IDirect3DMaterial3 = interface;
{$ENDIF} // DIRECT3D_VERSION_6
IDirect3DTexture = interface;
{$IFDEF DIRECT3D_VERSION_5}
IDirect3DTexture2 = interface;
{$ENDIF} // DIRECT3D_VERSION_5
IDirect3DViewport = interface;
{$IFDEF DIRECT3D_VERSION_5}
IDirect3DViewport2 = interface;
{$ENDIF} // DIRECT3D_VERSION_5
{$IFDEF DIRECT3D_VERSION_6}
IDirect3DViewport3 = interface;
IDirect3DVertexBuffer = interface;
{$ENDIF} // DIRECT3D_VERSION_6
{$IFDEF DIRECT3D_VERSION_7}
IDirect3DVertexBuffer7 = interface;
{$ENDIF} // DIRECT3D_VERSION_7
(*
* Interface IID's
*)
IID_IDirect3D = IDirect3D;
{$EXTERNALSYM IID_IDirect3D}
{$IFDEF DIRECT3D_VERSION_5}
IID_IDirect3D2 = IDirect3D2;
{$EXTERNALSYM IID_IDirect3D2}
{$ENDIF} // DIRECT3D_VERSION_5
{$IFDEF DIRECT3D_VERSION_6}
IID_IDirect3D3 = IDirect3D3;
{$EXTERNALSYM IID_IDirect3D3}
{$ENDIF} // DIRECT3D_VERSION_6
{$IFDEF DIRECT3D_VERSION_7}
IID_IDirect3D7 = IDirect3D7;
{$EXTERNALSYM IID_IDirect3D7}
{$ENDIF} // DIRECT3D_VERSION_7
(*
* Internal Guid to distinguish requested MMX from MMX being used as an RGB rasterizer
*)
IID_IDirect3DDevice = IDirect3DDevice;
{$EXTERNALSYM IID_IDirect3DDevice}
{$IFDEF DIRECT3D_VERSION_5}
IID_IDirect3DDevice2 = IDirect3DDevice2;
{$EXTERNALSYM IID_IDirect3DDevice2}
{$ENDIF}
{$IFDEF DIRECT3D_VERSION_6}
IID_IDirect3DDevice3 = IDirect3DDevice3;
{$EXTERNALSYM IID_IDirect3DDevice3}
{$ENDIF}
{$IFDEF DIRECT3D_VERSION_7}
IID_IDirect3DDevice7 = IDirect3DDevice7;
{$EXTERNALSYM IID_IDirect3DDevice7}
{$ENDIF}
IID_IDirect3DTexture = IDirect3DTexture;
{$EXTERNALSYM IID_IDirect3DTexture}
{$IFDEF DIRECT3D_VERSION_5}
IID_IDirect3DTexture2 = IDirect3DTexture2;
{$EXTERNALSYM IID_IDirect3DTexture2}
{$ENDIF}
IID_IDirect3DLight = IDirect3DLight;
{$EXTERNALSYM IID_IDirect3DLight}
IID_IDirect3DMaterial = IDirect3DMaterial;
{$EXTERNALSYM IID_IDirect3DMaterial}
{$IFDEF DIRECT3D_VERSION_5}
IID_IDirect3DMaterial2 = IDirect3DMaterial2;
{$EXTERNALSYM IID_IDirect3DMaterial2}
{$ENDIF}
{$IFDEF DIRECT3D_VERSION_6}
IID_IDirect3DMaterial3 = IDirect3DMaterial3;
{$EXTERNALSYM IID_IDirect3DMaterial3}
{$ENDIF}
IID_IDirect3DExecuteBuffer = IDirect3DExecuteBuffer;
{$EXTERNALSYM IID_IDirect3DExecuteBuffer}
IID_IDirect3DViewport = IDirect3DViewport;
{$EXTERNALSYM IID_IDirect3DViewport}
{$IFDEF DIRECT3D_VERSION_5}
IID_IDirect3DViewport2 = IDirect3DViewport2;
{$EXTERNALSYM IID_IDirect3DViewport2}
{$ENDIF}
{$IFDEF DIRECT3D_VERSION_6}
IID_IDirect3DViewport3 = IDirect3DViewport3;
{$EXTERNALSYM IID_IDirect3DViewport3}
{$ENDIF}
{$IFDEF DIRECT3D_VERSION_6}
IID_IDirect3DVertexBuffer = IDirect3DVertexBuffer;
{$EXTERNALSYM IID_IDirect3DVertexBuffer}
{$ENDIF}
{$IFDEF DIRECT3D_VERSION_7}
IID_IDirect3DVertexBuffer7 = IDirect3DVertexBuffer7;
{$EXTERNALSYM IID_IDirect3DVertexBuffer7}
{$ENDIF}
(*
* Direct3D interfaces
*)
{$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirect3D);'}
IDirect3D = interface(IUnknown)
['{3BBA0080-2421-11CF-A31A-00AA00B93356}']
(*** IDirect3D methods ***)
function Initialize(lpREFIID: {REFIID} PGUID): HResult; stdcall;
function EnumDevices(lpEnumDevicesCallback: TD3DEnumDevicesCallback;
lpUserArg: Pointer): HResult; stdcall;
function CreateLight(var lplpDirect3Dlight: IDirect3DLight;
pUnkOuter: IUnknown): HResult; stdcall;
function CreateMaterial(var lplpDirect3DMaterial: IDirect3DMaterial;
pUnkOuter: IUnknown): HResult; stdcall;
function CreateViewport(var lplpD3DViewport: IDirect3DViewport;
pUnkOuter: IUnknown): HResult; stdcall;
function FindDevice(var lpD3DFDS: TD3DFindDeviceSearch;
var lpD3DFDR: TD3DFindDeviceResult): HResult; stdcall;
end;
{$IFDEF DIRECT3D_VERSION_5}
{$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirect3D2);'}
{$EXTERNALSYM IDirect3D2}
IDirect3D2 = interface(IUnknown)
['{6aae1ec1-662a-11d0-889d-00aa00bbb76a}']
(*** IDirect3D2 methods ***)
function EnumDevices(lpEnumDevicesCallback: TD3DEnumDevicesCallback;
lpUserArg: Pointer): HResult; stdcall;
function CreateLight(var lplpDirect3Dlight: IDirect3DLight;
pUnkOuter: IUnknown): HResult; stdcall;
function CreateMaterial(var lplpDirect3DMaterial2: IDirect3DMaterial2;
pUnkOuter: IUnknown): HResult; stdcall;
function CreateViewport(var lplpD3DViewport2: IDirect3DViewport2;
pUnkOuter: IUnknown): HResult; stdcall;
function FindDevice(var lpD3DFDS: TD3DFindDeviceSearch;
var lpD3DFDR: TD3DFindDeviceResult): HResult; stdcall;
function CreateDevice(const rclsid: TRefClsID; lpDDS: IDirectDrawSurface;
out lplpD3DDevice2: IDirect3DDevice2): HResult; stdcall;
end;
{$ENDIF} // DIRECT3D_VERSION_5
{$IFDEF DIRECT3D_VERSION_6}
{$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirect3D3);'}
{$EXTERNALSYM IDirect3D3}
IDirect3D3 = interface(IUnknown)
['{bb223240-e72b-11d0-a9b4-00aa00c0993e}']
(*** IDirect3D3 methods ***)
function EnumDevices(lpEnumDevicesCallback: TD3DEnumDevicesCallback;
lpUserArg: pointer): HResult; stdcall;
function CreateLight(var lplpDirect3Dlight: IDirect3DLight;
pUnkOuter: IUnknown): HResult; stdcall;
function CreateMaterial(var lplpDirect3DMaterial3: IDirect3DMaterial3;
pUnkOuter: IUnknown): HResult; stdcall;
function CreateViewport(var lplpD3DViewport3: IDirect3DViewport3;
pUnkOuter: IUnknown): HResult; stdcall;
function FindDevice(var lpD3DFDS: TD3DFindDeviceSearch;
var lpD3DFDR: TD3DFindDeviceResult): HResult; stdcall;
function CreateDevice(const rclsid: TRefClsID; lpDDS: IDirectDrawSurface4;
out lplpD3DDevice: IDirect3DDevice3; pUnkOuter: IUnknown): HResult; stdcall;
function CreateVertexBuffer(var lpVBDesc: TD3DVertexBufferDesc;
var lpD3DVertexBuffer: IDirect3DVertexBuffer;
dwFlags: DWORD; pUnkOuter: IUnknown): HResult; stdcall;
function EnumZBufferFormats(const riidDevice: TRefClsID; lpEnumCallback:
TD3DEnumPixelFormatsCallback; lpContext: Pointer): HResult; stdcall;
function EvictManagedTextures : HResult; stdcall;
end;
{$ENDIF} // DIRECT3D_VERSION_6
{$IFDEF DIRECT3D_VERSION_7}
{$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirect3D7);'}
{$EXTERNALSYM IDirect3D7}
IDirect3D7 = interface(IUnknown)
['{f5049e77-4861-11d2-a407-00a0c90629a8}']
(*** IDirect3D7 methods ***)
function EnumDevices(lpEnumDevicesCallback: TD3DEnumDevicesCallback7;
lpUserArg: pointer): HResult; stdcall;
function CreateDevice(const rclsid: TGUID; lpDDS: IDirectDrawSurface7;
out lplpD3DDevice: IDirect3DDevice7): HResult; stdcall;
function CreateVertexBuffer(const lpVBDesc: TD3DVertexBufferDesc;
out lplpD3DVertexBuffer: IDirect3DVertexBuffer7;
dwFlags: DWORD): HResult; stdcall;
function EnumZBufferFormats(const riidDevice: TGUID; lpEnumCallback:
TD3DEnumPixelFormatsCallback; lpContext: pointer): HResult; stdcall;
function EvictManagedTextures : HResult; stdcall;
end;
{$ENDIF} // DIRECT3D_VERSION_7
(*
* Direct3D Device interfaces
*)
{$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirect3DDevice);'}
{$EXTERNALSYM IDirect3DDevice}
IDirect3DDevice = interface(IUnknown)
['{64108800-957d-11d0-89ab-00a0c9054129}']
(*** IDirect3DDevice methods ***)
function Initialize(lpd3d: IDirect3D; lpGUID: PGUID;
var lpd3ddvdesc: TD3DDeviceDesc): HResult; stdcall;
function GetCaps(var lpD3DHWDevDesc: TD3DDeviceDesc;
var lpD3DHELDevDesc: TD3DDeviceDesc): HResult; stdcall;
function SwapTextureHandles(lpD3DTex1: IDirect3DTexture;
lpD3DTex2: IDirect3DTexture): HResult; stdcall;
function CreateExecuteBuffer(var lpDesc: TD3DExecuteBufferDesc ;
var lplpDirect3DExecuteBuffer: IDirect3DExecuteBuffer;
pUnkOuter: IUnknown): HResult; stdcall;
function GetStats(var lpD3DStats: TD3DStats): HResult; stdcall;
function Execute(lpDirect3DExecuteBuffer: IDirect3DExecuteBuffer;
lpDirect3DViewport: IDirect3DViewport; dwFlags: DWORD): HResult; stdcall;
function AddViewport(lpDirect3DViewport: IDirect3DViewport): HResult; stdcall;
function DeleteViewport(lpDirect3DViewport: IDirect3DViewport): HResult; stdcall;
function NextViewport(lpDirect3DViewport: IDirect3DViewport;
var lplpDirect3DViewport: IDirect3DViewport; dwFlags: DWORD): HResult; stdcall;
function Pick(lpDirect3DExecuteBuffer: IDirect3DExecuteBuffer;
lpDirect3DViewport: IDirect3DViewport; dwFlags: DWORD;
var lpRect: TD3DRect): HResult; stdcall;
function GetPickRecords(var lpCount: DWORD;
var lpD3DPickRec: TD3DPickRecord): HResult; stdcall;
function EnumTextureFormats(lpd3dEnumTextureProc:
TD3DEnumTextureFormatsCallback; lpArg: Pointer):
HResult; stdcall;
function CreateMatrix(var lpD3DMatHandle: TD3DMatrixHandle): HResult; stdcall;
function SetMatrix(d3dMatHandle: TD3DMatrixHandle;
var lpD3DMatrix: TD3DMatrix): HResult; stdcall;
function GetMatrix(var lpD3DMatHandle: TD3DMatrixHandle;
var lpD3DMatrix: TD3DMatrix): HResult; stdcall;
function DeleteMatrix(d3dMatHandle: TD3DMatrixHandle): HResult; stdcall;
function BeginScene: HResult; stdcall;
function EndScene: HResult; stdcall;
function GetDirect3D(var lpD3D: IDirect3D): HResult; stdcall;
end;
{$IFDEF DIRECT3D_VERSION_5}
{$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirect3DDevice2);'}
{$EXTERNALSYM IDirect3DDevice2}
IDirect3DDevice2 = interface(IUnknown)
['{93281501-8cf8-11d0-89ab-00a0c9054129}']
(*** IDirect3DDevice2 methods ***)
function GetCaps(var lpD3DHWDevDesc: TD3DDeviceDesc;
var lpD3DHELDevDesc: TD3DDeviceDesc): HResult; stdcall;
function SwapTextureHandles(lpD3DTex1: IDirect3DTexture2;
lpD3DTex2: IDirect3DTexture2): HResult; stdcall;
function GetStats(var lpD3DStats: TD3DStats): HResult; stdcall;
function AddViewport(lpDirect3DViewport2: IDirect3DViewport2): HResult; stdcall;
function DeleteViewport(lpDirect3DViewport: IDirect3DViewport2): HResult; stdcall;
function NextViewport(lpDirect3DViewport: IDirect3DViewport2;
var lplpDirect3DViewport: IDirect3DViewport2; dwFlags: DWORD):
HResult; stdcall;
function EnumTextureFormats(
lpd3dEnumTextureProc: TD3DEnumTextureFormatsCallback; lpArg: Pointer):
HResult; stdcall;
function BeginScene: HResult; stdcall;
function EndScene: HResult; stdcall;
function GetDirect3D(var lpD3D: IDirect3D2): HResult; stdcall;
(*** DrawPrimitive API ***)
function SetCurrentViewport(lpd3dViewport2: IDirect3DViewport2)
: HResult; stdcall;
function GetCurrentViewport(var lplpd3dViewport2: IDirect3DViewport2)
: HResult; stdcall;
function SetRenderTarget(lpNewRenderTarget: IDirectDrawSurface)
: HResult; stdcall;
function GetRenderTarget(var lplpNewRenderTarget: IDirectDrawSurface)
: HResult; stdcall;
function Begin_(d3dpt: TD3DPrimitiveType; d3dvt: TD3DVertexType;
dwFlags: DWORD): HResult; stdcall;
function BeginIndexed(dptPrimitiveType: TD3DPrimitiveType; dvtVertexType:
TD3DVertexType; lpvVertices: pointer; dwNumVertices: DWORD;
dwFlags: DWORD): HResult; stdcall;
function Vertex(lpVertexType: pointer): HResult; stdcall;
function Index(wVertexIndex: WORD): HResult; stdcall;
function End_(dwFlags: DWORD): HResult; stdcall;
function GetRenderState(dwRenderStateType: TD3DRenderStateType;
var lpdwRenderState): HResult; stdcall;
function SetRenderState(dwRenderStateType: TD3DRenderStateType;
dwRenderState: DWORD): HResult; stdcall;
function GetLightState(dwLightStateType: TD3DLightStateType;
var lpdwLightState): HResult; stdcall;
function SetLightState(dwLightStateType: TD3DLightStateType;
dwLightState: DWORD): HResult; stdcall;
function SetTransform(dtstTransformStateType: TD3DTransformStateType;
var lpD3DMatrix: TD3DMatrix): HResult; stdcall;
function GetTransform(dtstTransformStateType: TD3DTransformStateType;
var lpD3DMatrix: TD3DMatrix): HResult; stdcall;
function MultiplyTransform(dtstTransformStateType: TD3DTransformStateType;
var lpD3DMatrix: TD3DMatrix): HResult; stdcall;
function DrawPrimitive(dptPrimitiveType: TD3DPrimitiveType;
dvtVertexType: TD3DVertexType; var lpvVertices; dwVertexCount,
dwFlags: DWORD): HResult; stdcall;
function DrawIndexedPrimitive(dptPrimitiveType: TD3DPrimitiveType;
dwVertexTypeDesc: DWORD; lpvVertices: pointer; dwVertexCount: DWORD;
var lpwIndices: WORD; dwIndexCount, dwFlags: DWORD): HResult; stdcall;
function SetClipStatus(var lpD3DClipStatus: TD3DClipStatus): HResult; stdcall;
function GetClipStatus(var lpD3DClipStatus: TD3DClipStatus): HResult; stdcall;
end;
{$ENDIF} // DIRECT3D_VERSION_5
{$IFDEF DIRECT3D_VERSION_6}
{$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirect3DDevice3);'}
{$EXTERNALSYM IDirect3DDevice3}
IDirect3DDevice3 = interface(IUnknown)
['{b0ab3b60-33d7-11d1-a981-00c04fd7b174}']
(*** IDirect3DDevice2 methods ***)
function GetCaps(var lpD3DHWDevDesc: TD3DDeviceDesc;
var lpD3DHELDevDesc: TD3DDeviceDesc): HResult; stdcall;
function GetStats(var lpD3DStats: TD3DStats): HResult; stdcall;
function AddViewport(lpDirect3DViewport: IDirect3DViewport3): HResult; stdcall;
function DeleteViewport(lpDirect3DViewport: IDirect3DViewport3): HResult; stdcall;
function NextViewport(lpDirect3DViewport: IDirect3DViewport3;
var lplpAnotherViewport: IDirect3DViewport3; dwFlags: DWORD): HResult; stdcall;
function EnumTextureFormats(
lpd3dEnumPixelProc: TD3DEnumPixelFormatsCallback; lpArg: Pointer):
HResult; stdcall;
function BeginScene: HResult; stdcall;
function EndScene: HResult; stdcall;
function GetDirect3D(var lpD3D: IDirect3D3): HResult; stdcall;
function SetCurrentViewport(lpd3dViewport: IDirect3DViewport3)
: HResult; stdcall;
function GetCurrentViewport(var lplpd3dViewport: IDirect3DViewport3)
: HResult; stdcall;
function SetRenderTarget(lpNewRenderTarget: IDirectDrawSurface4)
: HResult; stdcall;
function GetRenderTarget(var lplpNewRenderTarget: IDirectDrawSurface4)
: HResult; stdcall;
function Begin_(d3dpt: TD3DPrimitiveType; dwVertexTypeDesc: DWORD;
dwFlags: DWORD): HResult; stdcall;
function BeginIndexed(dptPrimitiveType: TD3DPrimitiveType;
dwVertexTypeDesc: DWORD; lpvVertices: pointer; dwNumVertices: DWORD;
dwFlags: DWORD): HResult; stdcall;
function Vertex(lpVertex: pointer): HResult; stdcall;
function Index(wVertexIndex: WORD): HResult; stdcall;
function End_(dwFlags: DWORD): HResult; stdcall;
function GetRenderState(dwRenderStateType: TD3DRenderStateType;
var lpdwRenderState): HResult; stdcall;
function SetRenderState(dwRenderStateType: TD3DRenderStateType;
dwRenderState: DWORD): HResult; stdcall;
function GetLightState(dwLightStateType: TD3DLightStateType;
var lpdwLightState): HResult; stdcall;
function SetLightState(dwLightStateType: TD3DLightStateType;
dwLightState: DWORD): HResult; stdcall;
function SetTransform(dtstTransformStateType: TD3DTransformStateType;
var lpD3DMatrix: TD3DMatrix): HResult; stdcall;
function GetTransform(dtstTransformStateType: TD3DTransformStateType;
var lpD3DMatrix: TD3DMatrix): HResult; stdcall;
function MultiplyTransform(dtstTransformStateType: TD3DTransformStateType;
var lpD3DMatrix: TD3DMatrix): HResult; stdcall;
function DrawPrimitive(dptPrimitiveType: TD3DPrimitiveType;
dwVertexTypeDesc: DWORD; const lpvVertices;
dwVertexCount, dwFlags: DWORD): HResult; stdcall;
function DrawIndexedPrimitive(dptPrimitiveType: TD3DPrimitiveType;
dwVertexTypeDesc: DWORD; const lpvVertices; dwVertexCount: DWORD;
var lpwIndices: WORD; dwIndexCount, dwFlags: DWORD): HResult; stdcall;
function SetClipStatus(var lpD3DClipStatus: TD3DClipStatus): HResult; stdcall;
function GetClipStatus(var lpD3DClipStatus: TD3DClipStatus): HResult; stdcall;
function DrawPrimitiveStrided(dptPrimitiveType: TD3DPrimitiveType;
dwVertexTypeDesc : DWORD;
var lpVertexArray: TD3DDrawPrimitiveStridedData;
dwVertexCount, dwFlags: DWORD): HResult; stdcall;
function DrawIndexedPrimitiveStrided(dptPrimitiveType: TD3DPrimitiveType;
dwVertexTypeDesc : DWORD;
var lpVertexArray: TD3DDrawPrimitiveStridedData; dwVertexCount: DWORD;
var lpwIndices: WORD; dwIndexCount, dwFlags: DWORD): HResult; stdcall;
function DrawPrimitiveVB(dptPrimitiveType: TD3DPrimitiveType;
lpd3dVertexBuffer: IDirect3DVertexBuffer;
dwStartVertex, dwNumVertices, dwFlags: DWORD): HResult; stdcall;
function DrawIndexedPrimitiveVB(dptPrimitiveType: TD3DPrimitiveType;
lpd3dVertexBuffer: IDirect3DVertexBuffer; var lpwIndices: WORD;
dwIndexCount, dwFlags: DWORD): HResult; stdcall;
function ComputeSphereVisibility(var lpCenters: TD3DVector;
var lpRadii: TD3DValue; dwNumSpheres, dwFlags: DWORD;
var lpdwReturnValues: DWORD): HResult; stdcall;
function GetTexture(dwStage: DWORD; var lplpTexture: IDirect3DTexture2)
: HResult; stdcall;
function SetTexture(dwStage: DWORD; lplpTexture: IDirect3DTexture2)
: HResult; stdcall;
function GetTextureStageState(dwStage: DWORD;
dwState: TD3DTextureStageStateType; var lpdwValue: DWORD): HResult; stdcall;
function SetTextureStageState(dwStage: DWORD;
dwState: TD3DTextureStageStateType; lpdwValue: DWORD): HResult; stdcall;
function ValidateDevice(var lpdwExtraPasses: DWORD): HResult; stdcall;
end;
{$ENDIF} // DIRECT3D_VERSION_6
{$IFDEF DIRECT3D_VERSION_7}
{$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirect3DDevice7);'}
{$EXTERNALSYM IDirect3DDevice7}
IDirect3DDevice7 = interface(IUnknown)
['{f5049e79-4861-11d2-a407-00a0c90629a8}']
(*** IDirect3DDevice7 methods ***)
function GetCaps(out lpD3DDevDesc: TD3DDeviceDesc7): HResult; stdcall;
function EnumTextureFormats(lpd3dEnumPixelProc: TD3DEnumPixelFormatsCallback; lpArg: Pointer): HResult; stdcall;
function BeginScene: HResult; stdcall;
function EndScene: HResult; stdcall;
function GetDirect3D(out lpD3D: IDirect3D7): HResult; stdcall;
function SetRenderTarget(lpNewRenderTarget: IDirectDrawSurface7; dwFlags: DWORD): HResult; stdcall;
function GetRenderTarget(out lplpRenderTarget: IDirectDrawSurface7): HResult; stdcall;
function Clear(dwCount: DWORD; lpRects: PD3DRect; dwFlags, dwColor: DWORD; dvZ: TD3DValue; dwStencil: DWORD): HResult; stdcall;
function SetTransform(dtstTransformStateType: TD3DTransformStateType;
const lpD3DMatrix: TD3DMatrix): HResult; stdcall;
function GetTransform(dtstTransformStateType: TD3DTransformStateType;
out lpD3DMatrix: TD3DMatrix): HResult; stdcall;
function SetViewport(const lpViewport: TD3DViewport7): HResult; stdcall;
function MultiplyTransform(dtstTransformStateType: TD3DTransformStateType;
const lpD3DMatrix: TD3DMatrix): HResult; stdcall;
function GetViewport(out lpViewport: TD3DViewport7): HResult; stdcall;
function SetMaterial(const lpMaterial: TD3DMaterial7): HResult; stdcall;
function GetMaterial(out lpMaterial: TD3DMaterial7): HResult; stdcall;
function SetLight(dwLightIndex: DWORD; const lpLight: TD3DLight7): HResult; stdcall;
function GetLight(dwLightIndex: DWORD; out lpLight: TD3DLight7): HResult; stdcall;
function SetRenderState(dwRenderStateType: TD3DRenderStateType; dwRenderState: DWORD): HResult; stdcall;
function GetRenderState(dwRenderStateType: TD3DRenderStateType; out dwRenderState: DWORD): HResult; stdcall;
function BeginStateBlock : HResult; stdcall;
function EndStateBlock(out lpdwBlockHandle: DWORD): HResult; stdcall;
function PreLoad(lpddsTexture: IDirectDrawSurface7): HResult; stdcall;
function DrawPrimitive(dptPrimitiveType: TD3DPrimitiveType;
dwVertexTypeDesc: DWORD; const lpvVertices;
dwVertexCount, dwFlags: DWORD): HResult; stdcall;
function DrawIndexedPrimitive(dptPrimitiveType: TD3DPrimitiveType;
dwVertexTypeDesc: DWORD; const lpvVertices; dwVertexCount: DWORD;
const lpwIndices; dwIndexCount, dwFlags: DWORD): HResult; stdcall;
function SetClipStatus(const lpD3DClipStatus: TD3DClipStatus): HResult; stdcall;
function GetClipStatus(out lpD3DClipStatus: TD3DClipStatus): HResult; stdcall;
function DrawPrimitiveStrided(dptPrimitiveType: TD3DPrimitiveType;
dwVertexTypeDesc : DWORD;
const lpVertexArray: TD3DDrawPrimitiveStridedData;
dwVertexCount, dwFlags: DWORD): HResult; stdcall;
function DrawIndexedPrimitiveStrided(dptPrimitiveType: TD3DPrimitiveType;
dwVertexTypeDesc : DWORD;
const lpVertexArray: TD3DDrawPrimitiveStridedData; dwVertexCount: DWORD;
var lpwIndices: WORD; dwIndexCount, dwFlags: DWORD): HResult; stdcall;
function DrawPrimitiveVB(dptPrimitiveType: TD3DPrimitiveType;
lpd3dVertexBuffer: IDirect3DVertexBuffer7;
dwStartVertex, dwNumVertices, dwFlags: DWORD): HResult; stdcall;
function DrawIndexedPrimitiveVB(dptPrimitiveType: TD3DPrimitiveType;
lpd3dVertexBuffer: IDirect3DVertexBuffer7; dwStartVertex, dwNumVertices: DWORD;
var lpwIndices: WORD; dwIndexCount, dwFlags: DWORD): HResult; stdcall;
function ComputeSphereVisibility(const lpCenters: TD3DVector;
var lpRadii: TD3DValue; dwNumSpheres, dwFlags: DWORD;
var lpdwReturnValues: DWORD): HResult; stdcall;
function GetTexture(dwStage: DWORD; out lplpTexture: IDirectDrawSurface7): HResult; stdcall;
function SetTexture(dwStage: DWORD; lpTexture: IDirectDrawSurface7): HResult; stdcall;
function GetTextureStageState(dwStage: DWORD;
dwState: TD3DTextureStageStateType; out lpdwValue: DWORD): HResult; stdcall;
function SetTextureStageState(dwStage: DWORD;
dwState: TD3DTextureStageStateType; lpdwValue: DWORD): HResult; stdcall;
function ValidateDevice(out lpdwExtraPasses: DWORD): HResult; stdcall;
function ApplyStateBlock(dwBlockHandle: DWORD): HResult; stdcall;
function CaptureStateBlock(dwBlockHandle: DWORD): HResult; stdcall;
function DeleteStateBlock(dwBlockHandle: DWORD): HResult; stdcall;
function CreateStateBlock(d3dsbType: TD3DStateBlockType; out lpdwBlockHandle: DWORD): HResult; stdcall;
function Load(lpDestTex: IDirectDrawSurface7; lpDestPoint: PPoint;
lpSrcTex: IDirectDrawSurface7; lprcSrcRect: PRect; dwFlags: DWORD): HResult; stdcall;
function LightEnable(dwLightIndex: DWORD; bEnable: BOOL): HResult; stdcall;
function GetLightEnable(dwLightIndex: DWORD; out bEnable: BOOL): HResult; stdcall;
function SetClipPlane(dwIndex: DWORD; pPlaneEquation: PD3DValue): HResult; stdcall;
function GetClipPlane(dwIndex: DWORD; pPlaneEquation: PD3DValue): HResult; stdcall;
function GetInfo(dwDevInfoID: DWORD; pDevInfoStruct: Pointer; dwSize: DWORD): HResult; stdcall;
end;
{$ENDIF} // DIRECT3D_VERSION_7
(*
* Execute Buffer interface
*)
{$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirect3DExecuteBuffer);'}
{$EXTERNALSYM IDirect3DExecuteBuffer}
IDirect3DExecuteBuffer = interface(IUnknown)
['{4417C145-33AD-11CF-816F-0000C020156E}']
(*** IDirect3DExecuteBuffer methods ***)
function Initialize(lpDirect3DDevice: IDirect3DDevice;
var lpDesc: TD3DExecuteBufferDesc): HResult; stdcall;
function Lock(var lpDesc: TD3DExecuteBufferDesc): HResult; stdcall;
function Unlock: HResult; stdcall;
function SetExecuteData(var lpData: TD3DExecuteData): HResult; stdcall;
function GetExecuteData(var lpData: TD3DExecuteData): HResult; stdcall;
function Validate(var lpdwOffset: DWORD; lpFunc: TD3DValidateCallback;
lpUserArg: Pointer; dwReserved: DWORD): HResult; stdcall;
(*** Warning! Optimize is defined differently in the header files
and the online documentation ***)
function Optimize(dwFlags: DWORD): HResult; stdcall;
end;
(*
* Light interfaces
*)
{$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirect3DLight);'}
{$EXTERNALSYM IDirect3DLight}
IDirect3DLight = interface(IUnknown)
['{4417C142-33AD-11CF-816F-0000C020156E}']
(*** IDirect3DLight methods ***)
function Initialize(lpDirect3D: IDirect3D): HResult; stdcall;
function SetLight(var lpLight: TD3DLight2): HResult; stdcall;
function GetLight(var lpLight: TD3DLight2): HResult; stdcall;
end;
(*
* Material interfaces
*)
{$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirect3DMaterial);'}
{$EXTERNALSYM IDirect3DMaterial}
IDirect3DMaterial = interface(IUnknown)
['{4417C144-33AD-11CF-816F-0000C020156E}']
(*** IDirect3DMaterial methods ***)
function Initialize(lpDirect3D: IDirect3D): HResult; stdcall;
function SetMaterial(var lpMat: TD3DMaterial): HResult; stdcall;
function GetMaterial(var lpMat: TD3DMaterial): HResult; stdcall;
function GetHandle(lpDirect3DDevice: IDirect3DDevice;
var lpHandle: TD3DMaterialHandle): HResult; stdcall;
function Reserve: HResult; stdcall;
function Unreserve: HResult; stdcall;
end;
{$IFDEF DIRECT3D_VERSION_5}
{$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirect3DMaterial2);'}
{$EXTERNALSYM IDirect3DMaterial2}
IDirect3DMaterial2 = interface(IUnknown)
['{93281503-8cf8-11d0-89ab-00a0c9054129}']
(*** IDirect3DMaterial2 methods ***)
function SetMaterial(var lpMat: TD3DMaterial): HResult; stdcall;
function GetMaterial(var lpMat: TD3DMaterial): HResult; stdcall;
function GetHandle(lpDirect3DDevice: IDirect3DDevice2;
var lpHandle: TD3DMaterialHandle): HResult; stdcall;
end;
{$ENDIF} // DIRECT3D_VERSION_5
{$IFDEF DIRECT3D_VERSION_6}
{$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirect3DMaterial3);'}
{$EXTERNALSYM IDirect3DMaterial3}
IDirect3DMaterial3 = interface(IUnknown)
['{ca9c46f4-d3c5-11d1-b75a-00600852b312}']
(*** IDirect3DMaterial2 methods ***)
function SetMaterial(var lpMat: TD3DMaterial): HResult; stdcall;
function GetMaterial(var lpMat: TD3DMaterial): HResult; stdcall;
function GetHandle(lpDirect3DDevice: IDirect3DDevice3;
var lpHandle: TD3DMaterialHandle): HResult; stdcall;
end;
{$ENDIF} // DIRECT3D_VERSION_6
(*
* Texture interfaces
*)
{$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirect3DTexture);'}
{$EXTERNALSYM IDirect3DTexture}
IDirect3DTexture = interface(IUnknown)
['{2CDCD9E0-25A0-11CF-A31A-00AA00B93356}']
(*** IDirect3DTexture methods ***)
function Initialize(lpD3DDevice: IDirect3DDevice;
lpDDSurface: IDirectDrawSurface): HResult; stdcall;
function GetHandle(lpDirect3DDevice: IDirect3DDevice;
var lpHandle: TD3DTextureHandle): HResult; stdcall;
function PaletteChanged(dwStart: DWORD; dwCount: DWORD): HResult; stdcall;
function Load(lpD3DTexture: IDirect3DTexture): HResult; stdcall;
function Unload: HResult; stdcall;
end;
{$IFDEF DIRECT3D_VERSION_5}
{$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirect3DTexture2);'}
{$EXTERNALSYM IDirect3DTexture2}
IDirect3DTexture2 = interface(IUnknown)
['{93281502-8cf8-11d0-89ab-00a0c9054129}']
(*** IDirect3DTexture2 methods ***)
function GetHandle(lpDirect3DDevice: IDirect3DDevice2;
var lpHandle: TD3DTextureHandle): HResult; stdcall;
function PaletteChanged(dwStart: DWORD; dwCount: DWORD): HResult; stdcall;
function Load(lpD3DTexture: IDirect3DTexture2): HResult; stdcall;
end;
{$ENDIF} // DIRECT3D_VERSION_5
(*
* Viewport interfaces
*)
{$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirect3DViewport);'}
{$EXTERNALSYM IDirect3DViewport}
IDirect3DViewport = interface(IUnknown)
['{4417C146-33AD-11CF-816F-0000C020156E}']
(*** IDirect3DViewport methods ***)
function Initialize(lpDirect3D: IDirect3D): HResult; stdcall;
function GetViewport(out lpData: TD3DViewport): HResult; stdcall;
function SetViewport(const lpData: TD3DViewport): HResult; stdcall;
function TransformVertices(dwVertexCount: DWORD;
const lpData: TD3DTransformData; dwFlags: DWORD;
out lpOffscreen: DWORD): HResult; stdcall;
function LightElements(dwElementCount: DWORD;
var lpData: TD3DLightData): HResult; stdcall;
function SetBackground(hMat: TD3DMaterialHandle): HResult; stdcall;
function GetBackground(out hMat: TD3DMaterialHandle): HResult; stdcall;
function SetBackgroundDepth(lpDDSurface: IDirectDrawSurface):
HResult; stdcall;
function GetBackgroundDepth(out lplpDDSurface: IDirectDrawSurface;
out lpValid: BOOL): HResult; stdcall;
function Clear(dwCount: DWORD; const lpRects: TD3DRect; dwFlags: DWORD):
HResult; stdcall;
function AddLight(lpDirect3DLight: IDirect3DLight): HResult; stdcall;
function DeleteLight(lpDirect3DLight: IDirect3DLight): HResult; stdcall;
function NextLight(lpDirect3DLight: IDirect3DLight;
out lplpDirect3DLight: IDirect3DLight; dwFlags: DWORD): HResult; stdcall;
end;
{$IFDEF DIRECT3D_VERSION_5}
{$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirect3DViewport2);'}
{$EXTERNALSYM IDirect3DViewport2}
IDirect3DViewport2 = interface(IUnknown)
['{93281500-8cf8-11d0-89ab-00a0c9054129}']
(*** IDirect3DViewport2 methods ***)
function Initialize(lpDirect3D: IDirect3D): HResult; stdcall;
function GetViewport(out lpData: TD3DViewport): HResult; stdcall;
function SetViewport(const lpData: TD3DViewport): HResult; stdcall;
function TransformVertices(dwVertexCount: DWORD;
const lpData: TD3DTransformData; dwFlags: DWORD;
out lpOffscreen: DWORD): HResult; stdcall;
function LightElements(dwElementCount: DWORD;
var lpData: TD3DLightData): HResult; stdcall;
function SetBackground(hMat: TD3DMaterialHandle): HResult; stdcall;
function GetBackground(out hMat: TD3DMaterialHandle): HResult; stdcall;
function SetBackgroundDepth(lpDDSurface: IDirectDrawSurface):
HResult; stdcall;
function GetBackgroundDepth(out lplpDDSurface: IDirectDrawSurface;
out lpValid: BOOL): HResult; stdcall;
function Clear(dwCount: DWORD; const lpRects: TD3DRect; dwFlags: DWORD):
HResult; stdcall;
function AddLight(lpDirect3DLight: IDirect3DLight): HResult; stdcall;
function DeleteLight(lpDirect3DLight: IDirect3DLight): HResult; stdcall;
function NextLight(lpDirect3DLight: IDirect3DLight;
out lplpDirect3DLight: IDirect3DLight; dwFlags: DWORD): HResult; stdcall;
(*** IDirect3DViewport2 methods ***)
function GetViewport2(out lpData: TD3DViewport2): HResult; stdcall;
function SetViewport2(const lpData: TD3DViewport2): HResult; stdcall;
end;
{$ENDIF} // DIRECT3D_VERSION_5
{$IFDEF DIRECT3D_VERSION_6}
{$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirect3DViewport3);'}
{$EXTERNALSYM IDirect3DViewport3}
IDirect3DViewport3 = interface(IUnknown)
['{b0ab3b61-33d7-11d1-a981-00c04fd7b174}']
(*** IDirect3DViewport3 methods ***)
function Initialize(lpDirect3D: IDirect3D): HResult; stdcall;
function GetViewport(out lpData: TD3DViewport): HResult; stdcall;
function SetViewport(const lpData: TD3DViewport): HResult; stdcall;
function TransformVertices(dwVertexCount: DWORD;
const lpData: TD3DTransformData; dwFlags: DWORD;
out lpOffscreen: DWORD): HResult; stdcall;
function LightElements(dwElementCount: DWORD;
var lpData: TD3DLightData): HResult; stdcall;
function SetBackground(hMat: TD3DMaterialHandle): HResult; stdcall;
function GetBackground(var hMat: TD3DMaterialHandle): HResult; stdcall;
function SetBackgroundDepth(
lpDDSurface: IDirectDrawSurface): HResult; stdcall;
function GetBackgroundDepth(out lplpDDSurface: IDirectDrawSurface;
out lpValid: BOOL): HResult; stdcall;
function Clear(dwCount: DWORD; const lpRects: TD3DRect; dwFlags: DWORD):
HResult; stdcall;
function AddLight(lpDirect3DLight: IDirect3DLight): HResult; stdcall;
function DeleteLight(lpDirect3DLight: IDirect3DLight): HResult; stdcall;
function NextLight(lpDirect3DLight: IDirect3DLight;
out lplpDirect3DLight: IDirect3DLight; dwFlags: DWORD): HResult; stdcall;
function GetViewport2(out lpData: TD3DViewport2): HResult; stdcall;
function SetViewport2(const lpData: TD3DViewport2): HResult; stdcall;
function SetBackgroundDepth2(
lpDDSurface: IDirectDrawSurface4): HResult; stdcall;
function GetBackgroundDepth2(out lplpDDSurface: IDirectDrawSurface4;
out lpValid: BOOL): HResult; stdcall;
function Clear2(dwCount: DWORD; const lpRects: TD3DRect; dwFlags: DWORD;
dwColor: DWORD; dvZ: TD3DValue; dwStencil: DWORD): HResult; stdcall;
end;
{$ENDIF} // DIRECT3D_VERSION_6
{$IFDEF DIRECT3D_VERSION_6}
{$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirect3DVertexBuffer);'}
{$EXTERNALSYM IDirect3DVertexBuffer}
IDirect3DVertexBuffer = interface(IUnknown)
['{7a503555-4a83-11d1-a5db-00a0c90367f8}']
(*** IDirect3DVertexBuffer methods ***)
function Lock(dwFlags: DWORD; var lplpData: pointer; var lpdwSize: DWORD)
: HResult; stdcall;
function Unlock : HResult; stdcall;
function ProcessVertices(dwVertexOp, dwDestIndex, dwCount: DWORD;
lpSrcBuffer: IDirect3DVertexBuffer; dwSrcIndex: DWORD;
lpD3DDevice: IDirect3DDevice3; dwFlags: DWORD): HResult; stdcall;
function GetVertexBufferDesc(var lpVBDesc: TD3DVertexBufferDesc): HResult; stdcall;
function Optimize(lpD3DDevice: IDirect3DDevice3; dwFlags: DWORD): HResult; stdcall;
end;
{$ENDIF} // DIRECT3D_VERSION_6
{$IFDEF DIRECT3D_VERSION_7}
{$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirect3DVertexBuffer7);'}
{$EXTERNALSYM IDirect3DVertexBuffer7}
IDirect3DVertexBuffer7 = interface(IUnknown)
['{f5049e7d-4861-11d2-a407-00a0c90629a8}']
(*** IDirect3DVertexBuffer methods ***)
function Lock(dwFlags: DWORD; out lplpData: Pointer; out lpdwSize: DWORD): HResult; stdcall;
function Unlock : HResult; stdcall;
function ProcessVertices(dwVertexOp, dwDestIndex, dwCount: DWORD;
lpSrcBuffer: IDirect3DVertexBuffer7; dwSrcIndex: DWORD;
lpD3DDevice: IDirect3DDevice7; dwFlags: DWORD): HResult; stdcall;
function GetVertexBufferDesc(out lpVBDesc: TD3DVertexBufferDesc): HResult; stdcall;
function Optimize(lpD3DDevice: IDirect3DDevice7; dwFlags: DWORD): HResult; stdcall;
function ProcessVerticesStrided(dwVertexOp, dwDestIndex, dwCount: DWORD;
lpVertexArray: TD3DDrawPrimitiveStridedData; dwVertexTypeDesc: DWORD;
lpD3DDevice: IDirect3DDevice7; dwFlags: DWORD): HResult; stdcall;
end;
{$ENDIF} // DIRECT3D_VERSION_7
{$IFDEF DIRECT3D_VERSION_5}
const
(****************************************************************************
*
* Flags for IDirect3DDevice::NextViewport
*
****************************************************************************)
(*
* Return the next viewport
*)
D3DNEXT_NEXT = $00000001;
{$EXTERNALSYM D3DNEXT_NEXT}
(*
* Return the first viewport
*)
D3DNEXT_HEAD = $00000002;
{$EXTERNALSYM D3DNEXT_HEAD}
(*
* Return the last viewport
*)
D3DNEXT_TAIL = $00000004;
{$EXTERNALSYM D3DNEXT_TAIL}
(****************************************************************************
*
* Flags for DrawPrimitive/DrawIndexedPrimitive
* Also valid for Begin/BeginIndexed
* Also valid for VertexBuffer::CreateVertexBuffer
****************************************************************************)
(*
* Wait until the device is ready to draw the primitive
* This will cause DP to not return DDERR_WASSTILLDRAWING
*)
D3DDP_WAIT = $00000001;
{$EXTERNALSYM D3DDP_WAIT}
{$IFDEF DIRECT3D_VERSION_LESS_6}
(*
* Hint that it is acceptable to render the primitive out of order.
*)
D3DDP_OUTOFORDER = $00000002;
{$EXTERNALSYM D3DDP_OUTOFORDER}
{$ENDIF} // DIRECT3D_VERSION_LESS_6
(*
* Hint that the primitives have been clipped by the application.
*)
D3DDP_DONOTCLIP = $00000004;
{$EXTERNALSYM D3DDP_DONOTCLIP}
(*
* Hint that the extents need not be updated.
*)
D3DDP_DONOTUPDATEEXTENTS = $00000008;
{$EXTERNALSYM D3DDP_DONOTUPDATEEXTENTS}
{$ENDIF} // DIRECT3D_VERSION_5
{$IFDEF DIRECT3D_VERSION_6}
(*
* Hint that the lighting should not be applied on vertices.
*)
D3DDP_DONOTLIGHT = $00000010;
{$EXTERNALSYM D3DDP_DONOTLIGHT}
{$ENDIF} // DIRECT3D_VERSION_6
(*
* Direct3D Errors
* DirectDraw error codes are used when errors not specified here.
*)
const
MAKE_DDHRESULT = HResult($88760000);
{$EXTERNALSYM MAKE_DDHRESULT}
D3D_OK = DD_OK;
{$EXTERNALSYM D3D_OK}
D3DERR_BADMAJORVERSION = MAKE_DDHRESULT + 700;
{$EXTERNALSYM D3DERR_BADMAJORVERSION}
D3DERR_BADMINORVERSION = MAKE_DDHRESULT + 701;
{$EXTERNALSYM D3DERR_BADMINORVERSION}
{$IFDEF DIRECT3D_VERSION_5}
(*
* An invalid device was requested by the application.
*)
D3DERR_INVALID_DEVICE = MAKE_DDHRESULT + 705;
{$EXTERNALSYM D3DERR_INVALID_DEVICE}
D3DERR_INITFAILED = MAKE_DDHRESULT + 706;
{$EXTERNALSYM D3DERR_INITFAILED}
(*
* SetRenderTarget attempted on a device that was
* QI'd off the render target.
*)
D3DERR_DEVICEAGGREGATED = MAKE_DDHRESULT + 707;
{$EXTERNALSYM D3DERR_DEVICEAGGREGATED}
{$ENDIF} // DIRECT3D_VERSION_5
D3DERR_EXECUTE_CREATE_FAILED = MAKE_DDHRESULT + 710;
{$EXTERNALSYM D3DERR_EXECUTE_CREATE_FAILED}
D3DERR_EXECUTE_DESTROY_FAILED = MAKE_DDHRESULT + 711;
{$EXTERNALSYM D3DERR_EXECUTE_DESTROY_FAILED}
D3DERR_EXECUTE_LOCK_FAILED = MAKE_DDHRESULT + 712;
{$EXTERNALSYM D3DERR_EXECUTE_LOCK_FAILED}
D3DERR_EXECUTE_UNLOCK_FAILED = MAKE_DDHRESULT + 713;
{$EXTERNALSYM D3DERR_EXECUTE_UNLOCK_FAILED}
D3DERR_EXECUTE_LOCKED = MAKE_DDHRESULT + 714;
{$EXTERNALSYM D3DERR_EXECUTE_LOCKED}
D3DERR_EXECUTE_NOT_LOCKED = MAKE_DDHRESULT + 715;
{$EXTERNALSYM D3DERR_EXECUTE_NOT_LOCKED}
D3DERR_EXECUTE_FAILED = MAKE_DDHRESULT + 716;
{$EXTERNALSYM D3DERR_EXECUTE_FAILED}
D3DERR_EXECUTE_CLIPPED_FAILED = MAKE_DDHRESULT + 717;
{$EXTERNALSYM D3DERR_EXECUTE_CLIPPED_FAILED}
D3DERR_TEXTURE_NO_SUPPORT = MAKE_DDHRESULT + 720;
{$EXTERNALSYM D3DERR_TEXTURE_NO_SUPPORT}
D3DERR_TEXTURE_CREATE_FAILED = MAKE_DDHRESULT + 721;
{$EXTERNALSYM D3DERR_TEXTURE_CREATE_FAILED}
D3DERR_TEXTURE_DESTROY_FAILED = MAKE_DDHRESULT + 722;
{$EXTERNALSYM D3DERR_TEXTURE_DESTROY_FAILED}
D3DERR_TEXTURE_LOCK_FAILED = MAKE_DDHRESULT + 723;
{$EXTERNALSYM D3DERR_TEXTURE_LOCK_FAILED}
D3DERR_TEXTURE_UNLOCK_FAILED = MAKE_DDHRESULT + 724;
{$EXTERNALSYM D3DERR_TEXTURE_UNLOCK_FAILED}
D3DERR_TEXTURE_LOAD_FAILED = MAKE_DDHRESULT + 725;
{$EXTERNALSYM D3DERR_TEXTURE_LOAD_FAILED}
D3DERR_TEXTURE_SWAP_FAILED = MAKE_DDHRESULT + 726;
{$EXTERNALSYM D3DERR_TEXTURE_SWAP_FAILED}
D3DERR_TEXTURE_LOCKED = MAKE_DDHRESULT + 727;
{$EXTERNALSYM D3DERR_TEXTURE_LOCKED}
D3DERR_TEXTURE_NOT_LOCKED = MAKE_DDHRESULT + 728;
{$EXTERNALSYM D3DERR_TEXTURE_NOT_LOCKED}
D3DERR_TEXTURE_GETSURF_FAILED = MAKE_DDHRESULT + 729;
{$EXTERNALSYM D3DERR_TEXTURE_GETSURF_FAILED}
D3DERR_MATRIX_CREATE_FAILED = MAKE_DDHRESULT + 730;
{$EXTERNALSYM D3DERR_MATRIX_CREATE_FAILED}
D3DERR_MATRIX_DESTROY_FAILED = MAKE_DDHRESULT + 731;
{$EXTERNALSYM D3DERR_MATRIX_DESTROY_FAILED}
D3DERR_MATRIX_SETDATA_FAILED = MAKE_DDHRESULT + 732;
{$EXTERNALSYM D3DERR_MATRIX_SETDATA_FAILED}
D3DERR_MATRIX_GETDATA_FAILED = MAKE_DDHRESULT + 733;
{$EXTERNALSYM D3DERR_MATRIX_GETDATA_FAILED}
D3DERR_SETVIEWPORTDATA_FAILED = MAKE_DDHRESULT + 734;
{$EXTERNALSYM D3DERR_SETVIEWPORTDATA_FAILED}
{$IFDEF DIRECT3D_VERSION_5}
D3DERR_INVALIDCURRENTVIEWPORT = MAKE_DDHRESULT + 735;
{$EXTERNALSYM D3DERR_INVALIDCURRENTVIEWPORT}
D3DERR_INVALIDPRIMITIVETYPE = MAKE_DDHRESULT + 736;
{$EXTERNALSYM D3DERR_INVALIDPRIMITIVETYPE}
D3DERR_INVALIDVERTEXTYPE = MAKE_DDHRESULT + 737;
{$EXTERNALSYM D3DERR_INVALIDVERTEXTYPE}
D3DERR_TEXTURE_BADSIZE = MAKE_DDHRESULT + 738;
{$EXTERNALSYM D3DERR_TEXTURE_BADSIZE}
D3DERR_INVALIDRAMPTEXTURE = MAKE_DDHRESULT + 739;
{$EXTERNALSYM D3DERR_INVALIDRAMPTEXTURE}
{$ENDIF} // DIRECT3D_VERSION_5
D3DERR_MATERIAL_CREATE_FAILED = MAKE_DDHRESULT + 740;
{$EXTERNALSYM D3DERR_MATERIAL_CREATE_FAILED}
D3DERR_MATERIAL_DESTROY_FAILED = MAKE_DDHRESULT + 741;
{$EXTERNALSYM D3DERR_MATERIAL_DESTROY_FAILED}
D3DERR_MATERIAL_SETDATA_FAILED = MAKE_DDHRESULT + 742;
{$EXTERNALSYM D3DERR_MATERIAL_SETDATA_FAILED}
D3DERR_MATERIAL_GETDATA_FAILED = MAKE_DDHRESULT + 743;
{$EXTERNALSYM D3DERR_MATERIAL_GETDATA_FAILED}
{$IFDEF DIRECT3D_VERSION_5}
D3DERR_INVALIDPALETTE = MAKE_DDHRESULT + 744;
{$EXTERNALSYM D3DERR_INVALIDPALETTE}
D3DERR_ZBUFF_NEEDS_SYSTEMMEMORY = MAKE_DDHRESULT + 745;
{$EXTERNALSYM D3DERR_ZBUFF_NEEDS_SYSTEMMEMORY}
D3DERR_ZBUFF_NEEDS_VIDEOMEMORY = MAKE_DDHRESULT + 746;
{$EXTERNALSYM D3DERR_ZBUFF_NEEDS_VIDEOMEMORY}
D3DERR_SURFACENOTINVIDMEM = MAKE_DDHRESULT + 747;
{$EXTERNALSYM D3DERR_SURFACENOTINVIDMEM}
{$ENDIF} // DIRECT3D_VERSION_5
D3DERR_LIGHT_SET_FAILED = MAKE_DDHRESULT + 750;
{$EXTERNALSYM D3DERR_LIGHT_SET_FAILED}
{$IFDEF DIRECT3D_VERSION_5}
D3DERR_LIGHTHASVIEWPORT = MAKE_DDHRESULT + 751;
{$EXTERNALSYM D3DERR_LIGHTHASVIEWPORT}
D3DERR_LIGHTNOTINTHISVIEWPORT = MAKE_DDHRESULT + 752;
{$EXTERNALSYM D3DERR_LIGHTNOTINTHISVIEWPORT}
{$ENDIF} // DIRECT3D_VERSION_5
D3DERR_SCENE_IN_SCENE = MAKE_DDHRESULT + 760;
{$EXTERNALSYM D3DERR_SCENE_IN_SCENE}
D3DERR_SCENE_NOT_IN_SCENE = MAKE_DDHRESULT + 761;
{$EXTERNALSYM D3DERR_SCENE_NOT_IN_SCENE}
D3DERR_SCENE_BEGIN_FAILED = MAKE_DDHRESULT + 762;
{$EXTERNALSYM D3DERR_SCENE_BEGIN_FAILED}
D3DERR_SCENE_END_FAILED = MAKE_DDHRESULT + 763;
{$EXTERNALSYM D3DERR_SCENE_END_FAILED}
{$IFDEF DIRECT3D_VERSION_5}
D3DERR_INBEGIN = MAKE_DDHRESULT + 770;
{$EXTERNALSYM D3DERR_INBEGIN}
D3DERR_NOTINBEGIN = MAKE_DDHRESULT + 771;
{$EXTERNALSYM D3DERR_NOTINBEGIN}
D3DERR_NOVIEWPORTS = MAKE_DDHRESULT + 772;
{$EXTERNALSYM D3DERR_NOVIEWPORTS}
D3DERR_VIEWPORTDATANOTSET = MAKE_DDHRESULT + 773;
{$EXTERNALSYM D3DERR_VIEWPORTDATANOTSET}
D3DERR_VIEWPORTHASNODEVICE = MAKE_DDHRESULT + 774;
{$EXTERNALSYM D3DERR_VIEWPORTHASNODEVICE}
D3DERR_NOCURRENTVIEWPORT = MAKE_DDHRESULT + 775;
{$EXTERNALSYM D3DERR_NOCURRENTVIEWPORT}
{$ENDIF} // DIRECT3D_VERSION_5
{$IFDEF DIRECT3D_VERSION_6}
D3DERR_INVALIDVERTEXFORMAT = MAKE_DDHRESULT + 2048;
{$EXTERNALSYM D3DERR_INVALIDVERTEXFORMAT}
(*
* Attempted to CreateTexture on a surface that had a color key
*)
D3DERR_COLORKEYATTACHED = MAKE_DDHRESULT + 2050;
{$EXTERNALSYM D3DERR_COLORKEYATTACHED}
D3DERR_VERTEXBUFFEROPTIMIZED = MAKE_DDHRESULT + 2060;
{$EXTERNALSYM D3DERR_VERTEXBUFFEROPTIMIZED}
D3DERR_VBUF_CREATE_FAILED = MAKE_DDHRESULT + 2061;
{$EXTERNALSYM D3DERR_VBUF_CREATE_FAILED}
D3DERR_VERTEXBUFFERLOCKED = MAKE_DDHRESULT + 2062;
{$EXTERNALSYM D3DERR_VERTEXBUFFERLOCKED}
D3DERR_ZBUFFER_NOTPRESENT = MAKE_DDHRESULT + 2070;
{$EXTERNALSYM D3DERR_ZBUFFER_NOTPRESENT}
D3DERR_STENCILBUFFER_NOTPRESENT = MAKE_DDHRESULT + 2071;
{$EXTERNALSYM D3DERR_STENCILBUFFER_NOTPRESENT}
D3DERR_WRONGTEXTUREFORMAT = MAKE_DDHRESULT + 2072;
{$EXTERNALSYM D3DERR_WRONGTEXTUREFORMAT}
D3DERR_UNSUPPORTEDCOLOROPERATION = MAKE_DDHRESULT + 2073;
{$EXTERNALSYM D3DERR_UNSUPPORTEDCOLOROPERATION}
D3DERR_UNSUPPORTEDCOLORARG = MAKE_DDHRESULT + 2074;
{$EXTERNALSYM D3DERR_UNSUPPORTEDCOLORARG}
D3DERR_UNSUPPORTEDALPHAOPERATION = MAKE_DDHRESULT + 2075;
{$EXTERNALSYM D3DERR_UNSUPPORTEDALPHAOPERATION}
D3DERR_UNSUPPORTEDALPHAARG = MAKE_DDHRESULT + 2076;
{$EXTERNALSYM D3DERR_UNSUPPORTEDALPHAARG}
D3DERR_TOOMANYOPERATIONS = MAKE_DDHRESULT + 2077;
{$EXTERNALSYM D3DERR_TOOMANYOPERATIONS}
D3DERR_CONFLICTINGTEXTUREFILTER = MAKE_DDHRESULT + 2078;
{$EXTERNALSYM D3DERR_CONFLICTINGTEXTUREFILTER}
D3DERR_UNSUPPORTEDFACTORVALUE = MAKE_DDHRESULT + 2079;
{$EXTERNALSYM D3DERR_UNSUPPORTEDFACTORVALUE}
D3DERR_CONFLICTINGRENDERSTATE = MAKE_DDHRESULT + 2081;
{$EXTERNALSYM D3DERR_CONFLICTINGRENDERSTATE}
D3DERR_UNSUPPORTEDTEXTUREFILTER = MAKE_DDHRESULT + 2082;
{$EXTERNALSYM D3DERR_UNSUPPORTEDTEXTUREFILTER}
D3DERR_TOOMANYPRIMITIVES = MAKE_DDHRESULT + 2083;
{$EXTERNALSYM D3DERR_TOOMANYPRIMITIVES}
D3DERR_INVALIDMATRIX = MAKE_DDHRESULT + 2084;
{$EXTERNALSYM D3DERR_INVALIDMATRIX}
D3DERR_TOOMANYVERTICES = MAKE_DDHRESULT + 2085;
{$EXTERNALSYM D3DERR_TOOMANYVERTICES}
D3DERR_CONFLICTINGTEXTUREPALETTE = MAKE_DDHRESULT + 2086;
{$EXTERNALSYM D3DERR_CONFLICTINGTEXTUREPALETTE}
{$ENDIF} // DIRECT3D_VERSION_6
{$IFDEF DIRECT3D_VERSION_7}
D3DERR_INVALIDSTATEBLOCK = MAKE_DDHRESULT + 2100;
{$EXTERNALSYM D3DERR_INVALIDSTATEBLOCK}
D3DERR_INBEGINSTATEBLOCK = MAKE_DDHRESULT + 2101;
{$EXTERNALSYM D3DERR_INBEGINSTATEBLOCK}
D3DERR_NOTINBEGINSTATEBLOCK = MAKE_DDHRESULT + 2102;
{$EXTERNALSYM D3DERR_NOTINBEGINSTATEBLOCK}
{$ENDIF} // DIRECT3D_VERSION_7
{$ENDIF} // DIRECT3D_VERSION_LESS_8
procedure DisableFPUExceptions;
procedure EnableFPUExceptions;
{$IFNDEF EXCLUDE_DXFILE_FROM_DIRECT3D}
(***************************************************************************
*
* Copyright (C) 1998-1999 Microsoft Corporation. All Rights Reserved.
*
* File: dxfile.h
*
* Content: DirectX File public header file
*
***************************************************************************)
var
DXFileDLL : HMODULE;
function DXFileErrorString(Value: HResult): string;
type
TDXFileFormat = (
DXFILEFORMAT_BINARY,
DXFILEFORMAT_TEXT,
DXFILEFORMAT_COMPRESSED
);
TDXFileLoadOptions = (
DXFILELOAD_FROMFILE,
DXFILELOAD_FROMRESOURCE,
DXFILELOAD_FROMMEMORY,
DXFILELOAD_INVALID_3,
DXFILELOAD_FROMSTREAM,
DXFILELOAD_INVALID_5,
DXFILELOAD_INVALID_6,
DXFILELOAD_INVALID_7,
DXFILELOAD_FROMURL
);
PDXFileLoadResource = ^TDXFileLoadResource;
TDXFileLoadResource = packed record
hModule: HModule;
lpName: PAnsiChar;
lpType: PAnsiChar;
end;
PDXFileLoadMemory = ^TDXFileLoadMemory;
TDXFileLoadMemory = packed record
lpMemory: Pointer;
dSize: DWORD;
end;
(*
* DirectX File object types.
*)
IDirectXFile = interface;
IDirectXFileEnumObject = interface;
IDirectXFileSaveObject = interface;
IDirectXFileObject = interface;
IDirectXFileData = interface;
IDirectXFileDataReference = interface;
IDirectXFileBinary = interface;
(*
* DirectX File interfaces.
*)
IDirectXFile = interface(IUnknown)
['{3d82ab40-62da-11cf-ab39-0020af71e433}']
function CreateEnumObject(pvSource: Pointer;
dwLoadOptions: TDXFileLoadOptions;
var ppEnumObj: IDirectXFileEnumObject): HResult; stdcall;
function CreateSaveObject(szFileName: PChar; dwFileFormat: TDXFileFormat;
var ppSaveObj: IDirectXFileSaveObject): HResult; stdcall;
function RegisterTemplates(pvData: Pointer; cbSize: DWORD): HResult; stdcall;
end;
IDirectXFileEnumObject = interface(IUnknown)
['{3d82ab41-62da-11cf-ab39-0020af71e433}']
function GetNextDataObject(var ppDataObj: IDirectXFileData): HResult; stdcall;
function GetDataObjectById
(const rguid: TGUID; var ppDataObj: IDirectXFileData): HResult; stdcall;
function GetDataObjectByName
(szName: PChar; var ppDataObj: IDirectXFileData): HResult; stdcall;
end;
IDirectXFileSaveObject = interface(IUnknown)
['{3d82ab42-62da-11cf-ab39-0020af71e433}']
function SaveTemplates
(cTemplates: DWORD; var ppguidTemplates: PGUID): HResult; stdcall;
function CreateDataObject(const rguidTemplate: TGUID; szName: PChar;
pguid: PGUID; cbSize: DWORD; pvData: Pointer;
var ppDataObj: IDirectXFileData): HResult; stdcall;
function SaveData(pDataObj: IDirectXFileData): HResult; stdcall;
end;
IDirectXFileObject = interface(IUnknown)
['{3d82ab43-62da-11cf-ab39-0020af71e433}']
function GetName(pstrNameBuf: PChar; var dwBufLen: DWORD): HResult; stdcall;
function GetId(var pGuidBuf: TGUID): HResult; stdcall;
end;
IDirectXFileData = interface(IDirectXFileObject)
['{3d82ab44-62da-11cf-ab39-0020af71e433}']
function GetData
(szMember: PChar; var pcbSize: DWORD; var ppvData: Pointer): HResult; stdcall;
function GetType(var ppguid: PGUID): HResult; stdcall;
function GetNextObject(var ppChildObj: IDirectXFileObject): HResult; stdcall;
function AddDataObject(pDataObj: IDirectXFileData): HResult; stdcall;
function AddDataReference(szRef: PChar; pguidRef: PGUID): HResult; stdcall;
function AddBinaryObject(szName: PChar; pguid: PGUID; szMimeType: PChar;
pvData: Pointer; cbSize: DWORD): HResult; stdcall;
end;
IDirectXFileDataReference = interface(IDirectXFileObject)
['{3d82ab45-62da-11cf-ab39-0020af71e433}']
function Resolve(var ppDataObj: IDirectXFileData): HResult; stdcall;
end;
IDirectXFileBinary = interface(IDirectXFileObject)
['{3d82ab46-62da-11cf-ab39-0020af71e433}']
function GetSize(var pcbSize: DWORD): HResult; stdcall;
function GetMimeType(var pszMimeType: PChar): HResult; stdcall;
function Read(pvData: Pointer; cbSize: DWORD; pcbRead: PDWORD{?}): HResult; stdcall;
end;
const
(*
* DirectXFile Object Class Id (for CoCreateInstance())
*)
CLSID_CDirectXFile: TGUID =
(D1:$4516ec43;D2:$8f20;D3:$11d0;D4:($9b,$6d,$00,$00,$c0,$78,$1b,$c3));
(*
* DirectX File Interface GUIDs.
*)
type
IID_IDirectXFile = IDirectXFile;
IID_IDirectXFileEnumObject = IDirectXFileEnumObject;
IID_IDirectXFileSaveObject = IDirectXFileSaveObject;
IID_IDirectXFileObject = IDirectXFileObject;
IID_IDirectXFileData = IDirectXFileData;
IID_IDirectXFileDataReference = IDirectXFileDataReference;
IID_IDirectXFileBinary = IDirectXFileBinary;
(*
* DirectX File Header template's GUID.
*)
const
TID_DXFILEHeader: TGUID =
(D1:$3d82ab43;D2:$62da;D3:$11cf;D4:($ab,$39,$00,$20,$af,$71,$e4,$33));
(*
* DirectX File errors.
*)
const
DXFILE_OK = 0;
DXFILEERR_BADOBJECT = MAKE_DDHRESULT or 850;
DXFILEERR_BADVALUE = MAKE_DDHRESULT or 851;
DXFILEERR_BADTYPE = MAKE_DDHRESULT or 852;
DXFILEERR_BADSTREAMHANDLE = MAKE_DDHRESULT or 853;
DXFILEERR_BADALLOC = MAKE_DDHRESULT or 854;
DXFILEERR_NOTFOUND = MAKE_DDHRESULT or 855;
DXFILEERR_NOTDONEYET = MAKE_DDHRESULT or 856;
DXFILEERR_FILENOTFOUND = MAKE_DDHRESULT or 857;
DXFILEERR_RESOURCENOTFOUND = MAKE_DDHRESULT or 858;
DXFILEERR_URLNOTFOUND = MAKE_DDHRESULT or 859;
DXFILEERR_BADRESOURCE = MAKE_DDHRESULT or 860;
DXFILEERR_BADFILETYPE = MAKE_DDHRESULT or 861;
DXFILEERR_BADFILEVERSION = MAKE_DDHRESULT or 862;
DXFILEERR_BADFILEFLOATSIZE = MAKE_DDHRESULT or 863;
DXFILEERR_BADFILECOMPRESSIONTYPE = MAKE_DDHRESULT or 864;
DXFILEERR_BADFILE = MAKE_DDHRESULT or 865;
DXFILEERR_PARSEERROR = MAKE_DDHRESULT or 866;
DXFILEERR_NOTEMPLATE = MAKE_DDHRESULT or 867;
DXFILEERR_BADARRAYSIZE = MAKE_DDHRESULT or 868;
DXFILEERR_BADDATAREFERENCE = MAKE_DDHRESULT or 869;
DXFILEERR_INTERNALERROR = MAKE_DDHRESULT or 870;
DXFILEERR_NOMOREOBJECTS = MAKE_DDHRESULT or 871;
DXFILEERR_BADINTRINSICS = MAKE_DDHRESULT or 872;
DXFILEERR_NOMORESTREAMHANDLES = MAKE_DDHRESULT or 873;
DXFILEERR_NOMOREDATA = MAKE_DDHRESULT or 874;
DXFILEERR_BADCACHEFILE = MAKE_DDHRESULT or 875;
DXFILEERR_NOINTERNET = MAKE_DDHRESULT or 876;
(*
* API for creating IDirectXFile interface.
*)
var
DirectXFileCreate : function
(out lplpDirectXFile: IDirectXFile): HResult; stdcall;
(* D3DRM XFile templates in binary form *)
const
D3DRM_XTEMPLATES: array [0..3214] of Byte = (
$78, $6f, $66, $20, $30, $33, $30, $32, $62,
$69, $6e, $20, $30, $30, $36, $34, $1f, 0, $1,
0, $6, 0, 0, 0, $48, $65, $61, $64, $65,
$72, $a, 0, $5, 0, $43, $ab, $82, $3d, $da,
$62, $cf, $11, $ab, $39, 0, $20, $af, $71, $e4,
$33, $28, 0, $1, 0, $5, 0, 0, 0, $6d,
$61, $6a, $6f, $72, $14, 0, $28, 0, $1, 0,
$5, 0, 0, 0, $6d, $69, $6e, $6f, $72, $14,
0, $29, 0, $1, 0, $5, 0, 0, 0, $66,
$6c, $61, $67, $73, $14, 0, $b, 0, $1f, 0,
$1, 0, $6, 0, 0, 0, $56, $65, $63, $74,
$6f, $72, $a, 0, $5, 0, $5e, $ab, $82, $3d,
$da, $62, $cf, $11, $ab, $39, 0, $20, $af, $71,
$e4, $33, $2a, 0, $1, 0, $1, 0, 0, 0,
$78, $14, 0, $2a, 0, $1, 0, $1, 0, 0,
0, $79, $14, 0, $2a, 0, $1, 0, $1, 0,
0, 0, $7a, $14, 0, $b, 0, $1f, 0, $1,
0, $8, 0, 0, 0, $43, $6f, $6f, $72, $64,
$73, $32, $64, $a, 0, $5, 0, $44, $3f, $f2,
$f6, $86, $76, $cf, $11, $8f, $52, 0, $40, $33,
$35, $94, $a3, $2a, 0, $1, 0, $1, 0, 0,
0, $75, $14, 0, $2a, 0, $1, 0, $1, 0,
0, 0, $76, $14, 0, $b, 0, $1f, 0, $1,
0, $9, 0, 0, 0, $4d, $61, $74, $72, $69,
$78, $34, $78, $34, $a, 0, $5, 0, $45, $3f,
$f2, $f6, $86, $76, $cf, $11, $8f, $52, 0, $40,
$33, $35, $94, $a3, $34, 0, $2a, 0, $1, 0,
$6, 0, 0, 0, $6d, $61, $74, $72, $69, $78,
$e, 0, $3, 0, $10, 0, 0, 0, $f, 0,
$14, 0, $b, 0, $1f, 0, $1, 0, $9, 0,
0, 0, $43, $6f, $6c, $6f, $72, $52, $47, $42,
$41, $a, 0, $5, 0, $e0, $44, $ff, $35, $7c,
$6c, $cf, $11, $8f, $52, 0, $40, $33, $35, $94,
$a3, $2a, 0, $1, 0, $3, 0, 0, 0, $72,
$65, $64, $14, 0, $2a, 0, $1, 0, $5, 0,
0, 0, $67, $72, $65, $65, $6e, $14, 0, $2a,
0, $1, 0, $4, 0, 0, 0, $62, $6c, $75,
$65, $14, 0, $2a, 0, $1, 0, $5, 0, 0,
0, $61, $6c, $70, $68, $61, $14, 0, $b, 0,
$1f, 0, $1, 0, $8, 0, 0, 0, $43, $6f,
$6c, $6f, $72, $52, $47, $42, $a, 0, $5, 0,
$81, $6e, $e1, $d3, $35, $78, $cf, $11, $8f, $52,
0, $40, $33, $35, $94, $a3, $2a, 0, $1, 0,
$3, 0, 0, 0, $72, $65, $64, $14, 0, $2a,
0, $1, 0, $5, 0, 0, 0, $67, $72, $65,
$65, $6e, $14, 0, $2a, 0, $1, 0, $4, 0,
0, 0, $62, $6c, $75, $65, $14, 0, $b, 0,
$1f, 0, $1, 0, $c, 0, 0, 0, $49, $6e,
$64, $65, $78, $65, $64, $43, $6f, $6c, $6f, $72,
$a, 0, $5, 0, $20, $b8, $30, $16, $42, $78,
$cf, $11, $8f, $52, 0, $40, $33, $35, $94, $a3,
$29, 0, $1, 0, $5, 0, 0, 0, $69, $6e,
$64, $65, $78, $14, 0, $1, 0, $9, 0, 0,
0, $43, $6f, $6c, $6f, $72, $52, $47, $42, $41,
$1, 0, $a, 0, 0, 0, $69, $6e, $64, $65,
$78, $43, $6f, $6c, $6f, $72, $14, 0, $b, 0,
$1f, 0, $1, 0, $7, 0, 0, 0, $42, $6f,
$6f, $6c, $65, $61, $6e, $a, 0, $5, 0, $a0,
$a6, $7d, $53, $37, $ca, $d0, $11, $94, $1c, 0,
$80, $c8, $c, $fa, $7b, $29, 0, $1, 0, $9,
0, 0, 0, $74, $72, $75, $65, $66, $61, $6c,
$73, $65, $14, 0, $b, 0, $1f, 0, $1, 0,
$9, 0, 0, 0, $42, $6f, $6f, $6c, $65, $61,
$6e, $32, $64, $a, 0, $5, 0, $63, $ae, $85,
$48, $e8, $78, $cf, $11, $8f, $52, 0, $40, $33,
$35, $94, $a3, $1, 0, $7, 0, 0, 0, $42,
$6f, $6f, $6c, $65, $61, $6e, $1, 0, $1, 0,
0, 0, $75, $14, 0, $1, 0, $7, 0, 0,
0, $42, $6f, $6f, $6c, $65, $61, $6e, $1, 0,
$1, 0, 0, 0, $76, $14, 0, $b, 0, $1f,
0, $1, 0, $c, 0, 0, 0, $4d, $61, $74,
$65, $72, $69, $61, $6c, $57, $72, $61, $70, $a,
0, $5, 0, $60, $ae, $85, $48, $e8, $78, $cf,
$11, $8f, $52, 0, $40, $33, $35, $94, $a3, $1,
0, $7, 0, 0, 0, $42, $6f, $6f, $6c, $65,
$61, $6e, $1, 0, $1, 0, 0, 0, $75, $14,
0, $1, 0, $7, 0, 0, 0, $42, $6f, $6f,
$6c, $65, $61, $6e, $1, 0, $1, 0, 0, 0,
$76, $14, 0, $b, 0, $1f, 0, $1, 0, $f,
0, 0, 0, $54, $65, $78, $74, $75, $72, $65,
$46, $69, $6c, $65, $6e, $61, $6d, $65, $a, 0,
$5, 0, $e1, $90, $27, $a4, $10, $78, $cf, $11,
$8f, $52, 0, $40, $33, $35, $94, $a3, $31, 0,
$1, 0, $8, 0, 0, 0, $66, $69, $6c, $65,
$6e, $61, $6d, $65, $14, 0, $b, 0, $1f, 0,
$1, 0, $8, 0, 0, 0, $4d, $61, $74, $65,
$72, $69, $61, $6c, $a, 0, $5, 0, $4d, $ab,
$82, $3d, $da, $62, $cf, $11, $ab, $39, 0, $20,
$af, $71, $e4, $33, $1, 0, $9, 0, 0, 0,
$43, $6f, $6c, $6f, $72, $52, $47, $42, $41, $1,
0, $9, 0, 0, 0, $66, $61, $63, $65, $43,
$6f, $6c, $6f, $72, $14, 0, $2a, 0, $1, 0,
$5, 0, 0, 0, $70, $6f, $77, $65, $72, $14,
0, $1, 0, $8, 0, 0, 0, $43, $6f, $6c,
$6f, $72, $52, $47, $42, $1, 0, $d, 0, 0,
0, $73, $70, $65, $63, $75, $6c, $61, $72, $43,
$6f, $6c, $6f, $72, $14, 0, $1, 0, $8, 0,
0, 0, $43, $6f, $6c, $6f, $72, $52, $47, $42,
$1, 0, $d, 0, 0, 0, $65, $6d, $69, $73,
$73, $69, $76, $65, $43, $6f, $6c, $6f, $72, $14,
0, $e, 0, $12, 0, $12, 0, $12, 0, $f,
0, $b, 0, $1f, 0, $1, 0, $8, 0, 0,
0, $4d, $65, $73, $68, $46, $61, $63, $65, $a,
0, $5, 0, $5f, $ab, $82, $3d, $da, $62, $cf,
$11, $ab, $39, 0, $20, $af, $71, $e4, $33, $29,
0, $1, 0, $12, 0, 0, 0, $6e, $46, $61,
$63, $65, $56, $65, $72, $74, $65, $78, $49, $6e,
$64, $69, $63, $65, $73, $14, 0, $34, 0, $29,
0, $1, 0, $11, 0, 0, 0, $66, $61, $63,
$65, $56, $65, $72, $74, $65, $78, $49, $6e, $64,
$69, $63, $65, $73, $e, 0, $1, 0, $12, 0,
0, 0, $6e, $46, $61, $63, $65, $56, $65, $72,
$74, $65, $78, $49, $6e, $64, $69, $63, $65, $73,
$f, 0, $14, 0, $b, 0, $1f, 0, $1, 0,
$d, 0, 0, 0, $4d, $65, $73, $68, $46, $61,
$63, $65, $57, $72, $61, $70, $73, $a, 0, $5,
0, $c0, $c5, $1e, $ed, $a8, $c0, $d0, $11, $94,
$1c, 0, $80, $c8, $c, $fa, $7b, $29, 0, $1,
0, $f, 0, 0, 0, $6e, $46, $61, $63, $65,
$57, $72, $61, $70, $56, $61, $6c, $75, $65, $73,
$14, 0, $34, 0, $1, 0, $9, 0, 0, 0,
$42, $6f, $6f, $6c, $65, $61, $6e, $32, $64, $1,
0, $e, 0, 0, 0, $66, $61, $63, $65, $57,
$72, $61, $70, $56, $61, $6c, $75, $65, $73, $e,
0, $1, 0, $f, 0, 0, 0, $6e, $46, $61,
$63, $65, $57, $72, $61, $70, $56, $61, $6c, $75,
$65, $73, $f, 0, $14, 0, $b, 0, $1f, 0,
$1, 0, $11, 0, 0, 0, $4d, $65, $73, $68,
$54, $65, $78, $74, $75, $72, $65, $43, $6f, $6f,
$72, $64, $73, $a, 0, $5, 0, $40, $3f, $f2,
$f6, $86, $76, $cf, $11, $8f, $52, 0, $40, $33,
$35, $94, $a3, $29, 0, $1, 0, $e, 0, 0,
0, $6e, $54, $65, $78, $74, $75, $72, $65, $43,
$6f, $6f, $72, $64, $73, $14, 0, $34, 0, $1,
0, $8, 0, 0, 0, $43, $6f, $6f, $72, $64,
$73, $32, $64, $1, 0, $d, 0, 0, 0, $74,
$65, $78, $74, $75, $72, $65, $43, $6f, $6f, $72,
$64, $73, $e, 0, $1, 0, $e, 0, 0, 0,
$6e, $54, $65, $78, $74, $75, $72, $65, $43, $6f,
$6f, $72, $64, $73, $f, 0, $14, 0, $b, 0,
$1f, 0, $1, 0, $10, 0, 0, 0, $4d, $65,
$73, $68, $4d, $61, $74, $65, $72, $69, $61, $6c,
$4c, $69, $73, $74, $a, 0, $5, 0, $42, $3f,
$f2, $f6, $86, $76, $cf, $11, $8f, $52, 0, $40,
$33, $35, $94, $a3, $29, 0, $1, 0, $a, 0,
0, 0, $6e, $4d, $61, $74, $65, $72, $69, $61,
$6c, $73, $14, 0, $29, 0, $1, 0, $c, 0,
0, 0, $6e, $46, $61, $63, $65, $49, $6e, $64,
$65, $78, $65, $73, $14, 0, $34, 0, $29, 0,
$1, 0, $b, 0, 0, 0, $66, $61, $63, $65,
$49, $6e, $64, $65, $78, $65, $73, $e, 0, $1,
0, $c, 0, 0, 0, $6e, $46, $61, $63, $65,
$49, $6e, $64, $65, $78, $65, $73, $f, 0, $14,
0, $e, 0, $1, 0, $8, 0, 0, 0, $4d,
$61, $74, $65, $72, $69, $61, $6c, $f, 0, $b,
0, $1f, 0, $1, 0, $b, 0, 0, 0, $4d,
$65, $73, $68, $4e, $6f, $72, $6d, $61, $6c, $73,
$a, 0, $5, 0, $43, $3f, $f2, $f6, $86, $76,
$cf, $11, $8f, $52, 0, $40, $33, $35, $94, $a3,
$29, 0, $1, 0, $8, 0, 0, 0, $6e, $4e,
$6f, $72, $6d, $61, $6c, $73, $14, 0, $34, 0,
$1, 0, $6, 0, 0, 0, $56, $65, $63, $74,
$6f, $72, $1, 0, $7, 0, 0, 0, $6e, $6f,
$72, $6d, $61, $6c, $73, $e, 0, $1, 0, $8,
0, 0, 0, $6e, $4e, $6f, $72, $6d, $61, $6c,
$73, $f, 0, $14, 0, $29, 0, $1, 0, $c,
0, 0, 0, $6e, $46, $61, $63, $65, $4e, $6f,
$72, $6d, $61, $6c, $73, $14, 0, $34, 0, $1,
0, $8, 0, 0, 0, $4d, $65, $73, $68, $46,
$61, $63, $65, $1, 0, $b, 0, 0, 0, $66,
$61, $63, $65, $4e, $6f, $72, $6d, $61, $6c, $73,
$e, 0, $1, 0, $c, 0, 0, 0, $6e, $46,
$61, $63, $65, $4e, $6f, $72, $6d, $61, $6c, $73,
$f, 0, $14, 0, $b, 0, $1f, 0, $1, 0,
$10, 0, 0, 0, $4d, $65, $73, $68, $56, $65,
$72, $74, $65, $78, $43, $6f, $6c, $6f, $72, $73,
$a, 0, $5, 0, $21, $b8, $30, $16, $42, $78,
$cf, $11, $8f, $52, 0, $40, $33, $35, $94, $a3,
$29, 0, $1, 0, $d, 0, 0, 0, $6e, $56,
$65, $72, $74, $65, $78, $43, $6f, $6c, $6f, $72,
$73, $14, 0, $34, 0, $1, 0, $c, 0, 0,
0, $49, $6e, $64, $65, $78, $65, $64, $43, $6f,
$6c, $6f, $72, $1, 0, $c, 0, 0, 0, $76,
$65, $72, $74, $65, $78, $43, $6f, $6c, $6f, $72,
$73, $e, 0, $1, 0, $d, 0, 0, 0, $6e,
$56, $65, $72, $74, $65, $78, $43, $6f, $6c, $6f,
$72, $73, $f, 0, $14, 0, $b, 0, $1f, 0,
$1, 0, $4, 0, 0, 0, $4d, $65, $73, $68,
$a, 0, $5, 0, $44, $ab, $82, $3d, $da, $62,
$cf, $11, $ab, $39, 0, $20, $af, $71, $e4, $33,
$29, 0, $1, 0, $9, 0, 0, 0, $6e, $56,
$65, $72, $74, $69, $63, $65, $73, $14, 0, $34,
0, $1, 0, $6, 0, 0, 0, $56, $65, $63,
$74, $6f, $72, $1, 0, $8, 0, 0, 0, $76,
$65, $72, $74, $69, $63, $65, $73, $e, 0, $1,
0, $9, 0, 0, 0, $6e, $56, $65, $72, $74,
$69, $63, $65, $73, $f, 0, $14, 0, $29, 0,
$1, 0, $6, 0, 0, 0, $6e, $46, $61, $63,
$65, $73, $14, 0, $34, 0, $1, 0, $8, 0,
0, 0, $4d, $65, $73, $68, $46, $61, $63, $65,
$1, 0, $5, 0, 0, 0, $66, $61, $63, $65,
$73, $e, 0, $1, 0, $6, 0, 0, 0, $6e,
$46, $61, $63, $65, $73, $f, 0, $14, 0, $e,
0, $12, 0, $12, 0, $12, 0, $f, 0, $b,
0, $1f, 0, $1, 0, $14, 0, 0, 0, $46,
$72, $61, $6d, $65, $54, $72, $61, $6e, $73, $66,
$6f, $72, $6d, $4d, $61, $74, $72, $69, $78, $a,
0, $5, 0, $41, $3f, $f2, $f6, $86, $76, $cf,
$11, $8f, $52, 0, $40, $33, $35, $94, $a3, $1,
0, $9, 0, 0, 0, $4d, $61, $74, $72, $69,
$78, $34, $78, $34, $1, 0, $b, 0, 0, 0,
$66, $72, $61, $6d, $65, $4d, $61, $74, $72, $69,
$78, $14, 0, $b, 0, $1f, 0, $1, 0, $5,
0, 0, 0, $46, $72, $61, $6d, $65, $a, 0,
$5, 0, $46, $ab, $82, $3d, $da, $62, $cf, $11,
$ab, $39, 0, $20, $af, $71, $e4, $33, $e, 0,
$12, 0, $12, 0, $12, 0, $f, 0, $b, 0,
$1f, 0, $1, 0, $9, 0, 0, 0, $46, $6c,
$6f, $61, $74, $4b, $65, $79, $73, $a, 0, $5,
0, $a9, $46, $dd, $10, $5b, $77, $cf, $11, $8f,
$52, 0, $40, $33, $35, $94, $a3, $29, 0, $1,
0, $7, 0, 0, 0, $6e, $56, $61, $6c, $75,
$65, $73, $14, 0, $34, 0, $2a, 0, $1, 0,
$6, 0, 0, 0, $76, $61, $6c, $75, $65, $73,
$e, 0, $1, 0, $7, 0, 0, 0, $6e, $56,
$61, $6c, $75, $65, $73, $f, 0, $14, 0, $b,
0, $1f, 0, $1, 0, $e, 0, 0, 0, $54,
$69, $6d, $65, $64, $46, $6c, $6f, $61, $74, $4b,
$65, $79, $73, $a, 0, $5, 0, $80, $b1, $6,
$f4, $3b, $7b, $cf, $11, $8f, $52, 0, $40, $33,
$35, $94, $a3, $29, 0, $1, 0, $4, 0, 0,
0, $74, $69, $6d, $65, $14, 0, $1, 0, $9,
0, 0, 0, $46, $6c, $6f, $61, $74, $4b, $65,
$79, $73, $1, 0, $6, 0, 0, 0, $74, $66,
$6b, $65, $79, $73, $14, 0, $b, 0, $1f, 0,
$1, 0, $c, 0, 0, 0, $41, $6e, $69, $6d,
$61, $74, $69, $6f, $6e, $4b, $65, $79, $a, 0,
$5, 0, $a8, $46, $dd, $10, $5b, $77, $cf, $11,
$8f, $52, 0, $40, $33, $35, $94, $a3, $29, 0,
$1, 0, $7, 0, 0, 0, $6b, $65, $79, $54,
$79, $70, $65, $14, 0, $29, 0, $1, 0, $5,
0, 0, 0, $6e, $4b, $65, $79, $73, $14, 0,
$34, 0, $1, 0, $e, 0, 0, 0, $54, $69,
$6d, $65, $64, $46, $6c, $6f, $61, $74, $4b, $65,
$79, $73, $1, 0, $4, 0, 0, 0, $6b, $65,
$79, $73, $e, 0, $1, 0, $5, 0, 0, 0,
$6e, $4b, $65, $79, $73, $f, 0, $14, 0, $b,
0, $1f, 0, $1, 0, $10, 0, 0, 0, $41,
$6e, $69, $6d, $61, $74, $69, $6f, $6e, $4f, $70,
$74, $69, $6f, $6e, $73, $a, 0, $5, 0, $c0,
$56, $bf, $e2, $f, $84, $cf, $11, $8f, $52, 0,
$40, $33, $35, $94, $a3, $29, 0, $1, 0, $a,
0, 0, 0, $6f, $70, $65, $6e, $63, $6c, $6f,
$73, $65, $64, $14, 0, $29, 0, $1, 0, $f,
0, 0, 0, $70, $6f, $73, $69, $74, $69, $6f,
$6e, $71, $75, $61, $6c, $69, $74, $79, $14, 0,
$b, 0, $1f, 0, $1, 0, $9, 0, 0, 0,
$41, $6e, $69, $6d, $61, $74, $69, $6f, $6e, $a,
0, $5, 0, $4f, $ab, $82, $3d, $da, $62, $cf,
$11, $ab, $39, 0, $20, $af, $71, $e4, $33, $e,
0, $12, 0, $12, 0, $12, 0, $f, 0, $b,
0, $1f, 0, $1, 0, $c, 0, 0, 0, $41,
$6e, $69, $6d, $61, $74, $69, $6f, $6e, $53, $65,
$74, $a, 0, $5, 0, $50, $ab, $82, $3d, $da,
$62, $cf, $11, $ab, $39, 0, $20, $af, $71, $e4,
$33, $e, 0, $1, 0, $9, 0, 0, 0, $41,
$6e, $69, $6d, $61, $74, $69, $6f, $6e, $f, 0,
$b, 0, $1f, 0, $1, 0, $a, 0, 0, 0,
$49, $6e, $6c, $69, $6e, $65, $44, $61, $74, $61,
$a, 0, $5, 0, $a0, $ee, $23, $3a, $b1, $94,
$d0, $11, $ab, $39, 0, $20, $af, $71, $e4, $33,
$e, 0, $1, 0, $6, 0, 0, 0, $42, $49,
$4e, $41, $52, $59, $f, 0, $b, 0, $1f, 0,
$1, 0, $3, 0, 0, 0, $55, $72, $6c, $a,
0, $5, 0, $a1, $ee, $23, $3a, $b1, $94, $d0,
$11, $ab, $39, 0, $20, $af, $71, $e4, $33, $29,
0, $1, 0, $5, 0, 0, 0, $6e, $55, $72,
$6c, $73, $14, 0, $34, 0, $31, 0, $1, 0,
$4, 0, 0, 0, $75, $72, $6c, $73, $e, 0,
$1, 0, $5, 0, 0, 0, $6e, $55, $72, $6c,
$73, $f, 0, $14, 0, $b, 0, $1f, 0, $1,
0, $f, 0, 0, 0, $50, $72, $6f, $67, $72,
$65, $73, $73, $69, $76, $65, $4d, $65, $73, $68,
$a, 0, $5, 0, $60, $c3, $63, $8a, $7d, $99,
$d0, $11, $94, $1c, 0, $80, $c8, $c, $fa, $7b,
$e, 0, $1, 0, $3, 0, 0, 0, $55, $72,
$6c, $13, 0, $1, 0, $a, 0, 0, 0, $49,
$6e, $6c, $69, $6e, $65, $44, $61, $74, $61, $f,
0, $b, 0, $1f, 0, $1, 0, $4, 0, 0,
0, $47, $75, $69, $64, $a, 0, $5, 0, $e0,
$90, $27, $a4, $10, $78, $cf, $11, $8f, $52, 0,
$40, $33, $35, $94, $a3, $29, 0, $1, 0, $5,
0, 0, 0, $64, $61, $74, $61, $31, $14, 0,
$28, 0, $1, 0, $5, 0, 0, 0, $64, $61,
$74, $61, $32, $14, 0, $28, 0, $1, 0, $5,
0, 0, 0, $64, $61, $74, $61, $33, $14, 0,
$34, 0, $2d, 0, $1, 0, $5, 0, 0, 0,
$64, $61, $74, $61, $34, $e, 0, $3, 0, $8,
0, 0, 0, $f, 0, $14, 0, $b, 0, $1f,
0, $1, 0, $e, 0, 0, 0, $53, $74, $72,
$69, $6e, $67, $50, $72, $6f, $70, $65, $72, $74,
$79, $a, 0, $5, 0, $e0, $21, $f, $7f, $e1,
$bf, $d1, $11, $82, $c0, 0, $a0, $c9, $69, $72,
$71, $31, 0, $1, 0, $3, 0, 0, 0, $6b,
$65, $79, $14, 0, $31, 0, $1, 0, $5, 0,
0, 0, $76, $61, $6c, $75, $65, $14, 0, $b,
0, $1f, 0, $1, 0, $b, 0, 0, 0, $50,
$72, $6f, $70, $65, $72, $74, $79, $42, $61, $67,
$a, 0, $5, 0, $e1, $21, $f, $7f, $e1, $bf,
$d1, $11, $82, $c0, 0, $a0, $c9, $69, $72, $71,
$e, 0, $1, 0, $e, 0, 0, 0, $53, $74,
$72, $69, $6e, $67, $50, $72, $6f, $70, $65, $72,
$74, $79, $f, 0, $b, 0, $1f, 0, $1, 0,
$e, 0, 0, 0, $45, $78, $74, $65, $72, $6e,
$61, $6c, $56, $69, $73, $75, $61, $6c, $a, 0,
$5, 0, $a0, $6a, $11, $98, $ba, $bd, $d1, $11,
$82, $c0, 0, $a0, $c9, $69, $72, $71, $1, 0,
$4, 0, 0, 0, $47, $75, $69, $64, $1, 0,
$12, 0, 0, 0, $67, $75, $69, $64, $45, $78,
$74, $65, $72, $6e, $61, $6c, $56, $69, $73, $75,
$61, $6c, $14, 0, $e, 0, $12, 0, $12, 0,
$12, 0, $f, 0, $b, 0);
{$ENDIF}
implementation
{$IFDEF DIRECT3D_VERSION_LESS_8}
{$IFDEF DIRECT3D_VERSION_7}
function D3DFVF_TEXCOORDSIZE3(CoordIndex: DWORD): DWORD;
begin
Result := (D3DFVF_TEXTUREFORMAT3 shl (CoordIndex*2 + 16));
end;
function D3DFVF_TEXCOORDSIZE2(CoordIndex: DWORD): DWORD;
begin
Result := (D3DFVF_TEXTUREFORMAT2);
end;
function D3DFVF_TEXCOORDSIZE4(CoordIndex: DWORD): DWORD;
begin
Result := (D3DFVF_TEXTUREFORMAT4 shl (CoordIndex*2 + 16));
end;
function D3DFVF_TEXCOORDSIZE1(CoordIndex: DWORD): DWORD;
begin
Result := (D3DFVF_TEXTUREFORMAT1 shl (CoordIndex*2 + 16));
end;
{$ENDIF} // DIRECT3D_VERSION_7
{$ENDIF} // DIRECT3D_VERSION_LESS_8
function D3DVal(val: variant): Single;
begin
Result := val;
end;
function D3DDivide(a, b: double): Single;
begin
Result := a / b;
end;
function D3DMultiply(a, b: double): Single;
begin
Result := a * b;
end;
// #define CI_GETALPHA(ci) ((ci) >> 24)
function CI_GETALPHA(ci: DWORD): DWORD;
begin
Result := ci shr 24;
end;
// #define CI_GETINDEX(ci) (((ci) >> 8) & 0xffff)
function CI_GETINDEX(ci: DWORD): DWORD;
begin
Result := (ci shr 8) and $ffff;
end;
// #define CI_GETFRACTION(ci) ((ci) & 0xff)
function CI_GETFRACTION(ci: DWORD): DWORD;
begin
Result := ci and $ff;
end;
// #define CI_ROUNDINDEX(ci) CI_GETINDEX((ci) + 0x80)
function CI_ROUNDINDEX(ci: DWORD): DWORD;
begin
Result := CI_GETINDEX(ci + $80);
end;
// #define CI_MASKALPHA(ci) ((ci) & 0xffffff)
function CI_MASKALPHA(ci: DWORD): DWORD;
begin
Result := ci and $ffffff;
end;
// #define CI_MAKE(a, i, f) (((a) << 24) | ((i) << 8) | (f))
function CI_MAKE(a,i,f: DWORD): DWORD;
begin
Result := (a shl 24) or (i shl 8) or f;
end;
// #define RGBA_GETALPHA(rgb) ((rgb) >> 24)
function RGBA_GETALPHA(rgb: TD3DColor): DWORD;
begin
Result := rgb shr 24;
end;
// #define RGBA_GETRED(rgb) (((rgb) >> 16) & 0xff)
function RGBA_GETRED(rgb: TD3DColor): DWORD;
begin
Result := (rgb shr 16) and $ff;
end;
// #define RGBA_GETGREEN(rgb) (((rgb) >> 8) & 0xff)
function RGBA_GETGREEN(rgb: TD3DColor): DWORD;
begin
Result := (rgb shr 8) and $ff;
end;
// #define RGBA_GETBLUE(rgb) ((rgb) & 0xff)
function RGBA_GETBLUE(rgb: TD3DColor): DWORD;
begin
Result := rgb and $ff;
end;
// #define RGBA_MAKE(r, g, b, a) ((TD3DColor) (((a) << 24) | ((r) << 16) | ((g) << 8) | (b)))
function RGBA_MAKE(r, g, b, a: DWORD): TD3DColor;
begin
Result := (a shl 24) or (r shl 16) or (g shl 8) or b;
end;
// #define D3DRGB(r, g, b) \
// (0xff000000L | (((long)((r) * 255)) << 16) | (((long)((g) * 255)) << 8) | (long)((b) * 255))
function D3DRGB(r, g, b: Single): TD3DColor;
begin
Result := $ff000000 or DWORD(Round(r * 255) shl 16)
or DWORD(Round(g * 255) shl 8)
or DWORD(Round(b * 255));
end;
// #define D3DRGBA(r, g, b, a) \
// ( (((long)((a) * 255)) << 24) | (((long)((r) * 255)) << 16) \
// | (((long)((g) * 255)) << 8) | (long)((b) * 255) \
// )
function D3DRGBA(r, g, b, a: Single): TD3DColor;
begin
Result := DWORD(Round(a * 255) shl 24) or DWORD(Round(r * 255) shl 16)
or DWORD(Round(g * 255) shl 8)
or DWORD(Round(b * 255));
end;
// #define RGB_GETRED(rgb) (((rgb) >> 16) & 0xff)
function RGB_GETRED(rgb: TD3DColor): DWORD;
begin
Result := (rgb shr 16) and $ff;
end;
// #define RGB_GETGREEN(rgb) (((rgb) >> 8) & 0xff)
function RGB_GETGREEN(rgb: TD3DColor): DWORD;
begin
Result := (rgb shr 8) and $ff;
end;
// #define RGB_GETBLUE(rgb) ((rgb) & 0xff)
function RGB_GETBLUE(rgb: TD3DColor): DWORD;
begin
Result := rgb and $ff;
end;
// #define RGBA_SETALPHA(rgba, x) (((x) << 24) | ((rgba) & 0x00ffffff))
function RGBA_SETALPHA(rgba: TD3DColor; x: DWORD): TD3DColor;
begin
Result := (x shl 24) or (rgba and $00ffffff);
end;
// #define RGB_MAKE(r, g, b) ((TD3DColor) (((r) << 16) | ((g) << 8) | (b)))
function RGB_MAKE(r, g, b: DWORD): TD3DColor;
begin
Result := (r shl 16) or (g shl 8) or b;
end;
// #define RGBA_TORGB(rgba) ((TD3DColor) ((rgba) & 0xffffff))
function RGBA_TORGB(rgba: TD3DColor): TD3DColor;
begin
Result := rgba and $00ffffff;
end;
// #define RGB_TORGBA(rgb) ((TD3DColor) ((rgb) | 0xff000000))
function RGB_TORGBA(rgb: TD3DColor): TD3DColor;
begin
Result := rgb or $ff000000;
end;
function D3DSTATE_OVERRIDE(StateType: DWORD): DWORD;
begin
Result := StateType + D3DSTATE_OVERRIDE_BIAS;
end;
function D3DTRIFLAG_STARTFLAT(len: DWORD): DWORD;
begin
if not (len in [1..29]) then len := 0;
Result := len;
end;
// #define D3DRENDERSTATE_STIPPLEPATTERN(y) (D3DRENDERSTATE_STIPPLEPATTERN00 + (y))
function D3DRENDERSTATE_STIPPLEPATTERN(y: Integer): TD3DRenderStateType;
begin
Result := TD3DRenderStateType(Ord(D3DRENDERSTATE_STIPPLEPATTERN00) + y);
end;
// Addition and subtraction
function VectorAdd(const v1, v2: TD3DVector): TD3DVector;
begin
Result.x := v1.x+v2.x;
Result.y := v1.y+v2.y;
Result.z := v1.z+v2.z;
end;
function VectorSub(const v1, v2: TD3DVector): TD3DVector;
begin
Result.x := v1.x-v2.x;
Result.y := v1.y-v2.y;
Result.z := v1.z-v2.z;
end;
// Scalar multiplication and division
function VectorMulS(const v: TD3DVector; s: TD3DValue): TD3DVector;
begin
Result.x := v.x*s;
Result.y := v.y*s;
Result.z := v.z*s;
end;
function VectorDivS(const v: TD3DVector; s: TD3DValue): TD3DVector;
begin
Result.x := v.x/s;
Result.y := v.y/s;
Result.z := v.z/s;
end;
// Memberwise multiplication and division
function VectorMul(const v1, v2: TD3DVector): TD3DVector;
begin
Result.x := v1.x*v2.x;
Result.y := v1.y*v2.y;
Result.z := v1.z*v2.z;
end;
function VectorDiv(const v1, v2: TD3DVector): TD3DVector;
begin
Result.x := v1.x/v2.x;
Result.y := v1.y/v2.y;
Result.z := v1.z/v2.z;
end;
// Vector dominance
function VectorSmaller(v1, v2: TD3DVector): boolean;
begin
result := (v1.x < v2.x) and (v1.y < v2.y) and (v1.z < v2.z);
end;
function VectorSmallerEqual(v1, v2: TD3DVector): boolean;
begin
result := (v1.x <= v2.x) and (v1.y <= v2.y) and (v1.z <= v2.z);
end;
// Bitwise equality
function VectorEqual(v1, v2: TD3DVector): boolean;
begin
result := (v1.x = v2.x) and (v1.y = v2.y) and (v1.z = v2.z);
end;
// Length-related functions
function VectorSquareMagnitude(v: TD3DVector): TD3DValue;
begin
result := (v.x*v.x) + (v.y*v.y) + (v.z*v.z);
end;
function VectorMagnitude(v: TD3DVector): TD3DValue;
begin
result := sqrt((v.x*v.x) + (v.y*v.y) + (v.z*v.z));
end;
// Returns vector with same direction and unit length
function VectorNormalize(const v: TD3DVector): TD3DVector;
begin
result := VectorDivS(v,VectorMagnitude(v));
end;
// Return min/max component of the input vector
function VectorMin(v: TD3DVector): TD3DValue;
var
ret : TD3DValue;
begin
ret := v.x;
if (v.y < ret) then ret := v.y;
if (v.z < ret) then ret := v.z;
Result := ret;
end;
function VectorMax(v: TD3DVector): TD3DValue;
var
ret : TD3DValue;
begin
ret := v.x;
if (ret < v.y) then ret := v.y;
if (ret < v.z) then ret := v.z;
Result := ret;
end;
// Return memberwise min/max of input vectors
function VectorMinimize(const v1, v2: TD3DVector): TD3DVector;
begin
if v1.x < v2.x then Result.x := v1.x else Result.x := v2.x;
if v1.y < v2.y then Result.y := v1.y else Result.y := v2.y;
if v1.z < v2.z then Result.z := v1.z else Result.z := v2.z;
end;
function VectorMaximize(const v1, v2: TD3DVector): TD3DVector;
begin
if v1.x > v2.x then Result.x := v1.x else Result.x := v2.x;
if v1.y > v2.y then Result.y := v1.y else Result.y := v2.y;
if v1.z > v2.z then Result.z := v1.z else Result.z := v2.z;
end;
// Dot and cross product
function VectorDotProduct(v1, v2: TD3DVector): TD3DValue;
begin
Result := (v1.x*v2.x) + (v1.y * v2.y) + (v1.z*v2.z);
end;
function VectorCrossProduct(const v1, v2: TD3DVector): TD3DVector;
begin
Result.x := (v1.y*v2.z) - (v1.z*v2.y);
Result.y := (v1.z*v2.x) - (v1.x*v2.z);
Result.z := (v1.x*v2.y) - (v1.y*v2.x);
end;
procedure DisableFPUExceptions;
var
FPUControlWord: Word;
asm
FSTCW FPUControlWord;
OR FPUControlWord, $4 + $1; { Divide by zero + invalid operation }
FLDCW FPUControlWord;
end;
procedure EnableFPUExceptions;
var
FPUControlWord: Word;
asm
FSTCW FPUControlWord;
AND FPUControlWord, $FFFF - $4 - $1; { Divide by zero + invalid operation }
FLDCW FPUControlWord;
end;
{$IFDEF DIRECT3D_VERSION_LESS_8}
function D3DErrorString(Value: HResult): String; //Full description not available yet
begin
case Value of
D3D_OK: Result := 'No error';
D3DERR_BADMAJORVERSION: Result := 'D3DERR_BADMAJORVERSION';
D3DERR_BADMINORVERSION: Result := 'D3DERR_BADMINORVERSION';
{$IFDEF DIRECT3D_VERSION_5}
D3DERR_INVALID_DEVICE: Result := 'D3DERR_INITFAILED';
D3DERR_INITFAILED: Result := 'D3DERR_INITFAILED';
D3DERR_DEVICEAGGREGATED: Result := 'D3DERR_DEVICEAGGREGATED';
{$ENDIF} // DIRECT3D_VERSION_5
D3DERR_EXECUTE_CREATE_FAILED: Result := 'D3DERR_EXECUTE_CREATE_FAILED';
D3DERR_EXECUTE_DESTROY_FAILED: Result := 'D3DERR_EXECUTE_DESTROY_FAILED';
D3DERR_EXECUTE_LOCK_FAILED: Result := 'D3DERR_EXECUTE_LOCK_FAILED';
D3DERR_EXECUTE_UNLOCK_FAILED: Result := 'D3DERR_EXECUTE_UNLOCK_FAILED';
D3DERR_EXECUTE_LOCKED: Result := 'D3DERR_EXECUTE_LOCKED';
D3DERR_EXECUTE_NOT_LOCKED: Result := 'D3DERR_EXECUTE_NOT_LOCKED';
D3DERR_EXECUTE_FAILED: Result := 'D3DERR_EXECUTE_FAILED';
D3DERR_EXECUTE_CLIPPED_FAILED: Result := 'D3DERR_EXECUTE_CLIPPED_FAILED';
D3DERR_TEXTURE_NO_SUPPORT: Result := 'D3DERR_TEXTURE_NO_SUPPORT';
D3DERR_TEXTURE_CREATE_FAILED: Result := 'D3DERR_TEXTURE_CREATE_FAILED';
D3DERR_TEXTURE_DESTROY_FAILED: Result := 'D3DERR_TEXTURE_DESTROY_FAILED';
D3DERR_TEXTURE_LOCK_FAILED: Result := 'D3DERR_TEXTURE_LOCK_FAILED';
D3DERR_TEXTURE_UNLOCK_FAILED: Result := 'D3DERR_TEXTURE_UNLOCK_FAILED';
D3DERR_TEXTURE_LOAD_FAILED: Result := 'D3DERR_TEXTURE_LOAD_FAILED';
D3DERR_TEXTURE_SWAP_FAILED: Result := 'D3DERR_TEXTURE_SWAP_FAILED';
D3DERR_TEXTURE_LOCKED: Result := 'D3DERR_TEXTURELOCKED';
D3DERR_TEXTURE_NOT_LOCKED: Result := 'D3DERR_TEXTURE_NOT_LOCKED';
D3DERR_TEXTURE_GETSURF_FAILED: Result := 'D3DERR_TEXTURE_GETSURF_FAILED';
D3DERR_MATRIX_CREATE_FAILED: Result := 'D3DERR_MATRIX_CREATE_FAILED';
D3DERR_MATRIX_DESTROY_FAILED: Result := 'D3DERR_MATRIX_DESTROY_FAILED';
D3DERR_MATRIX_SETDATA_FAILED: Result := 'D3DERR_MATRIX_SETDATA_FAILED';
D3DERR_MATRIX_GETDATA_FAILED: Result := 'D3DERR_MATRIX_GETDATA_FAILED';
D3DERR_SETVIEWPORTDATA_FAILED: Result := 'D3DERR_SETVIEWPORTDATA_FAILED';
{$IFDEF DIRECT3D_VERSION_5}
D3DERR_INVALIDCURRENTVIEWPORT: Result := 'D3DERR_INVALIDCURRENTVIEWPORT';
D3DERR_INVALIDPRIMITIVETYPE: Result := 'D3DERR_INVALIDPRIMITIVETYPE';
D3DERR_INVALIDVERTEXTYPE: Result := 'D3DERR_INVALIDVERTEXTYPE';
D3DERR_TEXTURE_BADSIZE: Result := 'D3DERR_TEXTURE_BADSIZE';
D3DERR_INVALIDRAMPTEXTURE: Result := 'D3DERR_INVALIDRAMPTEXTURE';
{$ENDIF} // DIRECT3D_VERSION_5
D3DERR_MATERIAL_CREATE_FAILED: Result := 'D3DERR_MATERIAL_CREATE_FAILED';
D3DERR_MATERIAL_DESTROY_FAILED: Result := 'D3DERR_MATERIAL_DESTROY_FAILED';
D3DERR_MATERIAL_SETDATA_FAILED: Result := 'D3DERR_MATERIAL_SETDATA_FAILED';
D3DERR_MATERIAL_GETDATA_FAILED: Result := 'D3DERR_MATERIAL_GETDATA_FAILED';
{$IFDEF DIRECT3D_VERSION_5}
D3DERR_INVALIDPALETTE: Result := 'D3DERR_INVALIDPALETTE';
D3DERR_ZBUFF_NEEDS_SYSTEMMEMORY: Result := 'D3DERR_ZBUFF_NEEDS_SYSTEMMEMORY';
D3DERR_ZBUFF_NEEDS_VIDEOMEMORY: Result := 'D3DERR_ZBUFF_NEEDS_VIDEOMEMORY';
D3DERR_SURFACENOTINVIDMEM: Result := 'D3DERR_SURFACENOTINVIDMEM';
{$ENDIF} // DIRECT3D_VERSION_5
D3DERR_LIGHT_SET_FAILED: Result := 'D3DERR_LIGHT_SET_FAILED';
{$IFDEF DIRECT3D_VERSION_5}
D3DERR_LIGHTHASVIEWPORT: Result := 'D3DERR_LIGHTHASVIEWPORT';
D3DERR_LIGHTNOTINTHISVIEWPORT: Result := 'D3DERR_LIGHTNOTINTHISVIEWPORT';
{$ENDIF} // DIRECT3D_VERSION_5
D3DERR_SCENE_IN_SCENE: Result := 'D3DERR_SCENE_IN_SCENE';
D3DERR_SCENE_NOT_IN_SCENE: Result := 'D3DERR_SCENE_NOT_IN_SCENE';
D3DERR_SCENE_BEGIN_FAILED: Result := 'D3DERR_SCENE_BEGIN_FAILED';
D3DERR_SCENE_END_FAILED: Result := 'D3DERR_SCENE_END_FAILED';
{$IFDEF DIRECT3D_VERSION_5}
D3DERR_INBEGIN: Result := 'D3DERR_INBEGIN';
D3DERR_NOTINBEGIN: Result := 'D3DERR_NOTINBEGIN';
D3DERR_NOVIEWPORTS: Result := 'D3DERR_NOVIEWPORTS';
D3DERR_VIEWPORTDATANOTSET: Result := 'D3DERR_VIEWPORTDATANOTSET';
D3DERR_VIEWPORTHASNODEVICE: Result := 'D3DERR_VIEWPORTHASNODEVICE';
D3DERR_NOCURRENTVIEWPORT: Result := 'D3DERR_NOCURRENTVIEWPORT';
{$ENDIF} // DIRECT3D_VERSION_5
{$IFDEF DIRECT3D_VERSION_6}
D3DERR_INVALIDVERTEXFORMAT: Result := 'D3DERR_INVALIDVERTEXFORMAT';
D3DERR_COLORKEYATTACHED: Result := 'D3DERR_COLORKEYATTACHED';
D3DERR_VERTEXBUFFEROPTIMIZED: Result := 'D3DERR_VERTEXBUFFEROPTIMIZED';
D3DERR_VBUF_CREATE_FAILED: Result := 'D3DERR_VBUF_CREATE_FAILED';
D3DERR_VERTEXBUFFERLOCKED: Result := 'D3DERR_VERTEXBUFFERLOCKED';
D3DERR_ZBUFFER_NOTPRESENT: Result := 'D3DERR_ZBUFFER_NOTPRESENT';
D3DERR_STENCILBUFFER_NOTPRESENT: Result := 'D3DERR_STENCILBUFFER_NOTPRESENT';
D3DERR_WRONGTEXTUREFORMAT: Result := 'D3DERR_WRONGTEXTUREFORMAT';
D3DERR_UNSUPPORTEDCOLOROPERATION: Result := 'D3DERR_UNSUPPORTEDCOLOROPERATION';
D3DERR_UNSUPPORTEDCOLORARG: Result := 'D3DERR_UNSUPPORTEDCOLORARG';
D3DERR_UNSUPPORTEDALPHAOPERATION: Result := 'D3DERR_UNSUPPORTEDALPHAOPERATION';
D3DERR_UNSUPPORTEDALPHAARG: Result := 'D3DERR_UNSUPPORTEDALPHAARG';
D3DERR_TOOMANYOPERATIONS: Result := 'D3DERR_TOOMANYOPERATIONS';
D3DERR_CONFLICTINGTEXTUREFILTER: Result := 'D3DERR_CONFLICTINGTEXTUREFILTER';
D3DERR_UNSUPPORTEDFACTORVALUE: Result := 'D3DERR_UNSUPPORTEDFACTORVALUE';
D3DERR_CONFLICTINGRENDERSTATE: Result := 'D3DERR_CONFLICTINGRENDERSTATE';
D3DERR_UNSUPPORTEDTEXTUREFILTER: Result := 'D3DERR_UNSUPPORTEDTEXTUREFILTER';
D3DERR_TOOMANYPRIMITIVES: Result := 'D3DERR_TOOMANYPRIMITIVES';
D3DERR_INVALIDMATRIX: Result := 'D3DERR_INVALIDMATRIX';
D3DERR_TOOMANYVERTICES: Result := 'D3DERR_TOOMANYVERTICES';
D3DERR_CONFLICTINGTEXTUREPALETTE: Result := 'D3DERR_CONFLICTINGTEXTUREPALETTE';
{$ENDIF} // DIRECT3D_VERSION_6
{$IFDEF DIRECT3D_VERSION_7}
D3DERR_INVALIDSTATEBLOCK: Result := 'D3DERR_INVALIDSTATEBLOCK';
D3DERR_INBEGINSTATEBLOCK: Result := 'D3DERR_INBEGINSTATEBLOCK';
D3DERR_NOTINBEGINSTATEBLOCK: Result := 'D3DERR_NOTINBEGINSTATEBLOCK';
{$ENDIF} // DIRECT3D_VERSION_7
else Result := 'Unrecognized Error';
end;
end;
{$ENDIF} // DIRECT3D_VERSION_LESS_8
{$IFNDEF EXCLUDE_DXFILE_FROM_DIRECT3D}
function DXFileErrorString(Value: HResult): string;
begin
case Value of
DXFILE_OK: Result := 'Command completed successfully. Equivalent to DD_OK.';
DXFILEERR_BADVALUE: Result := 'Parameter is invalid.';
DXFILEERR_BADTYPE: Result := 'Object type is invalid.';
DXFILEERR_BADALLOC: Result := 'Memory allocation failed.';
DXFILEERR_NOTFOUND: Result := 'Object could not be found.';
DXFILEERR_FILENOTFOUND: Result := 'File could not be found.';
DXFILEERR_RESOURCENOTFOUND: Result := 'Resource could not be found.';
DXFILEERR_URLNOTFOUND: Result := 'URL could not be found.';
DXFILEERR_BADRESOURCE: Result := 'Resource is invalid.';
DXFILEERR_BADFILETYPE: Result := 'File is not a DirectX file.';
DXFILEERR_BADFILEVERSION: Result := 'File version is not valid.';
DXFILEERR_BADFILEFLOATSIZE: Result := 'Floating-point size is invalid.';
DXFILEERR_BADFILE: Result := 'File is invalid.';
DXFILEERR_PARSEERROR: Result := 'File could not be parsed.';
DXFILEERR_BADARRAYSIZE: Result := 'Array size is invalid.';
DXFILEERR_BADDATAREFERENCE: Result := 'Data reference is invalid.';
DXFILEERR_NOMOREOBJECTS: Result := 'All objects have been enumerated.';
DXFILEERR_NOMOREDATA: Result := 'No further data is available.';
else Result := 'Unrecognized Error';
end;
end;
initialization
begin
DisableFPUExceptions;
DXFileDLL := LoadLibrary('D3DXOF.DLL');
DirectXFileCreate := GetProcAddress(DXFileDLL,'DirectXFileCreate');
end;
finalization
begin
FreeLibrary(DXFileDLL);
end;
{$ENDIF}
end.