5588 lines
213 KiB
ObjectPascal
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.
|