📄 d3dnthal.h
字号:
DWORD hRenderTarget;
DWORD hZBuffer;
} D3DNTHAL_DP2SETRENDERTARGET;
typedef D3DNTHAL_DP2SETRENDERTARGET *LPD3DNTHAL_DP2SETRENDERTARGET;
#if(DIRECT3D_VERSION >= 0x0700)
// Values for dwOperations in the D3DHAL_DP2STATESET
#define D3DHAL_STATESETBEGIN 0
#define D3DHAL_STATESETEND 1
#define D3DHAL_STATESETDELETE 2
#define D3DHAL_STATESETEXECUTE 3
#define D3DHAL_STATESETCAPTURE 4
typedef struct _D3DNTHAL_DP2STATESET
{
DWORD dwOperation;
DWORD dwParam; // State set handle passed with D3DHAL_STATESETBEGIN,
// D3DHAL_STATESETEXECUTE, D3DHAL_STATESETDELETE
// D3DHAL_STATESETCAPTURE
D3DSTATEBLOCKTYPE sbType; // Type use with D3DHAL_STATESETBEGIN/END
} D3DNTHAL_DP2STATESET;
typedef D3DNTHAL_DP2STATESET *LPD3DNTHAL_DP2STATESET;
//
// T&L Hal specific stuff
//
typedef struct _D3DNTHAL_DP2ZRANGE
{
D3DVALUE dvMinZ;
D3DVALUE dvMaxZ;
} D3DNTHAL_DP2ZRANGE;
typedef D3DNTHAL_DP2ZRANGE *LPD3DNTHAL_DP2ZRANGE;
typedef D3DMATERIAL7 D3DNTHAL_DP2SETMATERIAL, *LPD3DNTHAL_DP2SETMATERIAL;
typedef struct _D3DNTHAL_DP2SETLIGHT
{
DWORD dwIndex;
union {
DWORD lightData;
DWORD dwDataType;
};
} D3DNTHAL_DP2SETLIGHT;
typedef D3DNTHAL_DP2SETLIGHT *LPD3DNTHAL_DP2SETLIGHT;
typedef struct _D3DNTHAL_DP2SETCLIPPLANE
{
DWORD dwIndex;
D3DVALUE plane[4];
} D3DNTHAL_DP2SETCLIPPLANE;
typedef D3DNTHAL_DP2SETCLIPPLANE *LPD3DNTHAL_DP2SETCLIPPLANE;
typedef struct _D3DNTHAL_DP2CREATELIGHT
{
DWORD dwIndex;
} D3DNTHAL_DP2CREATELIGHT;
typedef D3DNTHAL_DP2CREATELIGHT *LPD3DNTHAL_DP2CREATELIGHT;
typedef struct _D3DNTHAL_DP2SETTRANSFORM
{
D3DTRANSFORMSTATETYPE xfrmType;
D3DMATRIX matrix;
} D3DNTHAL_DP2SETTRANSFORM;
typedef D3DNTHAL_DP2SETTRANSFORM *LPD3DNTHAL_DP2SETTRANSFORM;
typedef struct _D3DNTHAL_DP2EXT
{
DWORD dwExtToken;
DWORD dwSize;
} D3DNTHAL_DP2EXT;
typedef D3DNTHAL_DP2EXT *LPD3DNTHAL_DP2EXT;
typedef struct _D3DNTHAL_DP2TEXBLT
{
DWORD dwDDDestSurface;// dest surface
DWORD dwDDSrcSurface; // src surface
POINT pDest;
RECTL rSrc; // src rect
DWORD dwFlags; // blt flags
} D3DNTHAL_DP2TEXBLT;
typedef D3DNTHAL_DP2TEXBLT *LPD3DNTHAL_DP2TEXBLT;
typedef struct _D3DNTHAL_DP2SETPRIORITY
{
DWORD dwDDDestSurface;// dest surface
DWORD dwPriority;
} D3DNTHAL_DP2SETPRIORITY;
typedef D3DNTHAL_DP2SETPRIORITY *LPD3DNTHAL_DP2SETPRIORITY;
typedef struct _D3DNTHAL_DP2CLEAR
{
// dwFlags can contain D3DCLEAR_TARGET, D3DCLEAR_ZBUFFER, and/or D3DCLEAR_STENCIL
DWORD dwFlags; // in: surfaces to clear
DWORD dwFillColor; // in: Color value for rtarget
D3DVALUE dvFillDepth; // in: Depth value for Z buffer (0.0-1.0)
DWORD dwFillStencil; // in: value used to clear stencil buffer
RECT Rects[1]; // in: Rectangles to clear
} D3DNTHAL_DP2CLEAR;
typedef D3DNTHAL_DP2CLEAR *LPD3DNTHAL_DP2CLEAR;
typedef struct _D3DNTHAL_DP2SETTEXLOD
{
DWORD dwDDSurface;
DWORD dwLOD;
} D3DNTHAL_DP2SETTEXLOD;
typedef D3DNTHAL_DP2SETTEXLOD *LPD3DNTHAL_DP2SETTEXLOD;
#endif /* DIRECT3D_VERSION >= 0x0700 */
typedef struct _D3DNTHAL_DRAWPRIMITIVES2DATA
{
ULONG_PTR dwhContext; // in: Context handle
DWORD dwFlags; // in: flags (look below)
DWORD dwVertexType; // in: vertex type
PDD_SURFACE_LOCAL lpDDCommands; // in: vertex buffer command data
DWORD dwCommandOffset; // in: offset to start of vb commands
DWORD dwCommandLength; // in: number of bytes of command data
union
{
PDD_SURFACE_LOCAL lpDDVertex; // in: surface containing vertex data
LPVOID lpVertices; // in: User mode pointer to vertices
};
DWORD dwVertexOffset; // in: offset to start of vertex data
DWORD dwVertexLength; // in: number of bytes of vertex data
DWORD dwReqVertexBufSize;// in: number of bytes required for
// the next vertex buffer
DWORD dwReqCommandBufSize; // in: number if bytes required for
// the next commnand buffer
LPDWORD lpdwRStates; // in: Pointer to the array where render states are updated
union
{
DWORD dwVertexSize; // in: Size of each vertex in bytes
HRESULT ddrval; // out: return value
};
DWORD dwErrorOffset; // out: offset in LPDDVBCOMMAND to
// first failed D3DNTHAL_VBCOMMAND
} D3DNTHAL_DRAWPRIMITIVES2DATA;
typedef D3DNTHAL_DRAWPRIMITIVES2DATA FAR *LPD3DNTHAL_DRAWPRIMITIVES2DATA;
// Indicates that the lpVertices field in the DrawPrimitives2 data is
// valid, i.e. user allocated memory.
#define D3DNTHALDP2_USERMEMVERTICES 0x00000001L
// Indicates that the command buffer and vertex buffer are a system memory execute buffer
// resulting from the use of the Execute buffer API.
#define D3DNTHALDP2_EXECUTEBUFFER 0x00000002L
// The swap flags indicate if it is OK for the driver to swap the submitted buffers with new
// buffers and asyncronously work on the submitted buffers.
#define D3DNTHALDP2_SWAPVERTEXBUFFER 0x00000004L
#define D3DNTHALDP2_SWAPCOMMANDBUFFER 0x00000008L
// The requested flags are present if the new buffers which the driver can allocate need to be
// of atleast a given size. If any of these flags are set, the corresponding dwReq* field in
// D3DNTHAL_DRAWPRIMITIVES2DATA will also be set with the requested size in bytes.
#define D3DNTHALDP2_REQVERTEXBUFSIZE 0x00000010L
#define D3DNTHALDP2_REQCOMMANDBUFSIZE 0x00000020L
// These flags are set by the driver upon return from DrawPrimitives2 indicating if the new
// buffers are not in system memory.
#define D3DNTHALDP2_VIDMEMVERTEXBUF 0x00000040L
#define D3DNTHALDP2_VIDMEMCOMMANDBUF 0x00000080L
// Return values for the driver callback used in DP2 implementations
// Used by the driver to ask runtime to parse the execute buffer
#define D3DNTERR_COMMAND_UNPARSED MAKE_DDHRESULT(3000)
typedef DWORD (APIENTRY *LPD3DNTHAL_CLEAR2CB) (LPD3DNTHAL_CLEAR2DATA);
typedef DWORD (APIENTRY *LPD3DNTHAL_VALIDATETEXTURESTAGESTATECB) (LPD3DNTHAL_VALIDATETEXTURESTAGESTATEDATA);
typedef DWORD (APIENTRY *LPD3DNTHAL_DRAWPRIMITIVES2CB) (LPD3DNTHAL_DRAWPRIMITIVES2DATA);
typedef struct _D3DNTHAL_CALLBACKS3
{
DWORD dwSize; // size of struct
DWORD dwFlags; // flags for callbacks
LPD3DNTHAL_CLEAR2CB Clear2;
LPVOID lpvReserved;
LPD3DNTHAL_VALIDATETEXTURESTAGESTATECB ValidateTextureStageState;
LPD3DNTHAL_DRAWPRIMITIVES2CB DrawPrimitives2;
} D3DNTHAL_CALLBACKS3;
typedef D3DNTHAL_CALLBACKS3 *LPD3DNTHAL_CALLBACKS3;
#define D3DNTHAL3_CB32_CLEAR2 0x00000001L
#define D3DNTHAL3_CB32_RESERVED 0x00000002L
#define D3DNTHAL3_CB32_VALIDATETEXTURESTAGESTATE 0x00000004L
#define D3DNTHAL3_CB32_DRAWPRIMITIVES2 0x00000008L
// typedef for the Callback that the drivers can use to parse unknown commands
// passed to them via the DrawPrimitives2 callback. The driver obtains this
// callback thru a GetDriverInfo call with GUID_D3DParseUnknownCommandCallback
// made by ddraw somewhere around the initialization time.
typedef HRESULT (CALLBACK *PFND3DNTPARSEUNKNOWNCOMMAND) (LPVOID lpvCommands,
LPVOID *lplpvReturnedCommand);
/* --------------------------------------------------------------
* Texture stage renderstate mapping definitions.
*
* 256 renderstate slots [256, 511] are reserved for texture processing
* stage controls, which provides for 8 texture processing stages each
* with 32 DWORD controls.
*
* The renderstates within each stage are indexed by the
* D3DTEXTURESTAGESTATETYPE enumerants by adding the appropriate
* enumerant to the base for a given texture stage.
*
* Note, "state overrides" bias the renderstate by 256, so the two
* ranges overlap. Overrides are enabled for exebufs only, so all
* this means is that Texture3 cannot be used with exebufs.
*/
/*
* Base of all texture stage state values in renderstate array.
*/
#define D3DNTHAL_TSS_RENDERSTATEBASE 256UL
/*
* Maximum number of stages allowed.
*/
#define D3DNTHAL_TSS_MAXSTAGES 8
/*
* Number of state DWORDS per stage.
*/
#define D3DNTHAL_TSS_STATESPERSTAGE 64
/*
* Texture handle's offset into the 32-DWORD cascade state vector
*/
#ifndef D3DTSS_TEXTUREMAP
#define D3DTSS_TEXTUREMAP 0
#endif
#define D3DRENDERSTATE_EVICTMANAGEDTEXTURES 61 // DDI render state only to Evict textures
#define D3DRENDERSTATE_SCENECAPTURE 62 // DDI only to replace SceneCapture
#if(DIRECT3D_VERSION >= 0x0800 )
// New values for dwOperations in the D3DHAL_DP2STATESET
#define D3DNTHAL_STATESETCREATE 5
// This bit is the same as D3DCLEAR_RESERVED0 in d3d8types.h
// When set it means that driver has to cull rects against current viewport.
// The bit is set only for pure devices
//
#define D3DNTCLEAR_COMPUTERECTS 0x00000008l
typedef struct _D3DNTHAL_DP2MULTIPLYTRANSFORM
{
D3DTRANSFORMSTATETYPE xfrmType;
D3DMATRIX matrix;
} D3DNTHAL_DP2MULTIPLYTRANSFORM;
typedef D3DNTHAL_DP2MULTIPLYTRANSFORM *LPD3DNTHAL_DP2MULTIPLYTRANSFORM;
// Used by SetVertexShader and DeleteVertexShader
typedef struct _D3DNTHAL_DP2VERTEXSHADER
{
// Vertex shader handle.
// The handle could be 0, meaning that the current vertex shader is invalid
// (not set). When driver recieves handle 0, it should invalidate all
// streams pointer
DWORD dwHandle;
} D3DNTHAL_DP2VERTEXSHADER;
typedef D3DNTHAL_DP2VERTEXSHADER *LPD3DNTHAL_DP2VERTEXSHADER;
typedef struct _D3DNTHAL_DP2CREATEVERTEXSHADER
{
DWORD dwHandle; // Shader handle
DWORD dwDeclSize; // Shader declaration size in bytes
DWORD dwCodeSize; // Shader code size in bytes
// Declaration follows
// Shader code follows
} D3DNTHAL_DP2CREATEVERTEXSHADER;
typedef D3DNTHAL_DP2CREATEVERTEXSHADER *LPD3DNTHAL_DP2CREATEVERTEXSHADER;
typedef struct _D3DNTHAL_DP2SETVERTEXSHADERCONST
{
DWORD dwRegister; // Const register to start copying
DWORD dwCount; // Number of 4-float vectors to copy
// Data follows
} D3DNTHAL_DP2SETVERTEXSHADERCONST;
typedef D3DNTHAL_DP2SETVERTEXSHADERCONST *LPD3DNTHAL_DP2SETVERTEXSHADERCONST;
typedef struct _D3DNTHAL_DP2SETSTREAMSOURCE
{
DWORD dwStream; // Stream index, starting from zero
DWORD dwVBHandle; // Vertex buffer handle
DWORD dwStride; // Vertex size in bytes
} D3DNTHAL_DP2SETSTREAMSOURCE;
typedef D3DNTHAL_DP2SETSTREAMSOURCE *LPD3DNTHAL_DP2SETSTREAMSOURCE;
typedef struct _D3DNTHAL_DP2SETSTREAMSOURCEUM
{
DWORD dwStream; // Stream index, starting from zero
DWORD dwStride; // Vertex size in bytes
} D3DNTHAL_DP2SETSTREAMSOURCEUM;
typedef D3DNTHAL_DP2SETSTREAMSOURCEUM *LPD3DNTHAL_DP2SETSTREAMSOURCEUM;
typedef struct _D3DNTHAL_DP2SETINDICES
{
DWORD dwVBHandle; // Index buffer handle
DWORD dwStride; // Index size in bytes (2 or 4)
} D3DNTHAL_DP2SETINDICES;
typedef D3DNTHAL_DP2SETINDICES *LPD3DNTHAL_DP2SETINDICES;
typedef struct _D3DNTHAL_DP2DRAWPRIMITIVE
{
D3DPRIMITIVETYPE primType;
DWORD VStart;
DWORD PrimitiveCount;
} D3DNTHAL_DP2DRAWPRIMITIVE;
typedef D3DNTHAL_DP2DRAWPRIMITIVE *LPD3DNTHAL_DP2DRAWPRIMITIVE;
typedef struct _D3DNTHAL_DP2DRAWINDEXEDPRIMITIVE
{
D3DPRIMITIVETYPE primType;
DWORD BaseVertexIndex; // Vertex which corresponds to index 0
DWORD MinIndex; // Min vertex index in the vertex buffer
DWORD NumVertices; // Number of vertices starting from MinIndex
DWORD StartIndex; // Start index in the index buffer
DWORD PrimitiveCount;
} D3DNTHAL_DP2DRAWINDEXEDPRIMITIVE;
typedef D3DNTHAL_DP2DRAWINDEXEDPRIMITIVE *LPD3DNTHAL_DP2DRAWINDEXEDPRIMITIVE;
typedef struct _D3DNTHAL_CLIPPEDTRIANGLEFAN
{
DWORD FirstVertexOffset; // Offset in bytes in the current stream 0
DWORD dwEdgeFlags;
DWORD PrimitiveCount;
} D3DNTHAL_CLIPPEDTRIANGLEFAN;
typedef D3DNTHAL_CLIPPEDTRIANGLEFAN *LPD3DNTHAL_CLIPPEDTRIANGLEFAN;
typedef struct _D3DNTHAL_DP2DRAWPRIMITIVE2
{
D3DPRIMITIVETYPE primType;
DWORD FirstVertexOffset; // Offset in bytes in the stream 0
DWORD PrimitiveCount;
} D3DNTHAL_DP2DRAWPRIMITIVE2;
typedef D3DNTHAL_DP2DRAWPRIMITIVE2 *LPD3DNTHAL_DP2DRAWPRIMITIVE2;
typedef struct _D3DNTHAL_DP2DRAWINDEXEDPRIMITIVE2
{
D3DPRIMITIVETYPE primType;
INT BaseVertexOffset; // Stream 0 offset of the vertex which
// corresponds to index 0. This offset could be
// negative, but when an index is added to the
// offset the result is positive
DWORD MinIndex; // Min vertex index in the vertex buffer
DWORD NumVertices; // Number of vertices starting from MinIndex
DWORD StartIndexOffset; // Offset of the start index in the index buffer
DWORD PrimitiveCount; // Number of triangles (points, lines)
} D3DNTHAL_DP2DRAWINDEXEDPRIMITIVE2;
typedef D3DNTHAL_DP2DRAWINDEXEDPRIMITIVE2 *LPD3DNTHAL_DP2DRAWINDEXEDPRIMITIVE2;
// Used by SetPixelShader and DeletePixelShader
typedef struct _D3DNTHAL_DP2PIXELSHADER
{
// Pixel shader handle.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -