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