1
0
Fork 0
forked from fte/fteqw

minimal set of dx7 sdk.

git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@210 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
Spoike 2004-09-14 07:12:17 +00:00
parent 062140bd41
commit 12f8804bc1
14 changed files with 14541 additions and 0 deletions

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,593 @@
/*==========================================================================;
*
*
* File: d3dcaps.h
* Content: Direct3D capabilities include file
*
***************************************************************************/
#ifndef _D3DCAPS_H
#define _D3DCAPS_H
/*
* Pull in DirectDraw include file automatically:
*/
#include "ddraw.h"
#ifndef DIRECT3D_VERSION
#define DIRECT3D_VERSION 0x0700
#endif
#pragma pack(4)
/* Description of capabilities of transform */
typedef struct _D3DTRANSFORMCAPS {
DWORD dwSize;
DWORD dwCaps;
} D3DTRANSFORMCAPS, *LPD3DTRANSFORMCAPS;
#define D3DTRANSFORMCAPS_CLIP 0x00000001L /* Will clip whilst transforming */
/* Description of capabilities of lighting */
typedef struct _D3DLIGHTINGCAPS {
DWORD dwSize;
DWORD dwCaps; /* Lighting caps */
DWORD dwLightingModel; /* Lighting model - RGB or mono */
DWORD dwNumLights; /* Number of lights that can be handled */
} D3DLIGHTINGCAPS, *LPD3DLIGHTINGCAPS;
#define D3DLIGHTINGMODEL_RGB 0x00000001L
#define D3DLIGHTINGMODEL_MONO 0x00000002L
#define D3DLIGHTCAPS_POINT 0x00000001L /* Point lights supported */
#define D3DLIGHTCAPS_SPOT 0x00000002L /* Spot lights supported */
#define D3DLIGHTCAPS_DIRECTIONAL 0x00000004L /* Directional lights supported */
#if(DIRECT3D_VERSION < 0x700)
#define D3DLIGHTCAPS_PARALLELPOINT 0x00000008L /* Parallel point lights supported */
#endif
#if(DIRECT3D_VERSION < 0x500)
#define D3DLIGHTCAPS_GLSPOT 0x00000010L /* GL syle spot lights supported */
#endif
/* Description of capabilities for each primitive type */
typedef struct _D3DPrimCaps {
DWORD dwSize;
DWORD dwMiscCaps; /* Capability flags */
DWORD dwRasterCaps;
DWORD dwZCmpCaps;
DWORD dwSrcBlendCaps;
DWORD dwDestBlendCaps;
DWORD dwAlphaCmpCaps;
DWORD dwShadeCaps;
DWORD dwTextureCaps;
DWORD dwTextureFilterCaps;
DWORD dwTextureBlendCaps;
DWORD dwTextureAddressCaps;
DWORD dwStippleWidth; /* maximum width and height of */
DWORD dwStippleHeight; /* of supported stipple (up to 32x32) */
} D3DPRIMCAPS, *LPD3DPRIMCAPS;
/* D3DPRIMCAPS dwMiscCaps */
#define D3DPMISCCAPS_MASKPLANES 0x00000001L
#define D3DPMISCCAPS_MASKZ 0x00000002L
#define D3DPMISCCAPS_LINEPATTERNREP 0x00000004L
#define D3DPMISCCAPS_CONFORMANT 0x00000008L
#define D3DPMISCCAPS_CULLNONE 0x00000010L
#define D3DPMISCCAPS_CULLCW 0x00000020L
#define D3DPMISCCAPS_CULLCCW 0x00000040L
/* D3DPRIMCAPS dwRasterCaps */
#define D3DPRASTERCAPS_DITHER 0x00000001L
#define D3DPRASTERCAPS_ROP2 0x00000002L
#define D3DPRASTERCAPS_XOR 0x00000004L
#define D3DPRASTERCAPS_PAT 0x00000008L
#define D3DPRASTERCAPS_ZTEST 0x00000010L
#define D3DPRASTERCAPS_SUBPIXEL 0x00000020L
#define D3DPRASTERCAPS_SUBPIXELX 0x00000040L
#define D3DPRASTERCAPS_FOGVERTEX 0x00000080L
#define D3DPRASTERCAPS_FOGTABLE 0x00000100L
#define D3DPRASTERCAPS_STIPPLE 0x00000200L
#if(DIRECT3D_VERSION >= 0x0500)
#define D3DPRASTERCAPS_ANTIALIASSORTDEPENDENT 0x00000400L
#define D3DPRASTERCAPS_ANTIALIASSORTINDEPENDENT 0x00000800L
#define D3DPRASTERCAPS_ANTIALIASEDGES 0x00001000L
#define D3DPRASTERCAPS_MIPMAPLODBIAS 0x00002000L
#define D3DPRASTERCAPS_ZBIAS 0x00004000L
#define D3DPRASTERCAPS_ZBUFFERLESSHSR 0x00008000L
#define D3DPRASTERCAPS_FOGRANGE 0x00010000L
#define D3DPRASTERCAPS_ANISOTROPY 0x00020000L
#endif /* DIRECT3D_VERSION >= 0x0500 */
#if(DIRECT3D_VERSION >= 0x0600)
#define D3DPRASTERCAPS_WBUFFER 0x00040000L
#define D3DPRASTERCAPS_TRANSLUCENTSORTINDEPENDENT 0x00080000L
#define D3DPRASTERCAPS_WFOG 0x00100000L
#define D3DPRASTERCAPS_ZFOG 0x00200000L
#endif /* DIRECT3D_VERSION >= 0x0600 */
/* D3DPRIMCAPS dwZCmpCaps, dwAlphaCmpCaps */
#define D3DPCMPCAPS_NEVER 0x00000001L
#define D3DPCMPCAPS_LESS 0x00000002L
#define D3DPCMPCAPS_EQUAL 0x00000004L
#define D3DPCMPCAPS_LESSEQUAL 0x00000008L
#define D3DPCMPCAPS_GREATER 0x00000010L
#define D3DPCMPCAPS_NOTEQUAL 0x00000020L
#define D3DPCMPCAPS_GREATEREQUAL 0x00000040L
#define D3DPCMPCAPS_ALWAYS 0x00000080L
/* D3DPRIMCAPS dwSourceBlendCaps, dwDestBlendCaps */
#define D3DPBLENDCAPS_ZERO 0x00000001L
#define D3DPBLENDCAPS_ONE 0x00000002L
#define D3DPBLENDCAPS_SRCCOLOR 0x00000004L
#define D3DPBLENDCAPS_INVSRCCOLOR 0x00000008L
#define D3DPBLENDCAPS_SRCALPHA 0x00000010L
#define D3DPBLENDCAPS_INVSRCALPHA 0x00000020L
#define D3DPBLENDCAPS_DESTALPHA 0x00000040L
#define D3DPBLENDCAPS_INVDESTALPHA 0x00000080L
#define D3DPBLENDCAPS_DESTCOLOR 0x00000100L
#define D3DPBLENDCAPS_INVDESTCOLOR 0x00000200L
#define D3DPBLENDCAPS_SRCALPHASAT 0x00000400L
#define D3DPBLENDCAPS_BOTHSRCALPHA 0x00000800L
#define D3DPBLENDCAPS_BOTHINVSRCALPHA 0x00001000L
/* D3DPRIMCAPS dwShadeCaps */
#define D3DPSHADECAPS_COLORFLATMONO 0x00000001L
#define D3DPSHADECAPS_COLORFLATRGB 0x00000002L
#define D3DPSHADECAPS_COLORGOURAUDMONO 0x00000004L
#define D3DPSHADECAPS_COLORGOURAUDRGB 0x00000008L
#define D3DPSHADECAPS_COLORPHONGMONO 0x00000010L
#define D3DPSHADECAPS_COLORPHONGRGB 0x00000020L
#define D3DPSHADECAPS_SPECULARFLATMONO 0x00000040L
#define D3DPSHADECAPS_SPECULARFLATRGB 0x00000080L
#define D3DPSHADECAPS_SPECULARGOURAUDMONO 0x00000100L
#define D3DPSHADECAPS_SPECULARGOURAUDRGB 0x00000200L
#define D3DPSHADECAPS_SPECULARPHONGMONO 0x00000400L
#define D3DPSHADECAPS_SPECULARPHONGRGB 0x00000800L
#define D3DPSHADECAPS_ALPHAFLATBLEND 0x00001000L
#define D3DPSHADECAPS_ALPHAFLATSTIPPLED 0x00002000L
#define D3DPSHADECAPS_ALPHAGOURAUDBLEND 0x00004000L
#define D3DPSHADECAPS_ALPHAGOURAUDSTIPPLED 0x00008000L
#define D3DPSHADECAPS_ALPHAPHONGBLEND 0x00010000L
#define D3DPSHADECAPS_ALPHAPHONGSTIPPLED 0x00020000L
#define D3DPSHADECAPS_FOGFLAT 0x00040000L
#define D3DPSHADECAPS_FOGGOURAUD 0x00080000L
#define D3DPSHADECAPS_FOGPHONG 0x00100000L
/* D3DPRIMCAPS dwTextureCaps */
/*
* Perspective-correct texturing is supported
*/
#define D3DPTEXTURECAPS_PERSPECTIVE 0x00000001L
/*
* Power-of-2 texture dimensions are required
*/
#define D3DPTEXTURECAPS_POW2 0x00000002L
/*
* Alpha in texture pixels is supported
*/
#define D3DPTEXTURECAPS_ALPHA 0x00000004L
/*
* Color-keyed textures are supported
*/
#define D3DPTEXTURECAPS_TRANSPARENCY 0x00000008L
/*
* obsolete, see D3DPTADDRESSCAPS_BORDER
*/
#define D3DPTEXTURECAPS_BORDER 0x00000010L
/*
* Only square textures are supported
*/
#define D3DPTEXTURECAPS_SQUAREONLY 0x00000020L
#if(DIRECT3D_VERSION >= 0x0600)
/*
* Texture indices are not scaled by the texture size prior
* to interpolation.
*/
#define D3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE 0x00000040L
/*
* Device can draw alpha from texture palettes
*/
#define D3DPTEXTURECAPS_ALPHAPALETTE 0x00000080L
/*
* 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)
*/
#define D3DPTEXTURECAPS_NONPOW2CONDITIONAL 0x00000100L
#endif /* DIRECT3D_VERSION >= 0x0600 */
#if(DIRECT3D_VERSION >= 0x0700)
// 0x00000200L unused
/*
* Device can divide transformed texture coordinates by the
* COUNTth texture coordinate (can do D3DTTFF_PROJECTED)
*/
#define D3DPTEXTURECAPS_PROJECTED 0x00000400L
/*
* Device can do cubemap textures
*/
#define D3DPTEXTURECAPS_CUBEMAP 0x00000800L
#define D3DPTEXTURECAPS_COLORKEYBLEND 0x00001000L
#endif /* DIRECT3D_VERSION >= 0x0700 */
/* D3DPRIMCAPS dwTextureFilterCaps */
#define D3DPTFILTERCAPS_NEAREST 0x00000001L
#define D3DPTFILTERCAPS_LINEAR 0x00000002L
#define D3DPTFILTERCAPS_MIPNEAREST 0x00000004L
#define D3DPTFILTERCAPS_MIPLINEAR 0x00000008L
#define D3DPTFILTERCAPS_LINEARMIPNEAREST 0x00000010L
#define D3DPTFILTERCAPS_LINEARMIPLINEAR 0x00000020L
#if(DIRECT3D_VERSION >= 0x0600)
/* Device3 Min Filter */
#define D3DPTFILTERCAPS_MINFPOINT 0x00000100L
#define D3DPTFILTERCAPS_MINFLINEAR 0x00000200L
#define D3DPTFILTERCAPS_MINFANISOTROPIC 0x00000400L
/* Device3 Mip Filter */
#define D3DPTFILTERCAPS_MIPFPOINT 0x00010000L
#define D3DPTFILTERCAPS_MIPFLINEAR 0x00020000L
/* Device3 Mag Filter */
#define D3DPTFILTERCAPS_MAGFPOINT 0x01000000L
#define D3DPTFILTERCAPS_MAGFLINEAR 0x02000000L
#define D3DPTFILTERCAPS_MAGFANISOTROPIC 0x04000000L
#define D3DPTFILTERCAPS_MAGFAFLATCUBIC 0x08000000L
#define D3DPTFILTERCAPS_MAGFGAUSSIANCUBIC 0x10000000L
#endif /* DIRECT3D_VERSION >= 0x0600 */
/* D3DPRIMCAPS dwTextureBlendCaps */
#define D3DPTBLENDCAPS_DECAL 0x00000001L
#define D3DPTBLENDCAPS_MODULATE 0x00000002L
#define D3DPTBLENDCAPS_DECALALPHA 0x00000004L
#define D3DPTBLENDCAPS_MODULATEALPHA 0x00000008L
#define D3DPTBLENDCAPS_DECALMASK 0x00000010L
#define D3DPTBLENDCAPS_MODULATEMASK 0x00000020L
#define D3DPTBLENDCAPS_COPY 0x00000040L
#if(DIRECT3D_VERSION >= 0x0500)
#define D3DPTBLENDCAPS_ADD 0x00000080L
#endif /* DIRECT3D_VERSION >= 0x0500 */
/* D3DPRIMCAPS dwTextureAddressCaps */
#define D3DPTADDRESSCAPS_WRAP 0x00000001L
#define D3DPTADDRESSCAPS_MIRROR 0x00000002L
#define D3DPTADDRESSCAPS_CLAMP 0x00000004L
#if(DIRECT3D_VERSION >= 0x0500)
#define D3DPTADDRESSCAPS_BORDER 0x00000008L
#define D3DPTADDRESSCAPS_INDEPENDENTUV 0x00000010L
#endif /* DIRECT3D_VERSION >= 0x0500 */
#if(DIRECT3D_VERSION >= 0x0600)
/* D3DDEVICEDESC dwStencilCaps */
#define D3DSTENCILCAPS_KEEP 0x00000001L
#define D3DSTENCILCAPS_ZERO 0x00000002L
#define D3DSTENCILCAPS_REPLACE 0x00000004L
#define D3DSTENCILCAPS_INCRSAT 0x00000008L
#define D3DSTENCILCAPS_DECRSAT 0x00000010L
#define D3DSTENCILCAPS_INVERT 0x00000020L
#define D3DSTENCILCAPS_INCR 0x00000040L
#define D3DSTENCILCAPS_DECR 0x00000080L
/* D3DDEVICEDESC dwTextureOpCaps */
#define D3DTEXOPCAPS_DISABLE 0x00000001L
#define D3DTEXOPCAPS_SELECTARG1 0x00000002L
#define D3DTEXOPCAPS_SELECTARG2 0x00000004L
#define D3DTEXOPCAPS_MODULATE 0x00000008L
#define D3DTEXOPCAPS_MODULATE2X 0x00000010L
#define D3DTEXOPCAPS_MODULATE4X 0x00000020L
#define D3DTEXOPCAPS_ADD 0x00000040L
#define D3DTEXOPCAPS_ADDSIGNED 0x00000080L
#define D3DTEXOPCAPS_ADDSIGNED2X 0x00000100L
#define D3DTEXOPCAPS_SUBTRACT 0x00000200L
#define D3DTEXOPCAPS_ADDSMOOTH 0x00000400L
#define D3DTEXOPCAPS_BLENDDIFFUSEALPHA 0x00000800L
#define D3DTEXOPCAPS_BLENDTEXTUREALPHA 0x00001000L
#define D3DTEXOPCAPS_BLENDFACTORALPHA 0x00002000L
#define D3DTEXOPCAPS_BLENDTEXTUREALPHAPM 0x00004000L
#define D3DTEXOPCAPS_BLENDCURRENTALPHA 0x00008000L
#define D3DTEXOPCAPS_PREMODULATE 0x00010000L
#define D3DTEXOPCAPS_MODULATEALPHA_ADDCOLOR 0x00020000L
#define D3DTEXOPCAPS_MODULATECOLOR_ADDALPHA 0x00040000L
#define D3DTEXOPCAPS_MODULATEINVALPHA_ADDCOLOR 0x00080000L
#define D3DTEXOPCAPS_MODULATEINVCOLOR_ADDALPHA 0x00100000L
#define D3DTEXOPCAPS_BUMPENVMAP 0x00200000L
#define D3DTEXOPCAPS_BUMPENVMAPLUMINANCE 0x00400000L
#define D3DTEXOPCAPS_DOTPRODUCT3 0x00800000L
/* D3DDEVICEDESC dwFVFCaps flags */
#define D3DFVFCAPS_TEXCOORDCOUNTMASK 0x0000ffffL /* mask for texture coordinate count field */
#define D3DFVFCAPS_DONOTSTRIPELEMENTS 0x00080000L /* Device prefers that vertex elements not be stripped */
#endif /* DIRECT3D_VERSION >= 0x0600 */
/*
* Description for a device.
* This is used to describe a device that is to be created or to query
* the current device.
*/
typedef struct _D3DDeviceDesc {
DWORD dwSize; /* Size of D3DDEVICEDESC structure */
DWORD dwFlags; /* Indicates which fields have valid data */
D3DCOLORMODEL dcmColorModel; /* Color model of device */
DWORD dwDevCaps; /* Capabilities of device */
D3DTRANSFORMCAPS dtcTransformCaps; /* Capabilities of transform */
BOOL bClipping; /* Device can do 3D clipping */
D3DLIGHTINGCAPS dlcLightingCaps; /* Capabilities of lighting */
D3DPRIMCAPS dpcLineCaps;
D3DPRIMCAPS dpcTriCaps;
DWORD dwDeviceRenderBitDepth; /* One of DDBB_8, 16, etc.. */
DWORD dwDeviceZBufferBitDepth;/* One of DDBD_16, 32, etc.. */
DWORD dwMaxBufferSize; /* Maximum execute buffer size */
DWORD dwMaxVertexCount; /* Maximum vertex count */
#if(DIRECT3D_VERSION >= 0x0500)
// *** New fields for DX5 *** //
// Width and height caps are 0 for legacy HALs.
DWORD dwMinTextureWidth, dwMinTextureHeight;
DWORD dwMaxTextureWidth, dwMaxTextureHeight;
DWORD dwMinStippleWidth, dwMaxStippleWidth;
DWORD dwMinStippleHeight, dwMaxStippleHeight;
#endif /* DIRECT3D_VERSION >= 0x0500 */
#if(DIRECT3D_VERSION >= 0x0600)
// New fields for DX6
DWORD dwMaxTextureRepeat;
DWORD dwMaxTextureAspectRatio;
DWORD dwMaxAnisotropy;
// Guard band that the rasterizer can accommodate
// Screen-space vertices inside this space but outside the viewport
// will get clipped properly.
D3DVALUE dvGuardBandLeft;
D3DVALUE dvGuardBandTop;
D3DVALUE dvGuardBandRight;
D3DVALUE dvGuardBandBottom;
D3DVALUE dvExtentsAdjust;
DWORD dwStencilCaps;
DWORD dwFVFCaps;
DWORD dwTextureOpCaps;
WORD wMaxTextureBlendStages;
WORD wMaxSimultaneousTextures;
#endif /* DIRECT3D_VERSION >= 0x0600 */
} D3DDEVICEDESC, *LPD3DDEVICEDESC;
#if(DIRECT3D_VERSION >= 0x0700)
typedef struct _D3DDeviceDesc7 {
DWORD dwDevCaps; /* Capabilities of device */
D3DPRIMCAPS dpcLineCaps;
D3DPRIMCAPS dpcTriCaps;
DWORD dwDeviceRenderBitDepth; /* One of DDBB_8, 16, etc.. */
DWORD dwDeviceZBufferBitDepth;/* One of DDBD_16, 32, etc.. */
DWORD dwMinTextureWidth, dwMinTextureHeight;
DWORD dwMaxTextureWidth, dwMaxTextureHeight;
DWORD dwMaxTextureRepeat;
DWORD dwMaxTextureAspectRatio;
DWORD dwMaxAnisotropy;
D3DVALUE dvGuardBandLeft;
D3DVALUE dvGuardBandTop;
D3DVALUE dvGuardBandRight;
D3DVALUE dvGuardBandBottom;
D3DVALUE dvExtentsAdjust;
DWORD dwStencilCaps;
DWORD dwFVFCaps;
DWORD dwTextureOpCaps;
WORD wMaxTextureBlendStages;
WORD wMaxSimultaneousTextures;
DWORD dwMaxActiveLights;
D3DVALUE dvMaxVertexW;
GUID deviceGUID;
WORD wMaxUserClipPlanes;
WORD wMaxVertexBlendMatrices;
DWORD dwVertexProcessingCaps;
DWORD dwReserved1;
DWORD dwReserved2;
DWORD dwReserved3;
DWORD dwReserved4;
} D3DDEVICEDESC7, *LPD3DDEVICEDESC7;
#endif /* DIRECT3D_VERSION >= 0x0700 */
#define D3DDEVICEDESCSIZE (sizeof(D3DDEVICEDESC))
#define D3DDEVICEDESC7SIZE (sizeof(D3DDEVICEDESC7))
typedef HRESULT (CALLBACK * LPD3DENUMDEVICESCALLBACK)(GUID FAR *lpGuid, LPSTR lpDeviceDescription, LPSTR lpDeviceName, LPD3DDEVICEDESC, LPD3DDEVICEDESC, LPVOID);
#if(DIRECT3D_VERSION >= 0x0700)
typedef HRESULT (CALLBACK * LPD3DENUMDEVICESCALLBACK7)(LPSTR lpDeviceDescription, LPSTR lpDeviceName, LPD3DDEVICEDESC7, LPVOID);
#endif /* DIRECT3D_VERSION >= 0x0700 */
/* D3DDEVICEDESC dwFlags indicating valid fields */
#define D3DDD_COLORMODEL 0x00000001L /* dcmColorModel is valid */
#define D3DDD_DEVCAPS 0x00000002L /* dwDevCaps is valid */
#define D3DDD_TRANSFORMCAPS 0x00000004L /* dtcTransformCaps is valid */
#define D3DDD_LIGHTINGCAPS 0x00000008L /* dlcLightingCaps is valid */
#define D3DDD_BCLIPPING 0x00000010L /* bClipping is valid */
#define D3DDD_LINECAPS 0x00000020L /* dpcLineCaps is valid */
#define D3DDD_TRICAPS 0x00000040L /* dpcTriCaps is valid */
#define D3DDD_DEVICERENDERBITDEPTH 0x00000080L /* dwDeviceRenderBitDepth is valid */
#define D3DDD_DEVICEZBUFFERBITDEPTH 0x00000100L /* dwDeviceZBufferBitDepth is valid */
#define D3DDD_MAXBUFFERSIZE 0x00000200L /* dwMaxBufferSize is valid */
#define D3DDD_MAXVERTEXCOUNT 0x00000400L /* dwMaxVertexCount is valid */
/* D3DDEVICEDESC dwDevCaps flags */
#define D3DDEVCAPS_FLOATTLVERTEX 0x00000001L /* Device accepts floating point */
/* for post-transform vertex data */
#define D3DDEVCAPS_SORTINCREASINGZ 0x00000002L /* Device needs data sorted for increasing Z */
#define D3DDEVCAPS_SORTDECREASINGZ 0X00000004L /* Device needs data sorted for decreasing Z */
#define D3DDEVCAPS_SORTEXACT 0x00000008L /* Device needs data sorted exactly */
#define D3DDEVCAPS_EXECUTESYSTEMMEMORY 0x00000010L /* Device can use execute buffers from system memory */
#define D3DDEVCAPS_EXECUTEVIDEOMEMORY 0x00000020L /* Device can use execute buffers from video memory */
#define D3DDEVCAPS_TLVERTEXSYSTEMMEMORY 0x00000040L /* Device can use TL buffers from system memory */
#define D3DDEVCAPS_TLVERTEXVIDEOMEMORY 0x00000080L /* Device can use TL buffers from video memory */
#define D3DDEVCAPS_TEXTURESYSTEMMEMORY 0x00000100L /* Device can texture from system memory */
#define D3DDEVCAPS_TEXTUREVIDEOMEMORY 0x00000200L /* Device can texture from device memory */
#if(DIRECT3D_VERSION >= 0x0500)
#define D3DDEVCAPS_DRAWPRIMTLVERTEX 0x00000400L /* Device can draw TLVERTEX primitives */
#define D3DDEVCAPS_CANRENDERAFTERFLIP 0x00000800L /* Device can render without waiting for flip to complete */
#define D3DDEVCAPS_TEXTURENONLOCALVIDMEM 0x00001000L /* Device can texture from nonlocal video memory */
#endif /* DIRECT3D_VERSION >= 0x0500 */
#if(DIRECT3D_VERSION >= 0x0600)
#define D3DDEVCAPS_DRAWPRIMITIVES2 0x00002000L /* Device can support DrawPrimitives2 */
#define D3DDEVCAPS_SEPARATETEXTUREMEMORIES 0x00004000L /* Device is texturing from separate memory pools */
#define D3DDEVCAPS_DRAWPRIMITIVES2EX 0x00008000L /* Device can support Extended DrawPrimitives2 i.e. DX7 compliant driver*/
#endif /* DIRECT3D_VERSION >= 0x0600 */
#if(DIRECT3D_VERSION >= 0x0700)
#define D3DDEVCAPS_HWTRANSFORMANDLIGHT 0x00010000L /* Device can support transformation and lighting in hardware and DRAWPRIMITIVES2EX must be also */
#define D3DDEVCAPS_CANBLTSYSTONONLOCAL 0x00020000L /* Device supports a Tex Blt from system memory to non-local vidmem */
#define D3DDEVCAPS_HWRASTERIZATION 0x00080000L /* Device has HW acceleration for rasterization */
/*
* These are the flags in the D3DDEVICEDESC7.dwVertexProcessingCaps field
*/
/* device can do texgen */
#define D3DVTXPCAPS_TEXGEN 0x00000001L
/* device can do IDirect3DDevice7 colormaterialsource ops */
#define D3DVTXPCAPS_MATERIALSOURCE7 0x00000002L
/* device can do vertex fog */
#define D3DVTXPCAPS_VERTEXFOG 0x00000004L
/* device can do directional lights */
#define D3DVTXPCAPS_DIRECTIONALLIGHTS 0x00000008L
/* device can do positional lights (includes point and spot) */
#define D3DVTXPCAPS_POSITIONALLIGHTS 0x00000010L
/* device can do local viewer */
#define D3DVTXPCAPS_LOCALVIEWER 0x00000020L
#endif /* DIRECT3D_VERSION >= 0x0700 */
#define D3DFDS_COLORMODEL 0x00000001L /* Match color model */
#define D3DFDS_GUID 0x00000002L /* Match guid */
#define D3DFDS_HARDWARE 0x00000004L /* Match hardware/software */
#define D3DFDS_TRIANGLES 0x00000008L /* Match in triCaps */
#define D3DFDS_LINES 0x00000010L /* Match in lineCaps */
#define D3DFDS_MISCCAPS 0x00000020L /* Match primCaps.dwMiscCaps */
#define D3DFDS_RASTERCAPS 0x00000040L /* Match primCaps.dwRasterCaps */
#define D3DFDS_ZCMPCAPS 0x00000080L /* Match primCaps.dwZCmpCaps */
#define D3DFDS_ALPHACMPCAPS 0x00000100L /* Match primCaps.dwAlphaCmpCaps */
#define D3DFDS_SRCBLENDCAPS 0x00000200L /* Match primCaps.dwSourceBlendCaps */
#define D3DFDS_DSTBLENDCAPS 0x00000400L /* Match primCaps.dwDestBlendCaps */
#define D3DFDS_SHADECAPS 0x00000800L /* Match primCaps.dwShadeCaps */
#define D3DFDS_TEXTURECAPS 0x00001000L /* Match primCaps.dwTextureCaps */
#define D3DFDS_TEXTUREFILTERCAPS 0x00002000L /* Match primCaps.dwTextureFilterCaps */
#define D3DFDS_TEXTUREBLENDCAPS 0x00004000L /* Match primCaps.dwTextureBlendCaps */
#define D3DFDS_TEXTUREADDRESSCAPS 0x00008000L /* Match primCaps.dwTextureBlendCaps */
/*
* FindDevice arguments
*/
typedef struct _D3DFINDDEVICESEARCH {
DWORD dwSize;
DWORD dwFlags;
BOOL bHardware;
D3DCOLORMODEL dcmColorModel;
GUID guid;
DWORD dwCaps;
D3DPRIMCAPS dpcPrimCaps;
} D3DFINDDEVICESEARCH, *LPD3DFINDDEVICESEARCH;
typedef struct _D3DFINDDEVICERESULT {
DWORD dwSize;
GUID guid; /* guid which matched */
D3DDEVICEDESC ddHwDesc; /* hardware D3DDEVICEDESC */
D3DDEVICEDESC ddSwDesc; /* software D3DDEVICEDESC */
} D3DFINDDEVICERESULT, *LPD3DFINDDEVICERESULT;
/*
* Description of execute buffer.
*/
typedef struct _D3DExecuteBufferDesc {
DWORD dwSize; /* size of this structure */
DWORD dwFlags; /* flags indicating which fields are valid */
DWORD dwCaps; /* capabilities of execute buffer */
DWORD dwBufferSize; /* size of execute buffer data */
LPVOID lpData; /* pointer to actual data */
} D3DEXECUTEBUFFERDESC, *LPD3DEXECUTEBUFFERDESC;
/* D3DEXECUTEBUFFER dwFlags indicating valid fields */
#define D3DDEB_BUFSIZE 0x00000001l /* buffer size valid */
#define D3DDEB_CAPS 0x00000002l /* caps valid */
#define D3DDEB_LPDATA 0x00000004l /* lpData valid */
/* D3DEXECUTEBUFFER dwCaps */
#define D3DDEBCAPS_SYSTEMMEMORY 0x00000001l /* buffer in system memory */
#define D3DDEBCAPS_VIDEOMEMORY 0x00000002l /* buffer in device memory */
#define D3DDEBCAPS_MEM (D3DDEBCAPS_SYSTEMMEMORY|D3DDEBCAPS_VIDEOMEMORY)
#if(DIRECT3D_VERSION >= 0x0700)
typedef struct _D3DDEVINFO_TEXTUREMANAGER {
BOOL bThrashing; /* indicates if thrashing */
DWORD dwApproxBytesDownloaded; /* Approximate number of bytes downloaded by texture manager */
DWORD dwNumEvicts; /* number of textures evicted */
DWORD dwNumVidCreates; /* number of textures created in video memory */
DWORD dwNumTexturesUsed; /* number of textures used */
DWORD dwNumUsedTexInVid; /* number of used textures present in video memory */
DWORD dwWorkingSet; /* number of textures in video memory */
DWORD dwWorkingSetBytes; /* number of bytes in video memory */
DWORD dwTotalManaged; /* total number of managed textures */
DWORD dwTotalBytes; /* total number of bytes of managed textures */
DWORD dwLastPri; /* priority of last texture evicted */
} D3DDEVINFO_TEXTUREMANAGER, *LPD3DDEVINFO_TEXTUREMANAGER;
typedef struct _D3DDEVINFO_TEXTURING {
DWORD dwNumLoads; /* counts Load() API calls */
DWORD dwApproxBytesLoaded; /* Approximate number bytes loaded via Load() */
DWORD dwNumPreLoads; /* counts PreLoad() API calls */
DWORD dwNumSet; /* counts SetTexture() API calls */
DWORD dwNumCreates; /* counts texture creates */
DWORD dwNumDestroys; /* counts texture destroys */
DWORD dwNumSetPriorities; /* counts SetPriority() API calls */
DWORD dwNumSetLODs; /* counts SetLOD() API calls */
DWORD dwNumLocks; /* counts number of texture locks */
DWORD dwNumGetDCs; /* counts number of GetDCs to textures */
} D3DDEVINFO_TEXTURING, *LPD3DDEVINFO_TEXTURING;
#endif /* DIRECT3D_VERSION >= 0x0700 */
#pragma pack()
#endif /* _D3DCAPS_H_ */

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,26 @@
///////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 1999 Microsoft Corporation. All Rights Reserved.
//
// File: d3dx.h
// Content: D3DX utility library
//
///////////////////////////////////////////////////////////////////////////
#ifndef __D3DX_H__
#define __D3DX_H__
#ifndef D3DXINLINE
#ifdef __cplusplus
#define D3DXINLINE inline
#else
#define D3DXINLINE _inline
#endif
#endif
#include "d3dxcore.h"
#include "d3dxmath.h"
#include "d3dxshapes.h"
#include "d3dxsprite.h"
#endif //__D3DX_H__

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,407 @@
//----------------------------------------------------------------------
//
// d3dxerr.h -- 0xC code definitions for the D3DX API
//
// Copyright (c) 1991-1999, Microsoft Corp. All rights reserved.
//
//----------------------------------------------------------------------
#ifndef __D3DXERR_H__
#define __D3DXERR_H__
//
//
// Values are 32 bit values layed out as follows:
//
// 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
// +---+-+-+-----------------------+-------------------------------+
// |Sev|C|R| Facility | Code |
// +---+-+-+-----------------------+-------------------------------+
//
// where
//
// Sev - is the severity code
//
// 00 - Success
// 01 - Informational
// 10 - Warning
// 11 - Error
//
// C - is the Customer code flag
//
// R - is a reserved bit
//
// Facility - is the facility code
//
// Code - is the facility's status code
//
//
// Define the facility codes
//
#define FACILITY_D3DX 0x877
//
// MessageId: D3DXERR_NOMEMORY
//
// MessageText:
//
// Out of memory.
//
#define D3DXERR_NOMEMORY ((HRESULT)0xC8770BB8L)
//
// MessageId: D3DXERR_NULLPOINTER
//
// MessageText:
//
// A NULL pointer was passed as a parameter.
//
#define D3DXERR_NULLPOINTER ((HRESULT)0xC8770BB9L)
//
// MessageId: D3DXERR_INVALIDD3DXDEVICEINDEX
//
// MessageText:
//
// The Device Index passed in is invalid.
//
#define D3DXERR_INVALIDD3DXDEVICEINDEX ((HRESULT)0xC8770BBAL)
//
// MessageId: D3DXERR_NODIRECTDRAWAVAILABLE
//
// MessageText:
//
// DirectDraw has not been created.
//
#define D3DXERR_NODIRECTDRAWAVAILABLE ((HRESULT)0xC8770BBBL)
//
// MessageId: D3DXERR_NODIRECT3DAVAILABLE
//
// MessageText:
//
// Direct3D has not been created.
//
#define D3DXERR_NODIRECT3DAVAILABLE ((HRESULT)0xC8770BBCL)
//
// MessageId: D3DXERR_NODIRECT3DDEVICEAVAILABLE
//
// MessageText:
//
// Direct3D device has not been created.
//
#define D3DXERR_NODIRECT3DDEVICEAVAILABLE ((HRESULT)0xC8770BBDL)
//
// MessageId: D3DXERR_NOPRIMARYAVAILABLE
//
// MessageText:
//
// Primary surface has not been created.
//
#define D3DXERR_NOPRIMARYAVAILABLE ((HRESULT)0xC8770BBEL)
//
// MessageId: D3DXERR_NOZBUFFERAVAILABLE
//
// MessageText:
//
// Z buffer has not been created.
//
#define D3DXERR_NOZBUFFERAVAILABLE ((HRESULT)0xC8770BBFL)
//
// MessageId: D3DXERR_NOBACKBUFFERAVAILABLE
//
// MessageText:
//
// Backbuffer has not been created.
//
#define D3DXERR_NOBACKBUFFERAVAILABLE ((HRESULT)0xC8770BC0L)
//
// MessageId: D3DXERR_COULDNTUPDATECAPS
//
// MessageText:
//
// Failed to update caps database after changing display mode.
//
#define D3DXERR_COULDNTUPDATECAPS ((HRESULT)0xC8770BC1L)
//
// MessageId: D3DXERR_NOZBUFFER
//
// MessageText:
//
// Could not create Z buffer.
//
#define D3DXERR_NOZBUFFER ((HRESULT)0xC8770BC2L)
//
// MessageId: D3DXERR_INVALIDMODE
//
// MessageText:
//
// Display mode is not valid.
//
#define D3DXERR_INVALIDMODE ((HRESULT)0xC8770BC3L)
//
// MessageId: D3DXERR_INVALIDPARAMETER
//
// MessageText:
//
// One or more of the parameters passed is invalid.
//
#define D3DXERR_INVALIDPARAMETER ((HRESULT)0xC8770BC4L)
//
// MessageId: D3DXERR_INITFAILED
//
// MessageText:
//
// D3DX failed to initialize itself.
//
#define D3DXERR_INITFAILED ((HRESULT)0xC8770BC5L)
//
// MessageId: D3DXERR_STARTUPFAILED
//
// MessageText:
//
// D3DX failed to start up.
//
#define D3DXERR_STARTUPFAILED ((HRESULT)0xC8770BC6L)
//
// MessageId: D3DXERR_D3DXNOTSTARTEDYET
//
// MessageText:
//
// D3DXInitialize() must be called first.
//
#define D3DXERR_D3DXNOTSTARTEDYET ((HRESULT)0xC8770BC7L)
//
// MessageId: D3DXERR_NOTINITIALIZED
//
// MessageText:
//
// D3DX is not initialized yet.
//
#define D3DXERR_NOTINITIALIZED ((HRESULT)0xC8770BC8L)
//
// MessageId: D3DXERR_FAILEDDRAWTEXT
//
// MessageText:
//
// Failed to render text to the surface.
//
#define D3DXERR_FAILEDDRAWTEXT ((HRESULT)0xC8770BC9L)
//
// MessageId: D3DXERR_BADD3DXCONTEXT
//
// MessageText:
//
// Bad D3DX context.
//
#define D3DXERR_BADD3DXCONTEXT ((HRESULT)0xC8770BCAL)
//
// MessageId: D3DXERR_CAPSNOTSUPPORTED
//
// MessageText:
//
// The requested device capabilities are not supported.
//
#define D3DXERR_CAPSNOTSUPPORTED ((HRESULT)0xC8770BCBL)
//
// MessageId: D3DXERR_UNSUPPORTEDFILEFORMAT
//
// MessageText:
//
// The image file format is unrecognized.
//
#define D3DXERR_UNSUPPORTEDFILEFORMAT ((HRESULT)0xC8770BCCL)
//
// MessageId: D3DXERR_IFLERROR
//
// MessageText:
//
// The image file loading library error.
//
#define D3DXERR_IFLERROR ((HRESULT)0xC8770BCDL)
//
// MessageId: D3DXERR_FAILEDGETCAPS
//
// MessageText:
//
// Could not obtain device caps.
//
#define D3DXERR_FAILEDGETCAPS ((HRESULT)0xC8770BCEL)
//
// MessageId: D3DXERR_CANNOTRESIZEFULLSCREEN
//
// MessageText:
//
// Resize does not work for full-screen.
//
#define D3DXERR_CANNOTRESIZEFULLSCREEN ((HRESULT)0xC8770BCFL)
//
// MessageId: D3DXERR_CANNOTRESIZENONWINDOWED
//
// MessageText:
//
// Resize does not work for non-windowed contexts.
//
#define D3DXERR_CANNOTRESIZENONWINDOWED ((HRESULT)0xC8770BD0L)
//
// MessageId: D3DXERR_FRONTBUFFERALREADYEXISTS
//
// MessageText:
//
// Front buffer already exists.
//
#define D3DXERR_FRONTBUFFERALREADYEXISTS ((HRESULT)0xC8770BD1L)
//
// MessageId: D3DXERR_FULLSCREENPRIMARYEXISTS
//
// MessageText:
//
// The app is using the primary in full-screen mode.
//
#define D3DXERR_FULLSCREENPRIMARYEXISTS ((HRESULT)0xC8770BD2L)
//
// MessageId: D3DXERR_GETDCFAILED
//
// MessageText:
//
// Could not get device context.
//
#define D3DXERR_GETDCFAILED ((HRESULT)0xC8770BD3L)
//
// MessageId: D3DXERR_BITBLTFAILED
//
// MessageText:
//
// Could not bitBlt.
//
#define D3DXERR_BITBLTFAILED ((HRESULT)0xC8770BD4L)
//
// MessageId: D3DXERR_NOTEXTURE
//
// MessageText:
//
// There is no surface backing up this texture.
//
#define D3DXERR_NOTEXTURE ((HRESULT)0xC8770BD5L)
//
// MessageId: D3DXERR_MIPLEVELABSENT
//
// MessageText:
//
// There is no such miplevel for this surface.
//
#define D3DXERR_MIPLEVELABSENT ((HRESULT)0xC8770BD6L)
//
// MessageId: D3DXERR_SURFACENOTPALETTED
//
// MessageText:
//
// The surface is not paletted.
//
#define D3DXERR_SURFACENOTPALETTED ((HRESULT)0xC8770BD7L)
//
// MessageId: D3DXERR_ENUMFORMATSFAILED
//
// MessageText:
//
// An error occured while enumerating surface formats.
//
#define D3DXERR_ENUMFORMATSFAILED ((HRESULT)0xC8770BD8L)
//
// MessageId: D3DXERR_COLORDEPTHTOOLOW
//
// MessageText:
//
// D3DX only supports color depths of 16 bit or greater.
//
#define D3DXERR_COLORDEPTHTOOLOW ((HRESULT)0xC8770BD9L)
//
// MessageId: D3DXERR_INVALIDFILEFORMAT
//
// MessageText:
//
// The file format is invalid.
//
#define D3DXERR_INVALIDFILEFORMAT ((HRESULT)0xC8770BDAL)
//
// MessageId: D3DXERR_NOMATCHFOUND
//
// MessageText:
//
// No suitable match found.
//
#define D3DXERR_NOMATCHFOUND ((HRESULT)0xC8770BDBL)
#endif //__D3DXERR_H__

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,209 @@
///////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 1999 Microsoft Corporation. All Rights Reserved.
//
// File: d3dxshapes.h
// Content: D3DX simple shapes
//
///////////////////////////////////////////////////////////////////////////
#ifndef __D3DXSHAPES_H__
#define __D3DXSHAPES_H__
#include <d3d.h>
#include <limits.h>
#include "d3dxerr.h"
typedef struct ID3DXSimpleShape *LPD3DXSIMPLESHAPE;
// {CFCD4602-EB7B-11d2-A440-00A0C90629A8}
DEFINE_GUID( IID_ID3DXSimpleShape,
0xcfcd4602, 0xeb7b, 0x11d2, 0xa4, 0x40, 0x0, 0xa0, 0xc9, 0x6, 0x29, 0xa8 );
///////////////////////////////////////////////////////////////////////////
// Interfaces:
///////////////////////////////////////////////////////////////////////////
//-------------------------------------------------------------------------
// ID3DXSimpleShape interface:
//-------------------------------------------------------------------------
DECLARE_INTERFACE_(ID3DXSimpleShape, IUnknown)
{
// IUnknown methods
STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID* ppvObj) PURE;
STDMETHOD_(ULONG,AddRef)(THIS) PURE;
STDMETHOD_(ULONG,Release)(THIS) PURE;
// ID3DXSimpleShape methods
STDMETHOD_(LPDIRECT3DVERTEXBUFFER7, GetVB)(THIS) PURE;
STDMETHOD_(DWORD, GetIndices)(THIS_ LPWORD *ppIndices) PURE;
STDMETHOD(Draw)(THIS) PURE;
};
///////////////////////////////////////////////////////////////////////////
// Functions:
///////////////////////////////////////////////////////////////////////////
#ifdef __cplusplus
extern "C" {
#endif //__cplusplus
//-------------------------------------------------------------------------
// D3DXCreatePolygon: Creates an 'n' sided polygon using the device
// ---------------- specified. It returns a vertex buffer that can be used
// for drawing or manipulation by the program later on.
//
// Params:
// [in] LPDIRECT3DDEVICE7 pDevice: The device to create off.
// [in] float sideSize: Length of a side.
// [in] DWORD numTexCoords: The number of texture coordinates desired
// in the vertex-buffer. (Default is 1)
// D3DX_DEFAULT is a valid input.
// [out] IDirect3DVertexBuffer7** ppVB: The output shape interface.
//-------------------------------------------------------------------------
HRESULT WINAPI
D3DXCreatePolygon(LPDIRECT3DDEVICE7 pDevice,
float sideSize,
DWORD numSides,
DWORD numTexCoords,
LPD3DXSIMPLESHAPE* ppShape );
//-------------------------------------------------------------------------
// D3DXCreateBox: Creates a box (cuboid) of given dimensions using the
// ------------ device. It returns a vertex buffer that can
// be used for drawing or manipulation by the program later on.
//
// Params:
// [in] LPDIRECT3DDEVICE7 pDevice: The device to create off.
// [in] float width: Width of the box (along x-axis)
// [in] float height: Height of the box (along y-axis)
// [in] float depth: Depth of the box (along z-axis)
// [in] DWORD numTexCoords: The number of texture coordinates desired
// in the vertex-buffer. Default is 1.
// D3DX_DEFAULT is a valid input here.
// [out] LPD3DXSIMPLESHAPE* ppShape: The output vertex-buffer.
//-------------------------------------------------------------------------
HRESULT WINAPI
D3DXCreateBox(LPDIRECT3DDEVICE7 pDevice,
float width,
float height,
float depth,
DWORD numTexCoords,
LPD3DXSIMPLESHAPE* ppShape );
//-------------------------------------------------------------------------
// D3DXCreateCylinder: Creates a cylinder of given dimensions using the
// ----------------- device. It returns a vertex buffer that
// can be used for drawing or manipulation by the program
// later on.
//
// Params:
// [in] LPDIRECT3DDEVICE7 pDevice: The device to create off.
// [in] float baseRadius: Base-radius (default is 1.0f, shd be >= 0.0f)
// [in] float topRadius: Top-radius (default is 1.0f, shd be >= 0.0f)
// [in] float height: Height (default is 1.0f, shd be >= 0.0f)
// [in] DWORD numSlices: Number of slices about the main axis.
// (default is 8) D3DX_DEFAULT is a valid input.
// [in] DWORD numStacks: Number of stacks along the main axis.
// (default is 8) D3DX_DEFAULT is a valid input.
// [in] DWORD numTexCoords: The number of texture coordinates desired
// in the vertex-buffer. Default is 1.
// D3DX_DEFAULT is a valid input here.
// [out] LPD3DXSIMPLESHAPE* ppShape: The output shape interface.
//-------------------------------------------------------------------------
HRESULT WINAPI
D3DXCreateCylinder(LPDIRECT3DDEVICE7 pDevice,
float baseRadius,
float topRadius,
float height,
DWORD numSlices,
DWORD numStacks,
DWORD numTexCoords,
LPD3DXSIMPLESHAPE* ppShape );
//-------------------------------------------------------------------------
// D3DXCreateTorus: Creates a torus of given dimensions using the
// -------------- device specified. It returns a vertex buffer that can
// be used for drawing or manipulation by the program later
// on. It draws a doughnut, centered at (0, 0, 0) whose axis
// is aligned with the z-axis. With the innerRadius used
// as the radius of the cross-section (minor-Radius) and
// the outerRadius used as the radius of the central 'hole'.
//
// Params:
// [in] LPDIRECT3DDEVICE7 pDevice: The device to create off.
// [in] float innerRadius: inner radius (default is 1.0f, shd be >= 0.0f)
// [in] float outerRadius: outer radius (default is 2.0f, shd be >= 0.0f)
// [in] DWORD numSides: Number of sides in the cross-section
// (default is 8). D3DX_DEFAULT is a valid input.
// [in] DWORD numRings: Number of rings making up the torus
// (default is 8) D3DX_DEFAULT is a valid input.
// [in] DWORD numTexCoords: The number of texture coordinates desired
// in the vertex-buffer. Default is 1.
// D3DX_DEFAULT is a valid input here.
// [out] LPD3DXSIMPLESHAPE* ppShape: The output shape interface.
//-------------------------------------------------------------------------
HRESULT WINAPI
D3DXCreateTorus(LPDIRECT3DDEVICE7 pDevice,
float innerRadius,
float outerRadius,
DWORD numSides,
DWORD numRings,
DWORD numTexCoords,
LPD3DXSIMPLESHAPE* ppShape );
//-------------------------------------------------------------------------
// D3DXCreateTeapot: Creates a teapot using the device specified.
// ---------------- It returns a vertex buffer that can be used for
// drawing or manipulation by the program later on.
//
// Params:
// [in] LPDIRECT3DDEVICE7 pDevice: The device to create off.
// [in] DWORD numTexCoords: The number of texture coordinates desired
// in the vertex-buffer. Default is 1.
// D3DX_DEFAULT is a valid input here.
// [out] LPD3DXSIMPLESHAPE* ppShape: The output shape interface.
//-------------------------------------------------------------------------
HRESULT WINAPI
D3DXCreateTeapot(LPDIRECT3DDEVICE7 pDevice,
DWORD numTexCoords,
LPD3DXSIMPLESHAPE* ppShape);
//-------------------------------------------------------------------------
// D3DXCreateSphere: Creates a cylinder of given dimensions using the
// ---------------- device specified.
// It returns a vertex buffer that can be used for
// drawing or manipulation by the program later on.
//
// Params:
// [in] LPDIRECT3DDEVICE7 pDevice: The device to create off.
// [in] float radius: radius (default is 1.0f, shd be >= 0.0f)
// [in] float height: Height (default is 1.0f, shd be >= 0.0f)
// [in] DWORD numSlices: Number of slices about the main axis
// (default is 8) D3DX_DEFAULT is a valid input.
// [in] DWORD numStacks: Number of stacks along the main axis
// (default is 8) D3DX_DEFAULT is a valid input.
// [in] DWORD numTexCoords: The number of texture coordinates desired
// in the vertex-buffer. Default is 1.
// D3DX_DEFAULT is a valid input here.
// [out] LPD3DXSIMPLESHAPE* ppShape: The output shape interface.
//-------------------------------------------------------------------------
HRESULT WINAPI
D3DXCreateSphere(LPDIRECT3DDEVICE7 pDevice,
float radius,
DWORD numSlices,
DWORD numStacks,
DWORD numTexCoords,
LPD3DXSIMPLESHAPE* ppShape);
#ifdef __cplusplus
}
#endif //__cplusplus
#endif //__D3DXSHAPES_H__

View file

@ -0,0 +1,321 @@
///////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 1999 Microsoft Corporation. All Rights Reserved.
//
// File: d3dxsprite.h
// Content: D3DX sprite helper functions
//
// These functions allow you to use sprites with D3DX. A "sprite" is
// loosely defined as a 2D image that you want to transfer to the
// rendering target. The source image can be a texture created
// with the help of the D3DX texture loader; though advanced users may
// want to create their own. A helper function (PrepareDeviceForSprite)
// is provided to make it easy to set up render states on a device.
// (Again, advanced users can use their own created devices.)
//
// There are two general techniques for sprites; the simpler one just
// specifies a destination rectangle and a rotation anlge. A more
// powerful technique supports rendering to non-rectangular quads.
//
// Both techniques support clipping, alpha, and rotation. More
// details are below.
//
///////////////////////////////////////////////////////////////////////////
#ifndef __D3DXSPRITE_H__
#define __D3DXSPRITE_H__
#include <d3d.h>
#include <limits.h>
#include "d3dxerr.h"
#ifdef __cplusplus
extern "C" {
#endif
//-------------------------------------------------------------------------
// D3DXPrepareDeviceForSprite:
//
// Call this function to set up all the render states necessary for
// BltSprite/WarpSprite to work correctly. (Advanced users may opt to
// not call this function first; in which case Blt/WarpSprite functions
// will use whatever render/texture states were set up on the device when
// they are called.)
//
// Warning: This function modifies render states and may impact performance
// negatively on some 3D hardware if it is called too often per frame.
//
// Warning: If the render state changes (other than through calls to
// BltSprite or WarpSprite), you will need to call this function again before
// calling BltSprite or WarpSprite.
//
// Details: This function modifies the the rendering first texture stage and
// it modifies some renderstates for the entire device. Here is the exact
// list:
//
// SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE);
// SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_SELECTARG1);
// SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE);
// SetTextureStageState(0, D3DTSS_ALPHAARG2, D3DTA_DIFFUSE);
// SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_MODULATE);
// SetTextureStageState(0, D3DTSS_MINFILTER, D3DTFN_LINEAR);
// SetTextureStageState(0, D3DTSS_MAGFILTER, D3DTFG_LINEAR);
//
// SetRenderState(D3DRENDERSTATE_SRCBLEND, D3DBLEND_SRCALPHA);
// SetRenderState(D3DRENDERSTATE_DESTBLEND, D3DBLEND_INVSRCALPHA);
// SetRenderState(D3DRENDERSTATE_ALPHABLENDENABLE, TRUE);
//
// Depending on the value of ZEnable parameter, this function will
// will either call
// SetRenderState(D3DRENDERSTATE_ZENABLE, FALSE);
// - or -
// SetRenderState(D3DRENDERSTATE_ZENABLE, TRUE);
//
// Parameters:
// pd3dDevice - a pointer to the d3d device that you wish to prepare
// for use with D3DX Sprite Services
// ZEnable - a flag indicating whether you want the sprites to
// check and update the Z buffer as part of rendering.
// If ZEnable is FALSE, OR you are using
// alpha-blending, then it is necessary to render your
// sprites from back-to-front.
//
//-------------------------------------------------------------------------
#ifdef __cplusplus
HRESULT WINAPI
D3DXPrepareDeviceForSprite( LPDIRECT3DDEVICE7 pd3dDevice,
BOOL ZEnable = FALSE);
#else
HRESULT WINAPI
D3DXPrepareDeviceForSprite( LPDIRECT3DDEVICE7 pd3dDevice,
BOOL ZEnable);
#endif
//-------------------------------------------------------------------------
// The D3DXDrawBasicSprite() function performs blitting of source images onto
// a 3D rendering device. This function only calls SetTexture on the first
// renderstage with the parameter (pd3dTexture) if that parameter is non-null.
// This function assumes that D3DXPrepareDeviceForSprite has been called on
// the device or that caller has in some other way correctly prepared the
// renderstates.
//
// This function supports scaling, rotations, alpha-blending, and choosing
// a source sub-rect.
//
// Rotation angle is specified in radians. Both rotations and scales
// are applied around the center of the sprite; where the center of the
// sprite is half the width/height of the sprite, plus the offset parameter.
//
// Use the offset parameter if you want the sprite's center to be something
// other than the image center.
//
// The destination point indicates where you would like the center of
// the sprite to draw to.
//
// Parameters:
// pd3dTexture - a pointer to the surface containing the texture
// pd3dDevice - a pointer to the d3d device to render to. It is
// assumed that render states are set up. (See
// D3DXPrepareDeviceForSprite)
// ppointDest - a pointer to the target point for the sprite. The
// components of the vector must be in screen
// space.
// alpha - alpha value to apply to sprite. 1.0 means totally
// opaque; and 0.0 means totally transparent.
// WARNING: If you are using alpha, then you should render
// from back to front in order to avoid rendering
// artifacts.
// angleRad - angle of rotation around the 'center' of the rect
// scale - a uniform scale that is applied to the source rect
// to specify the size of the image that is rendered
// pOffset - offset from the center of the source rect to use as the
// center of rotation
// pSourceRect - a rect that indicates what portion of the source
// source texture to use. If NULL is passed, then the
// entire source is used. If the source texture was
// created via D3DX, then the rect should be specified
// in the coordinates of the original image (so that you
// don't have to worry about stretching/scaling that D3DX
// may have done to make the image work with your current
// 3D Device.) Note that horizontal or vertical mirroring
// may be simply accomplished by swapping the left/right
// or top/bottom fields of this RECT.
//-------------------------------------------------------------------------
#ifdef __cplusplus
HRESULT WINAPI
D3DXDrawSpriteSimple(LPDIRECTDRAWSURFACE7 pd3dTexture,
LPDIRECT3DDEVICE7 pd3dDevice,
const D3DXVECTOR3 *ppointDest,
float alpha = 1.0f,
float scale = 1.0f,
float angleRad = 0.0f,
const D3DXVECTOR2 *pOffset = NULL,
const RECT *pSourceRect = NULL);
#else
HRESULT WINAPI
D3DXDrawSpriteSimple(LPDIRECTDRAWSURFACE7 pd3dTexture,
LPDIRECT3DDEVICE7 pd3dDevice,
D3DXVECTOR3 *ppointDest,
float alpha,
float scale,
float angleRad,
D3DXVECTOR2 *pOffset,
RECT *pSourceRect);
#endif
//-------------------------------------------------------------------------
// The D3DXDrawSprite() function transforms source images onto a 3D
// rendering device. It takes a general 4x4 matrix which is use to transform
// the points of a default rect: (left=-.5, top=-.5, right=+.5, bottom=+.5).
// (This default rect was chosen so that it was centered around the origin
// to ease setting up rotations. And it was chosen to have a width/height of one
// to ease setting up scales.)
//
// This function only calls SetTexture on the first
// renderstage with the parameter (pd3dTexture) if that parameter is non-null.
// This function assumes that D3DXPrepareDeviceForSprite has been called on
// the device or that caller has in some other way correctly prepared the
// renderstates.
//
// This function supports alpha-blending, and choosing
// a source sub-rect. (A value of NULL for source sub-rect means the entire
// texture is used.)
//
// Note that if the transformed points have a value for w (the homogenous
// coordinate) that is not 1, then this function will invert it and pass
// that value to D3D as the rhw field of a TLVERTEX. If the value for w is
// zero, then it use 1 as the rhw.
//
// Parameters:
// pd3dTexture - a pointer to the surface containing the texture
// pd3dDevice - a pointer to the d3d device to render to. It is
// assumed that render states are set up. (See
// D3DXPrepareDeviceForSprite)
// pMatrixTransform - 4x4 matrix that specifies the transformation
// that will be applied to the default -.5 to +.5
// rectangle.
// alpha - alpha value to apply to sprite. 1.0 means totally
// opaque; and 0.0 means totally transparent.
// WARNING: If you are using alpha, then you should render
// from back to front in order to avoid rendering
// artifacts.Furthermore, you should avoid scenarios where
// semi-transparent objects intersect.
// pSourceRect - a rect that indicates what portion of the source
// source texture to use. If NULL is passed, then the
// entire source is used. If the source texture was
// created via D3DX, then the rect should be specified
// in the coordinates of the original image (so that you
// don't have to worry about stretching/scaling that D3DX
// may have done to make the image work with your current
// 3D Device.) Note that mirroring may be simply accomplished
// by swapping the left/right or top/bottom fields of
// this RECT.
//
//-------------------------------------------------------------------------
#ifdef __cplusplus
HRESULT WINAPI
D3DXDrawSpriteTransform(LPDIRECTDRAWSURFACE7 pd3dTexture,
LPDIRECT3DDEVICE7 pd3dDevice,
const D3DXMATRIX *pMatrixTransform,
float alpha = 1.0f,
const RECT *pSourceRect = NULL);
#else
HRESULT WINAPI
D3DXDrawSpriteTransform(LPDIRECTDRAWSURFACE7 pd3dTexture,
LPDIRECT3DDEVICE7 pd3dDevice,
D3DXMATRIX *pMatrixTransform,
float alpha,
RECT *pSourceRect);
#endif
//-------------------------------------------------------------------------
// The D3DXBuildSpriteTransform() function is a helper provided which
// creates a matrix corresponding to simple properties. This matrix is
// set up to pass directly to D3DXTransformSprite.
//
// Parameters:
// pMatrix - a pointer to the result matrix
// prectDest - a pointer to the target rectangle for the sprite
// angleRad - angle of rotation around the 'center' of the rect
// pOffset - offset from the center of the source rect to use as the
// center of rotation
//
//-------------------------------------------------------------------------
#ifdef __cplusplus
void WINAPI
D3DXBuildSpriteTransform(D3DXMATRIX *pMatrix,
const RECT *prectDest,
float angleRad = 0.0f,
const D3DXVECTOR2 *pOffset = NULL);
#else
void WINAPI
D3DXBuildSpriteTransform(D3DXMATRIX *pMatrix,
RECT *prectDest,
float angleRad,
D3DXVECTOR2 *pOffset);
#endif
//-------------------------------------------------------------------------
// The D3DXDrawSprite3D() function renders a texture onto a 3D quad. The
// quad ABCD is broken into two triangles ABC and ACD which are rendered
// via DrawPrim.
//
// Parameters:
// pd3dTexture - a pointer to the surface containing the texture
// pd3dDevice - a pointer to the d3d device to render to. It is
// assumed that render states are set up. (See
// D3DXPrepareDeviceForSprite)
// quad - array of 4 points in the following order:
// upper-left, upper-right, lower-right, lower-left.
// If these vectors contain a W, then this function
// will take the reciprocal of that value to pass as
// as the rhw (i.e. reciprocal homogenous w).
// alpha - alpha value to apply to sprite. 1.0 means totally
// opaque; and 0.0 means totally transparent.
// WARNING: If you are using alpha, then you should render
// from back to front in order to avoid rendering
// artifacts.Furthermore, you should avoid scenarios where
// semi-transparent objects intersect.
// pSourceRect - a rect that indicates what portion of the source
// source texture to use. If NULL is passed, then the
// entire source is used. If the source texture was
// created via D3DX, then the rect should be specified
// in the coordinates of the original image (so that you
// don't have to worry about stretching/scaling that D3DX
// may have done to make the image work with your current
// 3D Device.) Note that mirroring may be simply accomplished
// by swapping the left/right or top/bottom fields of
// this RECT.
//-------------------------------------------------------------------------
#ifdef __cplusplus
HRESULT WINAPI
D3DXDrawSprite3D(LPDIRECTDRAWSURFACE7 pd3dTexture,
LPDIRECT3DDEVICE7 pd3dDevice,
const D3DXVECTOR4 quad[4],
float alpha = 1.0f,
const RECT *pSourceRect = NULL);
#else
HRESULT WINAPI
D3DXDrawSprite3D(LPDIRECTDRAWSURFACE7 pd3dTexture,
LPDIRECT3DDEVICE7 pd3dDevice,
D3DXVECTOR4 quad[4],
float alpha,
RECT *pSourceRect);
#endif
#ifdef __cplusplus
} // extern "C"
#endif
#endif // __D3DXSPRITE_H__

File diff suppressed because it is too large Load diff

Binary file not shown.

Binary file not shown.

Binary file not shown.