d3dxcore.h
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:45k
源码类别:

模拟服务器

开发平台:

C/C++

  1. ///////////////////////////////////////////////////////////////////////////
  2. //
  3. //  Copyright (C) Microsoft Corporation.  All Rights Reserved.
  4. //
  5. //  File:       d3dxcore.h
  6. //  Content:    D3DX core types and functions
  7. //
  8. ///////////////////////////////////////////////////////////////////////////
  9. #ifndef __D3DXCORE_H__
  10. #define __D3DXCORE_H__
  11. #include <d3d.h>
  12. #include <limits.h>
  13. #include "d3dxerr.h"
  14. typedef struct ID3DXContext *LPD3DXCONTEXT;
  15. // {9B74ED7A-BBEF-11d2-9F8E-0000F8080835}
  16. DEFINE_GUID(IID_ID3DXContext, 
  17.      0x9b74ed7a, 0xbbef, 0x11d2, 0x9f, 0x8e, 0x0, 0x0, 0xf8, 0x8, 0x8, 0x35);
  18. ///////////////////////////////////////////////////////////////////////////
  19. // Defines and Enumerators used below:
  20. ///////////////////////////////////////////////////////////////////////////
  21. //-------------------------------------------------------------------------
  22. // D3DX_DEFAULT:
  23. // ---------
  24. // A predefined value that could be used for any parameter in D3DX APIs or 
  25. // member functions that is an enumerant or a handle.  The D3DX 
  26. // documentation indicates wherever D3DX_DEFAULT may be used, 
  27. // and how it will be interpreted in each situation.
  28. //-------------------------------------------------------------------------
  29. #define D3DX_DEFAULT ULONG_MAX
  30.                             
  31. //-------------------------------------------------------------------------
  32. // D3DX_DEFAULT_FLOAT:
  33. // ------------------
  34. // Similar to D3DX_DEFAULT, but used for floating point parameters.
  35. // The D3DX documentation indicates wherever D3DX_DEFAULT_FLOAT may be used, 
  36. // and how it will be interpreted in each situation.
  37. //-------------------------------------------------------------------------
  38. #define D3DX_DEFAULT_FLOAT FLT_MAX
  39.                             
  40. //-------------------------------------------------------------------------
  41. // Hardware Acceleration Level:
  42. // ---------------------------
  43. // These constants represent pre-defined hardware acceleration levels,
  44. // and may be used as a default anywhere a (DWORD) deviceIndex is required.
  45. // Each pre-define indicates a different level of hardware acceleration.
  46. // They are an alternative to using explicit deviceIndices retrieved by
  47. // D3DXGetDeviceDescription().
  48. //
  49. // The only case these pre-defines should be used as device indices is if
  50. // a particular level of acceleration is required, and given more than 
  51. // one capable device on the computer, it does not matter which one
  52. // is used.
  53. //
  54. // The method of selection is as follows: If one of the D3DX devices on 
  55. // the primary DDraw device supports a requested hardware acceleration 
  56. // level, it will be used. Otherwise, the first matching device discovered 
  57. // by D3DX will be used.  
  58. //
  59. // Of course, it is possible for no match to exist for any of the
  60. // pre-defines on a particular computer.  Passing such a value into the
  61. // D3DX apis will simply cause them to fail, reporting that no match
  62. // is available.
  63. // 
  64. // D3DX_HWLEVEL_NULL:      Null implementation (draws nothing)
  65. // D3DX_HWLEVEL_REFERENCE: Reference implementation (slowest)
  66. // D3DX_HWLEVEL_2D:        2D acceleration only (RGB rasterizer used)
  67. // D3DX_HWLEVEL_RASTER:    Rasterization acceleration (likely most useful)
  68. // D3DX_HWLEVEL_TL:        Transform and lighting acceleration 
  69. // D3DX_DEFAULT:           The highest level of acceleration available
  70. //                         on the primary DDraw device.
  71. //-------------------------------------------------------------------------
  72. #define D3DX_HWLEVEL_NULL       (D3DX_DEFAULT - 1)
  73. #define D3DX_HWLEVEL_REFERENCE  (D3DX_DEFAULT - 2)
  74. #define D3DX_HWLEVEL_2D         (D3DX_DEFAULT - 3) 
  75. #define D3DX_HWLEVEL_RASTER     (D3DX_DEFAULT - 4) 
  76. #define D3DX_HWLEVEL_TL         (D3DX_DEFAULT - 5) 
  77. //-------------------------------------------------------------------------
  78. // Surface Class:
  79. // -------------
  80. // These are the various types of 2D-surfaces classified according to their
  81. // usage. Note that a number of them overlap. e.g. STENCILBUFFERS and 
  82. // DEPTHBUFFERS overlap (since in DX7 implementation the stencil and depth
  83. // bits are part of the same pixel format).
  84. //
  85. // Mapping to the DX7 DDPIXELFORMAT concepts:
  86. // -----------------------------------------
  87. // D3DX_SC_DEPTHBUFFER:    All ddpfs which have the DDPF_ZPIXELS or the
  88. //                           DDPF_ZBUFFER flags set.
  89. // D3DX_SC_STENCILBUFFER:  All ddpfs which have the DDPF_STENCILBUFFER 
  90. //                          flag set.
  91. // D3DX_SC_BUMPMAP:        All ddpfs which have the DDPF_BUMPLUMINANCE 
  92. //                           or the DDPF_BUMPDUDV flags set.
  93. // D3DX_SC_LUMINANCEMAP:   All ddpfs which have the DDPF_BUMPLUMINANCE
  94. //                           or the DDPF_LUMINANCE flags set.
  95. // D3DX_SC_COLORTEXTURE:   All the surfaces that have color information in
  96. //                           them and can be used for texturing.
  97. // D3DX_SC_COLORRENDERTGT: All the surfaces that contain color 
  98. //                           information and can be used as render targets.
  99. //-------------------------------------------------------------------------
  100. #define D3DX_SC_DEPTHBUFFER     0x01
  101. #define D3DX_SC_STENCILBUFFER   0x02
  102. #define D3DX_SC_COLORTEXTURE    0x04
  103. #define D3DX_SC_BUMPMAP         0x08
  104. #define D3DX_SC_LUMINANCEMAP    0x10
  105. #define D3DX_SC_COLORRENDERTGT  0x20
  106. //-------------------------------------------------------------------------
  107. // Surface Formats:
  108. // ---------------
  109. // These are the various types of surface formats that can be enumerated, 
  110. // there is no DDPIXELFORMAT structure in D3DX, the enums carry the meaning 
  111. // (like FOURCCs).
  112. //
  113. // All the surface classes are represented here.  
  114. //
  115. //-------------------------------------------------------------------------
  116. typedef enum _D3DX_SURFACEFORMAT
  117. {
  118.     D3DX_SF_UNKNOWN    = 0,
  119.     D3DX_SF_R8G8B8     = 1,
  120.     D3DX_SF_A8R8G8B8   = 2,
  121.     D3DX_SF_X8R8G8B8   = 3,
  122.     D3DX_SF_R5G6B5     = 4,
  123.     D3DX_SF_R5G5B5     = 5,
  124.     D3DX_SF_PALETTE4   = 6,
  125.     D3DX_SF_PALETTE8   = 7,
  126.     D3DX_SF_A1R5G5B5   = 8,
  127.     D3DX_SF_X4R4G4B4   = 9,
  128.     D3DX_SF_A4R4G4B4   =10,
  129.     D3DX_SF_L8         =11,      // 8 bit luminance-only
  130.     D3DX_SF_A8L8       =12,      // 16 bit alpha-luminance
  131.     D3DX_SF_U8V8       =13,      // 16 bit bump map format
  132.     D3DX_SF_U5V5L6     =14,      // 16 bit bump map format with luminance
  133.     D3DX_SF_U8V8L8     =15,      // 24 bit bump map format with luminance
  134.     D3DX_SF_UYVY       =16,      // UYVY format (PC98 compliance)
  135.     D3DX_SF_YUY2       =17,      // YUY2 format (PC98 compliance)
  136.     D3DX_SF_DXT1       =18,      // S3 texture compression technique 1
  137.     D3DX_SF_DXT3       =19,      // S3 texture compression technique 3
  138.     D3DX_SF_DXT5       =20,      // S3 texture compression technique 5
  139.     D3DX_SF_R3G3B2     =21,      // 8 bit RGB texture format
  140.     D3DX_SF_A8         =22,      // 8 bit alpha-only
  141.     D3DX_SF_TEXTUREMAX =23,      // Last texture format
  142.     D3DX_SF_Z16S0      =256,
  143.     D3DX_SF_Z32S0      =257,
  144.     D3DX_SF_Z15S1      =258,
  145.     D3DX_SF_Z24S8      =259,
  146.     D3DX_SF_S1Z15      =260,
  147.     D3DX_SF_S8Z24      =261,
  148.     D3DX_SF_DEPTHMAX   =262,     // Last depth format
  149.     D3DX_SF_FORCEMAX  = (DWORD)(-1)
  150. } D3DX_SURFACEFORMAT;
  151. //-------------------------------------------------------------------------
  152. // Filtering types for Texture APIs 
  153. //
  154. // -------------
  155. // These are the various filter types for generation of mip-maps 
  156. //
  157. // D3DX_FILTERTYPE
  158. // -----------------------------------------
  159. // D3DX_FT_POINT:   Point sampling only - no filtering
  160. // D3DX_FT_LINEAR:  Bi-linear filtering
  161. //
  162. //-------------------------------------------------------------------------
  163. typedef enum _D3DX_FILTERTYPE
  164. {
  165.     D3DX_FT_POINT    = 0x01,
  166.     D3DX_FT_LINEAR   = 0x02,
  167.     D3DX_FT_DEFAULT  = D3DX_DEFAULT
  168. } D3DX_FILTERTYPE;
  169. ///////////////////////////////////////////////////////////////////////////
  170. // Structures used below:
  171. ///////////////////////////////////////////////////////////////////////////
  172. //-------------------------------------------------------------------------
  173. // D3DX_VIDMODEDESC: Display mode description.
  174. // ----------------
  175. // width:       Screen Width 
  176. // height:      Screen Height
  177. // bpp:         Bits per pixel
  178. // refreshRate: Refresh rate
  179. //-------------------------------------------------------------------------
  180. typedef struct  _D3DX_VIDMODEDESC
  181. {
  182.     DWORD width;
  183.     DWORD height;
  184.     DWORD bpp;
  185.     DWORD refreshRate;
  186. } D3DX_VIDMODEDESC;
  187. //-------------------------------------------------------------------------
  188. // D3DX_DEVICEDESC: Description of a device that can do 3D
  189. // ---------------
  190. // deviceIndex:   Unique (DWORD) number for the device.
  191. // hwLevel:       Level of acceleration afforded.  This is one of the
  192. //                predefined Device Indices, and exists in this
  193. //                structure for informational purposes only.  More than
  194. //                one device on the system may have the same hwLevel.
  195. //                To refer to a particular device with the D3DX apis,
  196. //                use the value in the deviceIndex member instead.
  197. // ddGuid:        The ddraw GUID
  198. // d3dDeviceGuid: Direct3D Device GUID
  199. // ddDeviceID:    DDraw's GetDeviceIdentifier GUID.  This GUID is unique to
  200. //                a particular driver revision on a particular video card.
  201. // driverDesc:    String describing the driver
  202. // monitor:       Handle to the video monitor used by this device (multimon
  203. //                specific).  Devices that use different monitors on a 
  204. //                multimon system report different values in this field.
  205. //                Therefore, to test for a multimon system, an application 
  206. //                should look for more than one different monitor handle in 
  207. //                the list of D3DX devices.
  208. // onPrimary:     Indicates if this device is on the primary monitor
  209. //                (multimon specific).
  210. //-------------------------------------------------------------------------
  211. #define D3DX_DRIVERDESC_LENGTH    256
  212. typedef struct _D3DX_DEVICEDESC
  213. {
  214.     DWORD       deviceIndex;  
  215.     DWORD       hwLevel;
  216.     GUID        ddGuid;       
  217.     GUID        d3dDeviceGuid;   
  218.     GUID        ddDeviceID;      
  219.     char        driverDesc[D3DX_DRIVERDESC_LENGTH];          
  220.     HMONITOR    monitor;
  221.     BOOL        onPrimary;
  222. } D3DX_DEVICEDESC;
  223. ///////////////////////////////////////////////////////////////////////////
  224. // APIs:
  225. ///////////////////////////////////////////////////////////////////////////
  226. #ifdef __cplusplus
  227. extern "C" {
  228. #endif //__cplusplus
  229.     
  230. //-------------------------------------------------------------------------
  231. // D3DXInitialize: The very first call a D3DX app must make.
  232. //-------------------------------------------------------------------------
  233. HRESULT WINAPI
  234.     D3DXInitialize();
  235. //-------------------------------------------------------------------------
  236. // D3DXUninitialize: The very last call a D3DX app must make.
  237. //-------------------------------------------------------------------------
  238. HRESULT WINAPI
  239.     D3DXUninitialize();
  240. //-------------------------------------------------------------------------
  241. // D3DXGetDeviceCount: Returns the maximum number of D3DXdevices 
  242. // ------------------  available.
  243. //
  244. // D3DXGetDeviceDescription: Lists the 2D and 3D capabilities of the devices. 
  245. // ------------------------  Also, the various guids needed by ddraw and d3d.
  246. //
  247. // Params: 
  248. //     [in] DWORD deviceIndex: Which device? Starts at 0.
  249. //     [in] D3DX_DEVICEDESC* pd3dxDevice: Pointer to the D3DX_DEVICEDESC
  250. //                                        structure to be filled in.
  251. //-------------------------------------------------------------------------
  252. DWORD WINAPI 
  253.     D3DXGetDeviceCount();
  254. HRESULT WINAPI
  255.     D3DXGetDeviceDescription(DWORD            deviceIndex, 
  256.                              D3DX_DEVICEDESC* pd3dxDeviceDesc);
  257. //-------------------------------------------------------------------------
  258. // D3DXGetMaxNumVideoModes: Returns the maximum number of video-modes .
  259. // -----------------------  
  260. //
  261. // Params:
  262. //     [in]  DWORD deviceIndex: The device being referred to.
  263. //     [in]  DWORD flags: If D3DX_GVM_REFRESHRATE is set, then the refresh
  264. //                        rates are not ignored.
  265. //
  266. // D3DXGetVideoMode:  Describes a particular video mode for this device
  267. // ----------------
  268. //
  269. // Note:  These queries will simply give you a list of modes that the
  270. //        display adapter tells DirectX that it supports.
  271. //        There is no guarantee that D3DXCreateContext(Ex) will succeed 
  272. //        with all listed video modes.  This is a fundamental limitation 
  273. //        of the current DirectX architecture which D3DX cannot hide in 
  274. //        any clean way.
  275. //
  276. // Params:
  277. //     [in]  DWORD deviceIndex: The device being referred to.
  278. //     [in]  DWORD flags: If D3DX_GVM_REFRESHRATE is set, then the refresh
  279. //                        rates are returned
  280. //     [in]  DWORD which: Which VideoMode ? Starts at 0.
  281. //     [out] D3DX_VIDMODEDESC* pModeList: Pointer to the D3DX_VIDMODEDESC
  282. //                        structure that will be filled in.
  283. //-------------------------------------------------------------------------
  284. DWORD WINAPI 
  285.     D3DXGetMaxNumVideoModes(DWORD       deviceIndex, 
  286.                             DWORD       flags);
  287. HRESULT WINAPI
  288.     D3DXGetVideoMode(DWORD             deviceIndex, 
  289.                      DWORD             flags, 
  290.                      DWORD             modeIndex, 
  291.                      D3DX_VIDMODEDESC* pModeDesc);
  292. #define D3DX_GVM_REFRESHRATE      0x00000001
  293. //-------------------------------------------------------------------------
  294. // D3DXGetMaxSurfaceFormats: Returns the maximum number of surface
  295. // ------------------------  formats supported by the device at that
  296. //                           video mode.
  297. //
  298. // D3DXGetSurfaceFormat: Describes one of the supported surface formats.
  299. // --------------------- 
  300. //
  301. // Params:
  302. //     [in]  DWORD  deviceIndex: The device being referred to.
  303. //     [in]  D3DX_VIDMODEDESC* pDesc: The display mode at which the supported
  304. //                                    surface formats are requested. If it is
  305. //                                    NULL, the current display mode is 
  306. //                                    assumed.
  307. //     [in]  DWORD surfClassFlags: Required surface classes.  Only surface
  308. //                                 formats which support all specified 
  309. //                                 surface classes will be returned.  
  310. //                                 (Multiple surface classes may be specified
  311. //                                 using bitwise OR.) 
  312. //     [in]  DWORD which: Which surface formats to retrieve. Starts at 0.
  313. //     [out] D3DX_SURFACEFORMAT* pFormat: The surface format
  314. //-------------------------------------------------------------------------
  315. DWORD WINAPI 
  316.     D3DXGetMaxSurfaceFormats(DWORD             deviceIndex, 
  317.                              D3DX_VIDMODEDESC* pDesc,
  318.                              DWORD             surfClassFlags);
  319. HRESULT WINAPI
  320.     D3DXGetSurfaceFormat(DWORD               deviceIndex,
  321.                          D3DX_VIDMODEDESC*   pDesc,
  322.                          DWORD               surfClassFlags,                   
  323.                          DWORD               surfaceIndex, 
  324.                          D3DX_SURFACEFORMAT* pFormat);
  325. //-------------------------------------------------------------------------
  326. // D3DXGetCurrentVideoMode: Retrieves the current video mode for this device.
  327. // -------------------
  328. //
  329. // Params:
  330. //     [in]  DWORD deviceIndex: The device being referred to.
  331. //     [out] D3DX_VIDMODEDESC* pVidMode: The current video mode
  332. //-------------------------------------------------------------------------
  333. HRESULT WINAPI
  334.     D3DXGetCurrentVideoMode(DWORD             deviceIndex, 
  335.                             D3DX_VIDMODEDESC* pVidMode);
  336. //-------------------------------------------------------------------------
  337. // D3DXGetDeviceCaps: Lists all the capabilities of a device at a display 
  338. //                    mode.
  339. // ----------------
  340. //
  341. // Params:
  342. //     [in]  DWORD  deviceIndex: The device being referred to.
  343. //     [in]  D3DX_VIDMODEDESC* pDesc:  If this is NULL, we will return the 
  344. //                                     caps at the current display mode of 
  345. //                                     the device.
  346. //     [out] D3DDEVICEDESC7* pD3DDeviceDesc7: D3D Caps ( NULL to ignore 
  347. //                                              parameter)
  348. //     [out] DDCAPS7* pDDHalCaps: DDraw HAL Caps (NULL to ignore parameter)
  349. //     [out] DDCAPS7* pDDHelCaps: DDraw HEL Caps (NULL to ignore  paramter)
  350. //-------------------------------------------------------------------------
  351. HRESULT WINAPI
  352.     D3DXGetDeviceCaps(DWORD             deviceIndex, 
  353.                       D3DX_VIDMODEDESC* pVidMode,
  354.                       D3DDEVICEDESC7*   pD3DCaps,
  355.                       DDCAPS*           pDDHALCaps,
  356.                       DDCAPS*           pDDHELCaps);
  357. //-------------------------------------------------------------------------
  358. // D3DXCreateContext: Initializes the chosen device. It is the simplest init
  359. // -----------------  function available.  Parameters are treated the same
  360. //                    as the matching subset of parameters in 
  361. //                    D3DXCreateContextEx, documented below.
  362. //                    Remaining D3DXCreateContextEx parameters that are
  363. //                    not present in D3DXCreateContext are treated as
  364. //                    D3DX_DEFAULT.  Note that multimon is not supported
  365. //                    with D3DXCreateContext.
  366. //
  367. // D3DXCreateContextEx: A more advanced function to initialize the device.
  368. // -------------------  Also accepts D3DX_DEFAULT for most of the parameters
  369. //                      and then will do what D3DXCreateContext did.
  370. //
  371. // Note: Do not expect D3DXCreateContext(Ex) to be fail-safe (as with any
  372. //       API).  Supported device capablilites should be used as a guide
  373. //       for choosing parameter values.  Keep in mind that there will 
  374. //       inevitably be some combinations of parameters that just do not work.
  375. // 
  376. // Params:
  377. //     [in]  DWORD deviceIndex: The device being referred to.   
  378. //     [in]  DWORD flags: The valid flags are D3DX_CONTEXT_FULLSCREEN, and
  379. //                        D3DX_CONTEXT_OFFSCREEN.  These flags cannot both
  380. //                        be specified.  If no flags are specified, the
  381. //                        context defaults to windowed mode.
  382. //
  383. //     [in]  HWND  hwnd: Device window.  See note.
  384. //     [in]  HWND  hwndFocus: Window which receives keyboard messages from 
  385. //                            the device window.  The device window should be 
  386. //                            a child of focus window.  Useful for multimon 
  387. //                            applications.  See note.
  388. //     NOTE: 
  389. //         windowed:   
  390. //             hwnd must be a valid window.  hwndFocus must be NULL or 
  391. //             D3DX_DEFAULT.
  392. //
  393. //         fullscreen: 
  394. //             Either hwnd or hwndFocus must be a valid window.  (Both cannot
  395. //             be NULL or D3DX_DEFAULT).  If hwnd is NULL or D3DX_DEFAULT, 
  396. //             a default device window will be created as a child of hwndFocus.
  397. //
  398. //         offscreen:
  399. //             Both hwnd and hwndFocus must be NULL or D3DX_DEFAULT
  400. //
  401. //     [in]  DWORD numColorBits: If D3DX_DEFAULT is passed for windowed mode,
  402. //                               the current desktop's color depth is chosen.
  403. //                               For full screen mode, D3DX_DEFAULT causes 16
  404. //                               bit color to be used.                               
  405. //     [in]  DWORD numAlphaBits: If D3DX_DEFAULT is passed, 0 is chosen.
  406. //     [in]  DWORD numDepthbits: If D3DX_DEFAULT is passed,
  407. //                               the highest available number of depth bits
  408. //                               is chosen.  See note.
  409. //     [in]  DWORD numStencilBits: If D3DX_DEFAULT is passed, the highest
  410. //                                 available number of stencil bits is chosen.
  411. //                                 See note.
  412. //
  413. //     NOTE: If both numDepthBits and numStencilBits are D3DX_DEFAULT,
  414. //           D3DX first picks the highest available number of stencil
  415. //           bits.  Then, for the chosen number of stencil bits, 
  416. //           the highest available number of depth bits is chosen.
  417. //           If only one of numStencilBits or numDepthBits 
  418. //           is D3DX_DEFAULT, the highest number of bits available 
  419. //           for this parameter is chosen out of only the formats
  420. //           that support the number of bits requested for the
  421. //           fixed parameter.
  422. //
  423. //     [in]  DWORD numBackBuffers: Number of back buffers, or D3DX_DEFAULT.
  424. //                                 See note.
  425. //
  426. //     NOTE:
  427. //        windowed: D3DX_DEFAULT means 1.  You must specify one back buffer.
  428. //
  429. //        fullscreen: D3DX_DEFAULT means 1.  Any number of back buffers can be
  430. //            specified.
  431. //
  432. //        offscreen: D3DX_DEFAULT means 0.  You cannot specify additional back 
  433. //            buffers.
  434. //
  435. //     [in]  DWORD width: Width, in pixels, or D3DX_DEFAULT.  See note.
  436. //     [in]  DWORD height: Height, in pixels, or D3DX_DEFAULT.  See note.
  437. //
  438. //     NOTE: 
  439. //        windowed: If either width or height is D3DX_DEFAULT, both values
  440. //            default to the dimensions of the client area of hwnd.
  441. //
  442. //        fullscreen: If either width or height is D3DX_DEFAULT, width 
  443. //            defaults to 640, and height defaults to 480.
  444. //
  445. //        offscreen: An error is returned if either width or height is 
  446. //            D3DX_DEFAULT.
  447. //
  448. //     [in]  DWORD refreshRate: D3DX_DEFAULT means we let ddraw choose for 
  449. //                              us.  Ignored for windowed and offscreen modes.
  450. //     [out] LPD3DXCONTEXT* ppCtx: This is the Context object that is used for
  451. //                                 rendering on that device.
  452. //
  453. //-------------------------------------------------------------------------
  454. HRESULT WINAPI
  455.     D3DXCreateContext(DWORD          deviceIndex,  
  456.                       DWORD          flags,
  457.                       HWND           hwnd,
  458.                       DWORD          width, 
  459.                       DWORD          height,
  460.                       LPD3DXCONTEXT* ppCtx);
  461. HRESULT WINAPI
  462.     D3DXCreateContextEx(DWORD          deviceIndex,  
  463.                         DWORD          flags,
  464.                         HWND           hwnd,
  465.                         HWND           hwndFocus, 
  466.                         DWORD          numColorBits,
  467.                         DWORD          numAlphaBits,
  468.                         DWORD          numDepthbits,
  469.                         DWORD          numStencilBits,
  470.                         DWORD          numBackBuffers,
  471.                         DWORD          width, 
  472.                         DWORD          height,
  473.                         DWORD          refreshRate,
  474.                         LPD3DXCONTEXT* ppCtx);
  475. // The D3DXCreateContext(Ex) flags are:
  476. #define D3DX_CONTEXT_FULLSCREEN  0x00000001
  477. #define D3DX_CONTEXT_OFFSCREEN   0x00000002
  478. //-------------------------------------------------------------------------
  479. // D3DXGetErrorString: Prints out the error string given an hresult. Prints
  480. // ------------------  Win32 as well as DX6 error messages besides the D3DX
  481. //                     messages.
  482. //
  483. // Params:
  484. //     [in]  HRESULT hr: The error code to be deciphered.
  485. //     [in]  DWORD strLength: Length of the string passed in.
  486. //     [out] LPSTR pStr:  The string output. This string of appropriate
  487. //                       size needs to be passed in.
  488. //-------------------------------------------------------------------------
  489. void WINAPI
  490.     D3DXGetErrorString(HRESULT hr, 
  491.                        DWORD   strLength, 
  492.                        LPSTR   pStr);
  493. //-------------------------------------------------------------------------
  494. // D3DXMakeDDPixelFormat: Fills in a DDPIXELFORMAT structure based on the 
  495. // ---------------------   D3DX surface format requested.
  496. //
  497. // Params:
  498. //     [in]  D3DX_SURFACEFORMAT d3dxFormat: Surface format.
  499. //     [out] DDPIXELFORMAT*     pddpf:      Pixel format matching the given
  500. //                                          surface format.
  501. //-------------------------------------------------------------------------
  502. HRESULT WINAPI
  503.     D3DXMakeDDPixelFormat(D3DX_SURFACEFORMAT d3dxFormat, 
  504.                           DDPIXELFORMAT*     pddpf);
  505. //-------------------------------------------------------------------------
  506. // D3DXMakeSurfaceFormat: Determines the surface format corresponding to 
  507. // ---------------------  a given DDPIXELFORMAT. 
  508. //
  509. // Params:
  510. //     [in]  DDPIXELFORMAT* pddpf: Pixel format.
  511. // Return Value:
  512. //     D3DX_SURFACEFORMAT: Surface format matching the given pixel format.
  513. //                         D3DX_SF_UNKNOWN if the format is not supported
  514. //-------------------------------------------------------------------------
  515. D3DX_SURFACEFORMAT WINAPI
  516.     D3DXMakeSurfaceFormat(DDPIXELFORMAT* pddpf);
  517. #ifdef __cplusplus
  518. }
  519. #endif //__cplusplus    
  520. ///////////////////////////////////////////////////////////////////////////
  521. // Interfaces:
  522. ///////////////////////////////////////////////////////////////////////////
  523. //-------------------------------------------------------------------------
  524. // ID3DXContext interface: 
  525. //
  526. // This encapsulates all the stuff that the app might 
  527. // want to do at initialization time and any global control over d3d and 
  528. // ddraw.
  529. //-------------------------------------------------------------------------
  530. DECLARE_INTERFACE_(ID3DXContext, IUnknown)
  531. {
  532.     //
  533.     // IUnknown methods 
  534.     //
  535.     STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID* ppvObj) PURE;
  536.     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  537.     STDMETHOD_(ULONG,Release)(THIS) PURE;
  538.     // Get the DDraw and Direct3D objects to call DirectDraw or
  539.     // Direct3D Immediate Mode functions. 
  540.     // If the objects don't exist (because they have not
  541.     // been created for some reason) NULL is returned.
  542.     // All the objects returned in the following Get* functions
  543.     // are addref'ed. It is the application's responsibility to
  544.     // release them when no longer needed.
  545.     STDMETHOD_(LPDIRECTDRAW7,GetDD)(THIS) PURE;
  546.     STDMETHOD_(LPDIRECT3D7,GetD3D)(THIS) PURE;
  547.     STDMETHOD_(LPDIRECT3DDEVICE7,GetD3DDevice)(THIS) PURE;
  548.     // Get the various buffers that get created at the init time
  549.     // These are addref'ed as well. It is the application's responsibility
  550.     // to release them before the app quits or when it needs a resize.
  551.     STDMETHOD_(LPDIRECTDRAWSURFACE7,GetPrimary)(THIS) PURE;
  552.     STDMETHOD_(LPDIRECTDRAWSURFACE7,GetZBuffer)(THIS) PURE;
  553.     STDMETHOD_(LPDIRECTDRAWSURFACE7,GetBackBuffer)(THIS_ DWORD which) PURE;
  554.     // Get the associated window handles 
  555.     STDMETHOD_(HWND,GetWindow)(THIS) PURE;
  556.     STDMETHOD_(HWND,GetFocusWindow)(THIS) PURE;
  557.     // 
  558.     // Various Get methods, in case the user had specified default
  559.     // parameters
  560.     //
  561.     STDMETHOD(GetDeviceIndex)(THIS_ 
  562.                               LPDWORD pDeviceIndex, 
  563.                               LPDWORD pHwLevel) PURE;
  564.     STDMETHOD_(DWORD, GetNumBackBuffers)(THIS) PURE;
  565.     STDMETHOD(GetNumBits)(THIS_
  566.                           LPDWORD pColorBits, 
  567.                           LPDWORD pDepthBits,
  568.                           LPDWORD pAlphaBits, 
  569.                           LPDWORD pStencilBits) PURE;
  570.     STDMETHOD(GetBufferSize)(THIS_ 
  571.                              LPDWORD pWidth, 
  572.                              LPDWORD pHeight) PURE;
  573.     // Get the flags that were used to create this context
  574.     STDMETHOD_(DWORD, GetCreationFlags)(THIS) PURE;
  575.     STDMETHOD_(DWORD, GetRefreshRate)(THIS) PURE;
  576.     
  577.     // Restoring surfaces in case stuff is lost
  578.     STDMETHOD(RestoreSurfaces)(THIS) PURE;
  579.     
  580.     // Resize all the buffers to the new width and height
  581.     STDMETHOD(Resize)(THIS_ DWORD width, DWORD height) PURE;
  582.     // Update the frame using a flip or a blit,
  583.     // If the D3DX_UPDATE_NOVSYNC flag is set, blit is used if the 
  584.     // driver cannot flip without waiting for vsync in full-screen mode.
  585.     STDMETHOD(UpdateFrame)(THIS_ DWORD flags) PURE;
  586.     // Render a string at the specified coordinates, with the specified 
  587.     // colour. This is only provided as a convenience for 
  588.     // debugging/information during development.
  589.     // topLeftX and topLeftY represent the location of the top left corner
  590.     // of the string, on the render target.  
  591.     // The coordinate and color parameters each have a range of 0.0-1.0
  592.     STDMETHOD(DrawDebugText)(THIS_
  593.                              float topLeftX, 
  594.                              float topLeftY,
  595.                              D3DCOLOR color,
  596.                              LPSTR pString) PURE;
  597.     // Clears to the current viewport
  598.     // The following are the valid flags:
  599.     // D3DCLEAR_TARGET  (to clear the render target )
  600.     // D3DCLEAR_ZBUFFER (to clear the depth-buffer )
  601.     // D3DCLEAR_STENCIL (to clear the stencil-buffer )
  602.     STDMETHOD(Clear)(THIS_ DWORD ClearFlags) PURE;
  603.     STDMETHOD(SetClearColor)(THIS_ D3DCOLOR color ) PURE;
  604.     STDMETHOD(SetClearDepth)(THIS_ float z) PURE;
  605.     STDMETHOD(SetClearStencil)(THIS_ DWORD stencil) PURE;
  606. };
  607. //-------------------------------------------------------------------------
  608. // Flags for Update member function:
  609. //
  610. // Flag to indicate that blit should be used instead of a flip
  611. // for full-screen rendering.
  612. #define D3DX_UPDATE_NOVSYNC (1<<0)
  613. ///////////////////////////////////////////////////////////////////////////
  614. // Texturing APIs:
  615. ///////////////////////////////////////////////////////////////////////////
  616. #ifdef __cplusplus
  617. extern "C" {
  618. #endif //__cplusplus
  619.     
  620. //-------------------------------------------------------------------------
  621. // D3DXCheckTextureRequirements: Return information about texture creation 
  622. // ----------------------------  (used by CreateTexture, CreateTextureFromFile
  623. //                                and CreateCubeMapTexture)
  624. //
  625. // Parameters:
  626. //
  627. //  pd3dDevice
  628. //      The D3D device with which the texture is going to be used.
  629. //  pFlags   
  630. //      allows specification of D3DX_TEXTURE_NOMIPMAP
  631. //      D3DX_TEXTURE_NOMIPMAP may be returned in the case where mipmap creation 
  632. //      is not supported.
  633. //  pWidth
  634. //      width in pixels or NULL 
  635. //      returns corrected width
  636. //  pHeight       
  637. //      height in pixels or NULL
  638. //      returns corrected height
  639. //  pPixelFormat
  640. //      surface format 
  641. //      returns best match to input format
  642. //
  643. //  Notes: 1. Unless the flags is set to specifically prevent creating 
  644. //            mipmaps, mipmaps are generated all the way till 1x1 surface.
  645. //         2. width, height and pixelformat are altered based on available 
  646. //            hardware. For example:
  647. //              a. Texture dimensions may be required to be powers of 2
  648. //              b. We may require width == height for some devices
  649. //              c. If PixelFormat is unavailable, a best fit is made
  650. //-------------------------------------------------------------------------
  651. HRESULT WINAPI 
  652.     D3DXCheckTextureRequirements( LPDIRECT3DDEVICE7     pd3dDevice,
  653.                                   LPDWORD               pFlags, 
  654.                                   LPDWORD               pWidth,  
  655.                                   LPDWORD               pHeight,  
  656.                                   D3DX_SURFACEFORMAT*   pPixelFormat);
  657. //-------------------------------------------------------------------------
  658. // D3DXCreateTexture: Create an empty texture object
  659. // -----------------
  660. //
  661. // Parameters:
  662. //
  663. //  pd3dDevice
  664. //      The D3D device with which the texture is going to be used.
  665. //  pFlags   
  666. //      allows specification of D3DX_TEXTURE_NOMIPMAP
  667. //      D3DX_TEXTURE_NOMIPMAP may be returned in the case where mipmap creation 
  668. //      is not supported. Additionally, D3DX_TEXTURE_STAGE<n> can be specified
  669. //      to indicate which texture stage the texture is for e.g. 
  670. //      D3D_TEXTURE_STAGE1 indicates that the texture is for use with texture 
  671. //      stage one. Stage Zero is the default if no TEXTURE_STAGE flags are
  672. //      set.
  673. //  pWidth
  674. //      width in pixels; 0 or NULL is unacceptable
  675. //      returns corrected width
  676. //  pHeight       
  677. //      height in pixels; 0 or NULL is unacceptable
  678. //      returns corrected height
  679. //  pPixelFormat
  680. //      surface format. D3DX_DEFAULT is unacceptable.
  681. //      returns actual format that was used
  682. //  pDDPal
  683. //      DDraw palette that is set (if present) on paletted surfaces.
  684. //      It is ignored even if it is set, for non-paletted surfaces.
  685. //  ppDDSurf
  686. //      The ddraw surface that will be created
  687. //  pNumMipMaps
  688. //      the number of mipmaps actually generated
  689. //
  690. //  Notes: See notes for D3DXCheckTextureRequirements. 
  691. //-------------------------------------------------------------------------
  692. HRESULT WINAPI 
  693.     D3DXCreateTexture( LPDIRECT3DDEVICE7     pd3dDevice,
  694.                        LPDWORD               pFlags, 
  695.                        LPDWORD               pWidth,  
  696.                        LPDWORD               pHeight,  
  697.                        D3DX_SURFACEFORMAT*   pPixelFormat,
  698.                        LPDIRECTDRAWPALETTE   pDDPal,
  699.                        LPDIRECTDRAWSURFACE7* ppDDSurf,
  700.                        LPDWORD               pNumMipMaps);
  701. //-------------------------------------------------------------------------
  702. // D3DXCreateCubeMapTexture: Create blank cube-map texture
  703. // ------------------------
  704. //
  705. // Parameters:
  706. //
  707. //  pd3dDevice
  708. //      The D3D device with which the texture is going to be used.
  709. //  pFlags   
  710. //      allows specification of D3DX_TEXTURE_NOMIPMAP
  711. //      D3DX_TEXTURE_NOMIPMAP may be returned in the case where mipmap creation 
  712. //      is not supported. Additionally, D3DX_TEXTURE_STAGE<n> can be specified
  713. //      to indicate which texture stage the texture is for e.g. 
  714. //      D3D_TEXTURE_STAGE1 indicates that the texture is for use with texture 
  715. //      stage one. Stage Zero is the default if no TEXTURE_STAGE flags are
  716. //      set.
  717. //  cubefaces
  718. //      allows specification of which faces of the cube-map to generate.
  719. //      D3DX_DEFAULT, 0, and DDSCAPS2_CUBEMAP_ALLFACES all mean
  720. //      "create all 6 faces of the cubemap". Any combination of
  721. //      DDSCAPS2_CUBEMAP_POSITIVEX, DDSCAPS2_CUBEMAP_NEGATIVEX,
  722. //      DDSCAPS2_CUBEMAP_POSITIVEY, DDSCAPS2_CUBEMAP_NEGATIVEY,
  723. //      DDSCAPS2_CUBEMAP_POSITIVEZ, or DDSCAPS2_CUBEMAP_NEGATIVEZ, is
  724. //      valid.
  725. //  colorEmptyFaces
  726. //      allows specification of the color to use for the faces that were not
  727. //      specified in the cubefaces parameter.
  728. //  pWidth
  729. //      width in pixels; 0 or NULL is unacceptable
  730. //      returns corrected width
  731. //  pHeight       
  732. //      height in pixels; 0 or NULL is unacceptable
  733. //      returns corrected height
  734. //  pPixelFormat
  735. //      surface format. D3DX_DEFAULT is unacceptable.
  736. //      returns actual format that was used
  737. //  pDDPal
  738. //      DDraw palette that is set (if present) on paletted surfaces.
  739. //      It is ignored even if it is set, for non-paletted surfaces.
  740. //  ppDDSurf
  741. //      the ddraw surface that will be created
  742. //  pNumMipMaps
  743. //      the number of mipmaps generated for a particular face of the 
  744. //      cubemap.
  745. //
  746. //  Notes: See notes for D3DXCheckTextureRequirements. 
  747. //-------------------------------------------------------------------------
  748. HRESULT WINAPI 
  749.     D3DXCreateCubeMapTexture( LPDIRECT3DDEVICE7     pd3dDevice,
  750.                               LPDWORD               pFlags, 
  751.                               DWORD                 cubefaces,
  752.                               D3DCOLOR              colorEmptyFaces,
  753.                               LPDWORD               pWidth,  
  754.                               LPDWORD               pHeight,  
  755.                               D3DX_SURFACEFORMAT    *pPixelFormat,
  756.                               LPDIRECTDRAWPALETTE   pDDPal,
  757.                               LPDIRECTDRAWSURFACE7* ppDDSurf,
  758.                               LPDWORD               pNumMipMaps);
  759. //-------------------------------------------------------------------------
  760. // D3DXCreateTextureFromFile: Create a texture object from a file or from the 
  761. // -------------------------  resource. Only BMP and DIB are supported from the
  762. //                            resource portion of the executable.
  763. //
  764. // Parameters:
  765. //
  766. //  pd3dDevice
  767. //      The D3D device with which the texture is going to be used.
  768. //  pFlags   
  769. //      allows specification of D3DX_TEXTURE_NOMIPMAP
  770. //      D3DX_TEXTURE_NOMIPMAP may be returned in the case where mipmap creation 
  771. //      is not supported. Additionally, D3DX_TEXTURE_STAGE<n> can be specified
  772. //      to indicate which texture stage the texture is for e.g. 
  773. //      D3D_TEXTURE_STAGE1 indicates that the texture is for use with texture 
  774. //      stage one. Stage Zero is the default if no TEXTURE_STAGE flags are
  775. //      set.
  776. //  pWidth  
  777. //      Width in pixels. If 0 or D3DX_DEFAULT, the width will be taken 
  778. //      from the file
  779. //      returns corrected width
  780. //  pHeight   
  781. //      Height in pixels. If 0 or D3DX_DEFAULT, the height will be taken 
  782. //      from the file
  783. //      returns corrected height
  784. //  pPixelFormat
  785. //      If D3DX_SF_UNKNOWN is passed in, pixel format closest to the bitmap 
  786. //      will be chosen
  787. //      returns actual format that was used
  788. //  pDDPal
  789. //      DDraw palette that is set (if present) on paletted surfaces.
  790. //      It is ignored even if it is set, for non-paletted surfaces.
  791. //  ppDDSurf
  792. //      The ddraw surface that will be created.
  793. //  pNumMipMaps
  794. //      The number of mipmaps generated.
  795. //  pSrcName
  796. //      File name. BMP, DIB, DDS, are supported. 
  797. //      
  798. //      TGA is supported for the following cases: 16, 24, 32bpp direct color and 8bpp palettized. 
  799. //      Also, 8, 16bpp grayscale is supported. RLE versions of the above 
  800. //      TGA formats are also supported. ColorKey and Premultiplied Alpha 
  801. //      are not currently supported for TGA files.
  802. //      returns created format
  803. //
  804. //  Notes: See notes for D3DXCheckTextureRequirements. 
  805. //-------------------------------------------------------------------------
  806. HRESULT WINAPI 
  807.     D3DXCreateTextureFromFile( LPDIRECT3DDEVICE7     pd3dDevice,
  808.                                LPDWORD               pFlags, 
  809.                                LPDWORD               pWidth,  
  810.                                LPDWORD               pHeight,  
  811.                                D3DX_SURFACEFORMAT*   pPixelFormat,
  812.                                LPDIRECTDRAWPALETTE   pDDPal,
  813.                                LPDIRECTDRAWSURFACE7* ppDDSurf,
  814.                                LPDWORD               pNumMipMaps,
  815.                                LPSTR                 pSrcName,
  816.                                D3DX_FILTERTYPE       filterType);
  817. //-------------------------------------------------------------------------
  818. // D3DXLoadTextureFromFile: Load from a file into a mipmap level. Doing the 
  819. // -----------------------  necessary color conversion and rescaling. File
  820. //                          format support is identical to 
  821. //                          D3DXCreateTextureFromFile's.
  822. //
  823. //  pd3dDevice
  824. //      The D3D device with which the texture is going to be used.
  825. // pTexture
  826. //      a pointer to a DD7Surface which was created with either 
  827. //      CreateTextureFromFile or CreateTexture.
  828. // mipMapLevel
  829. //      indicates mipmap level
  830. //      Note: 
  831. //          1. Error if mipmap level doesn't exist
  832. //          2. If D3DX_DEFAULT and equal number of mipmap levels exist
  833. //             then all the source mip-levels are loaded
  834. //          3. If the source has mipmaps and the dest doesn't, use the top one
  835. //          4. If the dest has miplevels and source doesn't, we expand
  836. //          5. If there are unequal numbers of miplevels, we expand
  837. // pSrcName
  838. //      File name. BMP, DIB, DDS, are supported. 
  839. //      For details on TGA support, refer to the comments for 
  840. //      D3DXCreateTextureFromFile
  841. // pSrcRect
  842. //      the source rectangle or null (whole surface)
  843. // pDestRect
  844. //      the destination rectangle or null (whole surface)
  845. // filterType 
  846. //      filter used for mipmap generation
  847. //-------------------------------------------------------------------------
  848. HRESULT WINAPI 
  849.     D3DXLoadTextureFromFile( LPDIRECT3DDEVICE7    pd3dDevice,
  850.                              LPDIRECTDRAWSURFACE7 pTexture,
  851.                              DWORD                mipMapLevel,
  852.                              LPSTR                pSrcName, 
  853.                              RECT*                pSrcRect, 
  854.                              RECT*                pDestRect,
  855.                              D3DX_FILTERTYPE      filterType);
  856. //-------------------------------------------------------------------------
  857. // D3DXLoadTextureFromSurface: Load from a DDraw Surface into a mipmap level. 
  858. // --------------------------  Doing the necessary color conversion.
  859. //
  860. //  pd3dDevice
  861. //      The D3D device with which the texture is going to be used.
  862. // pTexture
  863. //      a pointer to a DD7Surface which was created with either 
  864. //      CreateTextureFromFile or CreateTexture.
  865. // mipMapLevel
  866. //      indicates mipmap level
  867. //      Note: 
  868. //          1. Error if mipmap level doesn't exist
  869. //          2. If D3DX_DEFAULT and equal number of mipmap levels exist
  870. //             then all the source mip-levels are loaded
  871. //          3. If the source has mipmaps and the dest doesn't, use the top one
  872. //          4. If the dest has miplevels and source doesn't, we expand
  873. //          5. If there are unequal numbers of miplevels, we expand
  874. // pSurfaceSrc
  875. //      the source surface
  876. // pSrcRect
  877. //      the source rectangle or null (whole surface)
  878. // pDestRect
  879. //      the destination rectangle or null (whole surface)
  880. // filterType 
  881. //      filter used for mipmap generation
  882. //-------------------------------------------------------------------------
  883. HRESULT WINAPI 
  884.     D3DXLoadTextureFromSurface( LPDIRECT3DDEVICE7    pd3dDevice,
  885.                                 LPDIRECTDRAWSURFACE7 pTexture,
  886.                                 DWORD                mipMapLevel,
  887.                                 LPDIRECTDRAWSURFACE7 pSurfaceSrc, 
  888.                                 RECT*                pSrcRect, 
  889.                                 RECT*                pDestRect,
  890.                                 D3DX_FILTERTYPE      filterType);
  891. //-------------------------------------------------------------------------
  892. // D3DXLoadTextureFromMemory: Load a mip level from memory. Doing the necessary
  893. // -------------------------  color conversion.
  894. //
  895. //  pd3dDevice
  896. //      The D3D device with which the texture is going to be used.
  897. // pTexture
  898. //      a pointer to a DD7Surface which was created with either 
  899. //      CreateTextureFromFile or CreateTexture.
  900. // mipMapLevel
  901. //      indicates mipmap level
  902. //      Note: 
  903. //          1. Error if mipmap level doesn't exist
  904. //          2. If D3DX_DEFAULT and equal number of mipmap levels exist
  905. //             then all the source mip-levels are loaded
  906. //          3. If the source has mipmaps and the dest doesn't, use the top one
  907. //          4. If the dest has miplevels and source doesn't, we expand
  908. //          5. If there are unequal numbers of miplevels, we expand
  909. // pMemory
  910. //      pointer to source memory from which the texture will be loaded
  911. // pDDPal
  912. //      DirectDraw Palette, that the app passes in optionally if the memory is 
  913. //      supposed to be paletteized.
  914. // srcPixelFormat
  915. //      PixelFormat of the source.
  916. // srcPitch
  917. //      The pitch of the memory or D3DX_DEFAULT (based on srcPixelFormat)
  918. // pDestRect
  919. //      The destination rectangle or null (whole surface)
  920. // filterType 
  921. //      filter used for mipmap generation
  922. // 
  923. // Assumptions: The source (memory) is loaded in full
  924. //-------------------------------------------------------------------------
  925. HRESULT WINAPI 
  926.     D3DXLoadTextureFromMemory( LPDIRECT3DDEVICE7    pd3dDevice, 
  927.                                LPDIRECTDRAWSURFACE7 pTexture,
  928.                                DWORD                mipMapLevel, 
  929.                                LPVOID               pMemory,
  930.                                LPDIRECTDRAWPALETTE  pDDPal,
  931.                                D3DX_SURFACEFORMAT   srcPixelFormat,
  932.                                DWORD                srcPitch,
  933.                                RECT*                pDestRect,
  934.                                D3DX_FILTERTYPE      filterType);
  935. #ifdef __cplusplus
  936. }
  937. #endif //__cplusplus    
  938. //-------------------------------------------------------------------------
  939. // Flags for texture create functions; applies to 
  940. // D3DXCreateTexture, D3DXCreateCubeMapTexture and D3DXCreateTextureFromFile.
  941. //
  942. // Flag to indicate that mipmap generation is not desired.
  943. #define D3DX_TEXTURE_NOMIPMAP  (1 << 8)
  944. // Flags to indicate which texture stage the texture is
  945. // intended for use with. Specifying the stage is necessary at
  946. // texture creation time for HW devices that expose the
  947. // D3DDEVCAPS_SEPARATETEXTUREMEMORIES bit in their D3DDEVICEDESC
  948. // structure.
  949. #define D3DX_TEXTURE_STAGE0    (0)
  950. #define D3DX_TEXTURE_STAGE1    (1)
  951. #define D3DX_TEXTURE_STAGE2    (2)
  952. #define D3DX_TEXTURE_STAGE3    (3)
  953. #define D3DX_TEXTURE_STAGE4    (4)
  954. #define D3DX_TEXTURE_STAGE5    (5)
  955. #define D3DX_TEXTURE_STAGE6    (6)
  956. #define D3DX_TEXTURE_STAGE7    (7)
  957. // Mask to extract the texture stage value out of the flags to
  958. // the texture create functions.
  959. #define D3DX_TEXTURE_STAGE_MASK (0x7)
  960. #endif //__D3DXCORE_H__