home *** CD-ROM | disk | FTP | other *** search
/ Chip 1997 April / Chip_1997-04_cd.bin / prezent / cb / data.z / D3DCAPS.H < prev    next >
C/C++ Source or Header  |  1997-01-16  |  14KB  |  291 lines

  1. /*==========================================================================;
  2.  *
  3.  *  Copyright (C) 1995-1996 Microsoft Corporation.  All Rights Reserved.
  4.  *
  5.  *  File:       d3dcaps.h
  6.  *  Content:    Direct3D capabilities include file
  7.  *
  8.  ***************************************************************************/
  9.  
  10. #ifndef _D3DCAPS_H
  11. #define _D3DCAPS_H
  12.  
  13. /* 
  14.  *  Pull in DirectDraw include file automatically:
  15.  */
  16. #include <ddraw.h>
  17.  
  18. #pragma pack(4)
  19.  
  20. /* Description of capabilities of transform */
  21.  
  22. typedef struct _D3DTRANSFORMCAPS {
  23.     DWORD dwSize;
  24.     DWORD dwCaps;
  25. } D3DTRANSFORMCAPS, *LPD3DTRANSFORMCAPS;
  26.  
  27. #define D3DTRANSFORMCAPS_CLIP           0x00000001L /* Will clip whilst transforming */
  28.  
  29. /* Description of capabilities of lighting */
  30.  
  31. typedef struct _D3DLIGHTINGCAPS {
  32.     DWORD dwSize;
  33.     DWORD dwCaps;                   /* Lighting caps */
  34.     DWORD dwLightingModel;          /* Lighting model - RGB or mono */
  35.     DWORD dwNumLights;              /* Number of lights that can be handled */
  36. } D3DLIGHTINGCAPS, *LPD3DLIGHTINGCAPS;
  37.  
  38. #define D3DLIGHTINGMODEL_RGB            0x00000001L
  39. #define D3DLIGHTINGMODEL_MONO           0x00000002L
  40.  
  41. #define D3DLIGHTCAPS_POINT              0x00000001L /* Point lights supported */
  42. #define D3DLIGHTCAPS_SPOT               0x00000002L /* Spot lights supported */
  43. #define D3DLIGHTCAPS_DIRECTIONAL        0x00000004L /* Directional lights supported */
  44. #define D3DLIGHTCAPS_PARALLELPOINT      0x00000008L /* Parallel point lights supported */
  45. #define D3DLIGHTCAPS_GLSPOT             0x00000010L /* GL syle spot lights supported */
  46.  
  47. /* Description of capabilities for each primitive type */
  48.  
  49. typedef struct _D3DPrimCaps {
  50.     DWORD dwSize;
  51.     DWORD dwMiscCaps;                 /* Capability flags */
  52.     DWORD dwRasterCaps;
  53.     DWORD dwZCmpCaps;
  54.     DWORD dwSrcBlendCaps;
  55.     DWORD dwDestBlendCaps;
  56.     DWORD dwAlphaCmpCaps;
  57.     DWORD dwShadeCaps;
  58.     DWORD dwTextureCaps;
  59.     DWORD dwTextureFilterCaps;
  60.     DWORD dwTextureBlendCaps;
  61.     DWORD dwTextureAddressCaps;
  62.     DWORD dwStippleWidth;             /* maximum width and height of */
  63.     DWORD dwStippleHeight;            /* of supported stipple (up to 32x32) */
  64. } D3DPRIMCAPS, *LPD3DPRIMCAPS;
  65.  
  66. /* D3DPRIMCAPS dwMiscCaps */
  67.  
  68. #define D3DPMISCCAPS_MASKPLANES         0x00000001L
  69. #define D3DPMISCCAPS_MASKZ              0x00000002L
  70. #define D3DPMISCCAPS_LINEPATTERNREP     0x00000004L
  71. #define D3DPMISCCAPS_CONFORMANT         0x00000008L
  72. #define D3DPMISCCAPS_CULLNONE           0x00000010L
  73. #define D3DPMISCCAPS_CULLCW             0x00000020L
  74. #define D3DPMISCCAPS_CULLCCW            0x00000040L
  75.  
  76. /* D3DPRIMCAPS dwRasterCaps */
  77.  
  78. #define D3DPRASTERCAPS_DITHER           0x00000001L
  79. #define D3DPRASTERCAPS_ROP2             0x00000002L
  80. #define D3DPRASTERCAPS_XOR              0x00000004L
  81. #define D3DPRASTERCAPS_PAT              0x00000008L
  82. #define D3DPRASTERCAPS_ZTEST            0x00000010L
  83. #define D3DPRASTERCAPS_SUBPIXEL         0x00000020L
  84. #define D3DPRASTERCAPS_SUBPIXELX        0x00000040L
  85. #define D3DPRASTERCAPS_FOGVERTEX        0x00000080L
  86. #define D3DPRASTERCAPS_FOGTABLE         0x00000100L
  87. #define D3DPRASTERCAPS_STIPPLE          0x00000200L
  88.  
  89. /* D3DPRIMCAPS dwZCmpCaps, dwAlphaCmpCaps */
  90.  
  91. #define D3DPCMPCAPS_NEVER               0x00000001L
  92. #define D3DPCMPCAPS_LESS                0x00000002L
  93. #define D3DPCMPCAPS_EQUAL               0x00000004L
  94. #define D3DPCMPCAPS_LESSEQUAL           0x00000008L
  95. #define D3DPCMPCAPS_GREATER             0x00000010L
  96. #define D3DPCMPCAPS_NOTEQUAL            0x00000020L
  97. #define D3DPCMPCAPS_GREATEREQUAL        0x00000040L
  98. #define D3DPCMPCAPS_ALWAYS              0x00000080L
  99.  
  100. /* D3DPRIMCAPS dwSourceBlendCaps, dwDestBlendCaps */
  101.  
  102. #define D3DPBLENDCAPS_ZERO              0x00000001L
  103. #define D3DPBLENDCAPS_ONE               0x00000002L
  104. #define D3DPBLENDCAPS_SRCCOLOR          0x00000004L
  105. #define D3DPBLENDCAPS_INVSRCCOLOR       0x00000008L
  106. #define D3DPBLENDCAPS_SRCALPHA          0x00000010L
  107. #define D3DPBLENDCAPS_INVSRCALPHA       0x00000020L
  108. #define D3DPBLENDCAPS_DESTALPHA         0x00000040L
  109. #define D3DPBLENDCAPS_INVDESTALPHA      0x00000080L
  110. #define D3DPBLENDCAPS_DESTCOLOR         0x00000100L
  111. #define D3DPBLENDCAPS_INVDESTCOLOR      0x00000200L
  112. #define D3DPBLENDCAPS_SRCALPHASAT       0x00000400L
  113. #define D3DPBLENDCAPS_BOTHSRCALPHA      0x00000800L
  114. #define D3DPBLENDCAPS_BOTHINVSRCALPHA   0x00001000L
  115.  
  116. /* D3DPRIMCAPS dwShadeCaps */
  117.  
  118. #define D3DPSHADECAPS_COLORFLATMONO             0x00000001L
  119. #define D3DPSHADECAPS_COLORFLATRGB              0x00000002L
  120. #define D3DPSHADECAPS_COLORGOURAUDMONO          0x00000004L
  121. #define D3DPSHADECAPS_COLORGOURAUDRGB           0x00000008L
  122. #define D3DPSHADECAPS_COLORPHONGMONO            0x00000010L
  123. #define D3DPSHADECAPS_COLORPHONGRGB             0x00000020L
  124.  
  125. #define D3DPSHADECAPS_SPECULARFLATMONO          0x00000040L
  126. #define D3DPSHADECAPS_SPECULARFLATRGB           0x00000080L
  127. #define D3DPSHADECAPS_SPECULARGOURAUDMONO       0x00000100L
  128. #define D3DPSHADECAPS_SPECULARGOURAUDRGB        0x00000200L
  129. #define D3DPSHADECAPS_SPECULARPHONGMONO         0x00000400L
  130. #define D3DPSHADECAPS_SPECULARPHONGRGB          0x00000800L
  131.  
  132. #define D3DPSHADECAPS_ALPHAFLATBLEND            0x00001000L
  133. #define D3DPSHADECAPS_ALPHAFLATSTIPPLED         0x00002000L
  134. #define D3DPSHADECAPS_ALPHAGOURAUDBLEND         0x00004000L
  135. #define D3DPSHADECAPS_ALPHAGOURAUDSTIPPLED      0x00008000L
  136. #define D3DPSHADECAPS_ALPHAPHONGBLEND           0x00010000L
  137. #define D3DPSHADECAPS_ALPHAPHONGSTIPPLED        0x00020000L
  138.  
  139. #define D3DPSHADECAPS_FOGFLAT                   0x00040000L
  140. #define D3DPSHADECAPS_FOGGOURAUD                0x00080000L
  141. #define D3DPSHADECAPS_FOGPHONG                  0x00100000L
  142.  
  143. /* D3DPRIMCAPS dwTextureCaps */
  144.  
  145. #define D3DPTEXTURECAPS_PERSPECTIVE     0x00000001L
  146. #define D3DPTEXTURECAPS_POW2            0x00000002L
  147. #define D3DPTEXTURECAPS_ALPHA           0x00000004L
  148. #define D3DPTEXTURECAPS_TRANSPARENCY    0x00000008L
  149. #define D3DPTEXTURECAPS_BORDER          0x00000010L
  150. #define D3DPTEXTURECAPS_SQUAREONLY      0x00000020L
  151.  
  152. /* D3DPRIMCAPS dwTextureFilterCaps */
  153.  
  154. #define D3DPTFILTERCAPS_NEAREST         0x00000001L
  155. #define D3DPTFILTERCAPS_LINEAR          0x00000002L
  156. #define D3DPTFILTERCAPS_MIPNEAREST      0x00000004L
  157. #define D3DPTFILTERCAPS_MIPLINEAR       0x00000008L
  158. #define D3DPTFILTERCAPS_LINEARMIPNEAREST 0x00000010L
  159. #define D3DPTFILTERCAPS_LINEARMIPLINEAR 0x00000020L
  160.  
  161. /* D3DPRIMCAPS dwTextureBlendCaps */
  162.  
  163. #define D3DPTBLENDCAPS_DECAL            0x00000001L
  164. #define D3DPTBLENDCAPS_MODULATE         0x00000002L
  165. #define D3DPTBLENDCAPS_DECALALPHA       0x00000004L
  166. #define D3DPTBLENDCAPS_MODULATEALPHA    0x00000008L
  167. #define D3DPTBLENDCAPS_DECALMASK        0x00000010L
  168. #define D3DPTBLENDCAPS_MODULATEMASK     0x00000020L
  169. #define D3DPTBLENDCAPS_COPY             0x00000040L
  170.  
  171. /* D3DPRIMCAPS dwTextureAddressCaps */
  172. #define D3DPTADDRESSCAPS_WRAP           0x00000001L
  173. #define D3DPTADDRESSCAPS_MIRROR         0x00000002L
  174. #define D3DPTADDRESSCAPS_CLAMP          0x00000004L
  175.  
  176. /*
  177.  * Description for a device.
  178.  * This is used to describe a device that is to be created or to query
  179.  * the current device.
  180.  */
  181. typedef struct _D3DDeviceDesc {
  182.     DWORD            dwSize;                 /* Size of D3DDEVICEDESC structure */
  183.     DWORD            dwFlags;                /* Indicates which fields have valid data */
  184.     D3DCOLORMODEL    dcmColorModel;          /* Color model of device */
  185.     DWORD            dwDevCaps;              /* Capabilities of device */
  186.     D3DTRANSFORMCAPS dtcTransformCaps;       /* Capabilities of transform */
  187.     BOOL             bClipping;              /* Device can do 3D clipping */
  188.     D3DLIGHTINGCAPS  dlcLightingCaps;        /* Capabilities of lighting */
  189.     D3DPRIMCAPS      dpcLineCaps;
  190.     D3DPRIMCAPS      dpcTriCaps;
  191.     DWORD            dwDeviceRenderBitDepth; /* One of DDBB_8, 16, etc.. */
  192.     DWORD            dwDeviceZBufferBitDepth;/* One of DDBD_16, 32, etc.. */
  193.     DWORD            dwMaxBufferSize;        /* Maximum execute buffer size */
  194.     DWORD            dwMaxVertexCount;       /* Maximum vertex count */
  195. } D3DDEVICEDESC, *LPD3DDEVICEDESC;
  196.  
  197. typedef HRESULT (FAR PASCAL * LPD3DENUMDEVICESCALLBACK)(LPGUID lpGuid, LPSTR lpDeviceDescription, LPSTR lpDeviceName, LPD3DDEVICEDESC, LPD3DDEVICEDESC, LPVOID);
  198.  
  199. /* D3DDEVICEDESC dwFlags indicating valid fields */
  200.  
  201. #define D3DDD_COLORMODEL            0x00000001L /* dcmColorModel is valid */
  202. #define D3DDD_DEVCAPS               0x00000002L /* dwDevCaps is valid */
  203. #define D3DDD_TRANSFORMCAPS         0x00000004L /* dtcTransformCaps is valid */
  204. #define D3DDD_LIGHTINGCAPS          0x00000008L /* dlcLightingCaps is valid */
  205. #define D3DDD_BCLIPPING             0x00000010L /* bClipping is valid */
  206. #define D3DDD_LINECAPS              0x00000020L /* dpcLineCaps is valid */
  207. #define D3DDD_TRICAPS               0x00000040L /* dpcTriCaps is valid */
  208. #define D3DDD_DEVICERENDERBITDEPTH  0x00000080L /* dwDeviceRenderBitDepth is valid */
  209. #define D3DDD_DEVICEZBUFFERBITDEPTH 0x00000100L /* dwDeviceZBufferBitDepth is valid */
  210. #define D3DDD_MAXBUFFERSIZE         0x00000200L /* dwMaxBufferSize is valid */
  211. #define D3DDD_MAXVERTEXCOUNT        0x00000400L /* dwMaxVertexCount is valid */
  212.  
  213. /* D3DDEVICEDESC dwDevCaps flags */
  214.  
  215. #define D3DDEVCAPS_FLOATTLVERTEX        0x00000001L /* Device accepts floating point */
  216.                                                     /* for post-transform vertex data */
  217. #define D3DDEVCAPS_SORTINCREASINGZ      0x00000002L /* Device needs data sorted for increasing Z*/
  218. #define D3DDEVCAPS_SORTDECREASINGZ      0X00000004L /* Device needs data sorted for decreasing Z*/
  219. #define D3DDEVCAPS_SORTEXACT            0x00000008L /* Device needs data sorted exactly */
  220.  
  221. #define D3DDEVCAPS_EXECUTESYSTEMMEMORY  0x00000010L /* Device can use execute buffers from system memory */
  222. #define D3DDEVCAPS_EXECUTEVIDEOMEMORY   0x00000020L /* Device can use execute buffers from video memory */
  223. #define D3DDEVCAPS_TLVERTEXSYSTEMMEMORY 0x00000040L /* Device can use TL buffers from system memory */
  224. #define D3DDEVCAPS_TLVERTEXVIDEOMEMORY  0x00000080L /* Device can use TL buffers from video memory */
  225. #define D3DDEVCAPS_TEXTURESYSTEMMEMORY  0x00000100L /* Device can texture from system memory */
  226. #define D3DDEVCAPS_TEXTUREVIDEOMEMORY   0x00000200L /* Device can texture from device memory */
  227.  
  228. #define D3DFDS_COLORMODEL        0x00000001L /* Match color model */
  229. #define D3DFDS_GUID              0x00000002L /* Match guid */
  230. #define D3DFDS_HARDWARE          0x00000004L /* Match hardware/software */
  231. #define D3DFDS_TRIANGLES         0x00000008L /* Match in triCaps */
  232. #define D3DFDS_LINES             0x00000010L /* Match in lineCaps  */
  233. #define D3DFDS_MISCCAPS          0x00000020L /* Match primCaps.dwMiscCaps */
  234. #define D3DFDS_RASTERCAPS        0x00000040L /* Match primCaps.dwRasterCaps */
  235. #define D3DFDS_ZCMPCAPS          0x00000080L /* Match primCaps.dwZCmpCaps */
  236. #define D3DFDS_ALPHACMPCAPS      0x00000100L /* Match primCaps.dwAlphaCmpCaps */
  237. #define D3DFDS_SRCBLENDCAPS      0x00000200L /* Match primCaps.dwSourceBlendCaps */
  238. #define D3DFDS_DSTBLENDCAPS      0x00000400L /* Match primCaps.dwDestBlendCaps */
  239. #define D3DFDS_SHADECAPS         0x00000800L /* Match primCaps.dwShadeCaps */
  240. #define D3DFDS_TEXTURECAPS       0x00001000L /* Match primCaps.dwTextureCaps */
  241. #define D3DFDS_TEXTUREFILTERCAPS 0x00002000L /* Match primCaps.dwTextureFilterCaps */
  242. #define D3DFDS_TEXTUREBLENDCAPS  0x00004000L /* Match primCaps.dwTextureBlendCaps */
  243. #define D3DFDS_TEXTUREADDRESSCAPS  0x00008000L /* Match primCaps.dwTextureBlendCaps */
  244.  
  245. /*
  246.  * FindDevice arguments
  247.  */
  248. typedef struct _D3DFINDDEVICESEARCH {
  249.     DWORD               dwSize;
  250.     DWORD               dwFlags;
  251.     BOOL                bHardware;
  252.     D3DCOLORMODEL       dcmColorModel;
  253.     GUID                guid;
  254.     DWORD               dwCaps;
  255.     D3DPRIMCAPS         dpcPrimCaps;
  256. } D3DFINDDEVICESEARCH, *LPD3DFINDDEVICESEARCH;
  257.  
  258. typedef struct _D3DFINDDEVICERESULT {
  259.     DWORD               dwSize;
  260.     GUID                guid;           /* guid which matched */
  261.     D3DDEVICEDESC       ddHwDesc;               /* hardware D3DDEVICEDESC */
  262.     D3DDEVICEDESC       ddSwDesc;       /* software D3DDEVICEDESC */
  263. } D3DFINDDEVICERESULT, *LPD3DFINDDEVICERESULT;
  264.  
  265. /*
  266.  * Description of execute buffer.
  267.  */
  268. typedef struct _D3DExecuteBufferDesc {
  269.     DWORD               dwSize;         /* size of this structure */
  270.     DWORD               dwFlags;        /* flags indicating which fields are valid */
  271.     DWORD               dwCaps;         /* capabilities of execute buffer */
  272.     DWORD               dwBufferSize;   /* size of execute buffer data */
  273.     LPVOID              lpData;         /* pointer to actual data */
  274. } D3DEXECUTEBUFFERDESC, *LPD3DEXECUTEBUFFERDESC;
  275.  
  276. /* D3DEXECUTEBUFFER dwFlags indicating valid fields */
  277.  
  278. #define D3DDEB_BUFSIZE          0x00000001l     /* buffer size valid */
  279. #define D3DDEB_CAPS             0x00000002l     /* caps valid */
  280. #define D3DDEB_LPDATA           0x00000004l     /* lpData valid */
  281.  
  282. /* D3DEXECUTEBUFFER dwCaps */
  283.  
  284. #define D3DDEBCAPS_SYSTEMMEMORY 0x00000001l     /* buffer in system memory */
  285. #define D3DDEBCAPS_VIDEOMEMORY  0x00000002l     /* buffer in device memory */
  286. #define D3DDEBCAPS_MEM (D3DDEBCAPS_SYSTEMMEMORY|D3DDEBCAPS_VIDEOMEMORY)
  287.  
  288. #pragma pack()
  289.  
  290. #endif /* _D3DCAPS_H_ */
  291.