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

  1. /*==========================================================================;
  2.  *
  3.  *  Copyright (C) 1995-1996 Microsoft Corporation.  All Rights Reserved.
  4.  *
  5.  *  File:       d3d.h
  6.  *  Content:    Direct3D include file
  7.  *
  8.  ***************************************************************************/
  9.  
  10. #ifndef _D3D_H_
  11. #define _D3D_H_
  12.  
  13. #include <stdlib.h>
  14.  
  15. #ifdef _WIN32
  16. #define COM_NO_WINDOWS_H
  17. #include <objbase.h>
  18. #else
  19. #include "d3dcom.h"
  20. #endif
  21.  
  22. #ifdef _WIN32
  23. #define D3DAPI WINAPI
  24. #else
  25. #define D3DAPI
  26. #endif
  27.  
  28. /*
  29.  * Interface IID's
  30.  */
  31. #if defined( _WIN32 ) && !defined( _NO_COM)
  32. DEFINE_GUID( IID_IDirect3D,             0x3BBA0080,0x2421,0x11CF,0xA3,0x1A,0x00,0xAA,0x00,0xB9,0x33,0x56 );
  33. DEFINE_GUID( IID_IDirect3DTexture,      0x2CDCD9E0,0x25A0,0x11CF,0xA3,0x1A,0x00,0xAA,0x00,0xB9,0x33,0x56 );
  34. DEFINE_GUID( IID_IDirect3DLight,        0x4417C142,0x33AD,0x11CF,0x81,0x6F,0x00,0x00,0xC0,0x20,0x15,0x6E );
  35. DEFINE_GUID( IID_IDirect3DMaterial,     0x4417C144,0x33AD,0x11CF,0x81,0x6F,0x00,0x00,0xC0,0x20,0x15,0x6E );
  36. DEFINE_GUID( IID_IDirect3DExecuteBuffer,0x4417C145,0x33AD,0x11CF,0x81,0x6F,0x00,0x00,0xC0,0x20,0x15,0x6E );
  37. DEFINE_GUID( IID_IDirect3DViewport,     0x4417C146,0x33AD,0x11CF,0x81,0x6F,0x00,0x00,0xC0,0x20,0x15,0x6E );
  38. #endif
  39.  
  40. #ifdef __cplusplus
  41. extern "C" {
  42. #endif
  43.  
  44. /*
  45.  * Data structures
  46.  */
  47. #ifdef __cplusplus
  48.  
  49. /* 'struct' not 'class' per the way DECLARE_INTERFACE_ is defined */
  50. struct IDirect3D;
  51. struct IDirect3DDevice;
  52. struct IDirect3DExecuteBuffer;
  53. struct IDirect3DLight;
  54. struct IDirect3DMaterial;
  55. struct IDirect3DTexture;
  56. struct IDirect3DViewport;
  57. typedef struct IDirect3D                *LPDIRECT3D;
  58. typedef struct IDirect3DDevice          *LPDIRECT3DDEVICE;
  59. typedef struct IDirect3DExecuteBuffer   *LPDIRECT3DEXECUTEBUFFER;
  60. typedef struct IDirect3DLight           *LPDIRECT3DLIGHT;
  61. typedef struct IDirect3DMaterial        *LPDIRECT3DMATERIAL;
  62. typedef struct IDirect3DTexture         *LPDIRECT3DTEXTURE;
  63. typedef struct IDirect3DViewport        *LPDIRECT3DVIEWPORT;
  64.  
  65. #else
  66.  
  67. typedef struct IDirect3D                *LPDIRECT3D;
  68. typedef struct IDirect3DDevice          *LPDIRECT3DDEVICE;
  69. typedef struct IDirect3DExecuteBuffer   *LPDIRECT3DEXECUTEBUFFER;
  70. typedef struct IDirect3DLight           *LPDIRECT3DLIGHT;
  71. typedef struct IDirect3DMaterial        *LPDIRECT3DMATERIAL;
  72. typedef struct IDirect3DTexture         *LPDIRECT3DTEXTURE;
  73. typedef struct IDirect3DViewport        *LPDIRECT3DVIEWPORT;
  74.  
  75. #endif
  76.  
  77. #include "d3dtypes.h"
  78. #include "d3dcaps.h"
  79.  
  80. /*
  81.  * IDirect3D
  82.  */
  83. #undef INTERFACE
  84. #define INTERFACE IDirect3D
  85. DECLARE_INTERFACE_(IDirect3D, IUnknown)
  86. {
  87.     /*** IUnknown methods ***/
  88.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID* ppvObj) PURE;
  89.     STDMETHOD_(ULONG, AddRef) (THIS) PURE;
  90.     STDMETHOD_(ULONG, Release) (THIS) PURE;
  91.     /*** IDirect3D methods ***/
  92.     STDMETHOD(Initialize) (THIS_ REFIID) PURE;
  93.     STDMETHOD(EnumDevices)(THIS_ LPD3DENUMDEVICESCALLBACK, LPVOID) PURE;
  94.     STDMETHOD(CreateLight) (THIS_ LPDIRECT3DLIGHT*, IUnknown*) PURE;
  95.     STDMETHOD(CreateMaterial) (THIS_ LPDIRECT3DMATERIAL*, IUnknown*) PURE;
  96.     STDMETHOD(CreateViewport) (THIS_ LPDIRECT3DVIEWPORT*, IUnknown*) PURE;
  97.     STDMETHOD(FindDevice)(THIS_ LPD3DFINDDEVICESEARCH, LPD3DFINDDEVICERESULT) PURE;
  98. };
  99.  
  100. #if !defined(__cplusplus) || defined(CINTERFACE)
  101. #define IDirect3D_QueryInterface(p, a, b)         (p)->lpVtbl->QueryInterface(p, a, b)
  102. #define IDirect3D_AddRef(p)                       (p)->lpVtbl->AddRef(p)
  103. #define IDirect3D_Release(p)                      (p)->lpVtbl->Release(p)
  104. #define IDirect3D_Initialize(p, a)                (p)->lpVtbl->Initialize(p, a)
  105. #define IDirect3D_EnumDevices(p, a, b)            (p)->lpVtbl->EnumDevices(p, a, b)
  106. #define IDirect3D_CreateLight(p, a, b)            (p)->lpVtbl->CreateLight(p, a, b)
  107. #define IDirect3D_CreateMaterial(p, a, b)         (p)->lpVtbl->CreateMaterial(p, a, b)
  108. #define IDirect3D_CreateViewport(p, a, b)         (p)->lpVtbl->CreateViewport(p, a, b)
  109. #define IDirect3D_FindDevice(p, a, b)             (p)->lpVtbl->FindDevice(p, a, b)
  110. #endif
  111.  
  112. /*
  113.  * IDirect3DDevice
  114.  */
  115. #undef INTERFACE
  116. #define INTERFACE IDirect3DDevice
  117. DECLARE_INTERFACE_(IDirect3DDevice, IUnknown)
  118. {
  119.     /*** IUnknown methods ***/
  120.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID* ppvObj) PURE;
  121.     STDMETHOD_(ULONG, AddRef) (THIS) PURE;
  122.     STDMETHOD_(ULONG, Release) (THIS) PURE;
  123.     /*** IDirect3DDevice methods ***/
  124.     STDMETHOD(Initialize) (THIS_ LPDIRECT3D, LPGUID, LPD3DDEVICEDESC) PURE;
  125.     STDMETHOD(GetCaps) (THIS_ LPD3DDEVICEDESC, LPD3DDEVICEDESC) PURE;
  126.     STDMETHOD(SwapTextureHandles) (THIS_ LPDIRECT3DTEXTURE, LPDIRECT3DTEXTURE) PURE;
  127.     STDMETHOD(CreateExecuteBuffer) (THIS_ LPD3DEXECUTEBUFFERDESC, LPDIRECT3DEXECUTEBUFFER*, IUnknown*) PURE;
  128.     STDMETHOD(GetStats) (THIS_ LPD3DSTATS) PURE;
  129.     STDMETHOD(Execute) (THIS_ LPDIRECT3DEXECUTEBUFFER, LPDIRECT3DVIEWPORT, DWORD) PURE;
  130.     STDMETHOD(AddViewport) (THIS_ LPDIRECT3DVIEWPORT) PURE;
  131.     STDMETHOD(DeleteViewport) (THIS_ LPDIRECT3DVIEWPORT) PURE;
  132.     STDMETHOD(NextViewport) (THIS_ LPDIRECT3DVIEWPORT, LPDIRECT3DVIEWPORT*, DWORD) PURE;
  133.     STDMETHOD(Pick) (THIS_ LPDIRECT3DEXECUTEBUFFER, LPDIRECT3DVIEWPORT, DWORD, LPD3DRECT) PURE;
  134.     STDMETHOD(GetPickRecords)(THIS_ LPDWORD, LPD3DPICKRECORD) PURE;
  135.     STDMETHOD(EnumTextureFormats) (THIS_ LPD3DENUMTEXTUREFORMATSCALLBACK, LPVOID) PURE;
  136.     STDMETHOD(CreateMatrix) (THIS_ LPD3DMATRIXHANDLE) PURE;
  137.     STDMETHOD(SetMatrix) (THIS_ D3DMATRIXHANDLE, LPD3DMATRIX) PURE;
  138.     STDMETHOD(GetMatrix) (THIS_ D3DMATRIXHANDLE, LPD3DMATRIX) PURE;
  139.     STDMETHOD(DeleteMatrix) (THIS_ D3DMATRIXHANDLE) PURE;
  140.     STDMETHOD_(HRESULT, BeginScene) (THIS) PURE;
  141.     STDMETHOD_(HRESULT, EndScene) (THIS) PURE;
  142.     STDMETHOD(GetDirect3D) (THIS_ LPDIRECT3D*) PURE;
  143. };
  144.  
  145. #if !defined(__cplusplus) || defined(CINTERFACE)
  146. #define IDirect3DDevice_QueryInterface(p, a, b)         (p)->lpVtbl->QueryInterface(p, a, b)
  147. #define IDirect3DDevice_AddRef(p)                       (p)->lpVtbl->AddRef(p)
  148. #define IDirect3DDevice_Release(p)                      (p)->lpVtbl->Release(p)
  149. #define IDirect3DDevice_Initialize(p, a, b, c)          (p)->lpVtbl->Initialize(p, a, b, c)
  150. #define IDirect3DDevice_GetCaps(p, a, b)                (p)->lpVtbl->GetCaps(p, a, b)
  151. #define IDirect3DDevice_SwapTextureHandles(p, a, b)     (p)->lpVtbl->SwapTextureHandles(p, a, b)
  152. #define IDirect3DDevice_CreateExecuteBuffer(p, a, b, c) (p)->lpVtbl->ExecuteBuffer(p, a, b, c)
  153. #define IDirect3DDevice_GetStats(p, a)                  (p)->lpVtbl->CreateViewport(p, a)
  154. #define IDirect3DDevice_Execute(p, a, b, c)             (p)->lpVtbl->Execute(p, a, b, c)
  155. #define IDirect3DDevice_AddViewport(p, a)               (p)->lpVtbl->AddViewport(p, a)
  156. #define IDirect3DDevice_DeleteViewport(p, a)            (p)->lpVtbl->DeleteViewport(p, a)
  157. #define IDirect3DDevice_NextViewport(p, a, b)           (p)->lpVtbl->NextViewport(p, a, b)
  158. #define IDirect3DDevice_Pick(p, a, b, c, d)             (p)->lpVtbl->Pick(p, a, b, c, d)
  159. #define IDirect3DDevice_GetPickRecords(p, a, b)         (p)->lpVtbl->GetPickRecords(p, a, b)
  160. #define IDirect3DDevice_EnumTextureFormats(p, a, b)     (p)->lpVtbl->EnumTextureFormats(p, a, b)
  161. #define IDirect3DDevice_CreateMatrix(p, a)              (p)->lpVtbl->CreateMatrix(p, a)
  162. #define IDirect3DDevice_SetMatrix(p, a, b)              (p)->lpVtbl->SetMatrix(p, a, b)
  163. #define IDirect3DDevice_GetMatrix(p, a, b)              (p)->lpVtbl->GetMatrix(p, a, b)
  164. #define IDirect3DDevice_DeleteMatrix(p, a)              (p)->lpVtbl->DeleteMatrix(p, a)
  165. #define IDirect3DDevice_BeginScene(p)                   (p)->lpVtbl->BeginScene(p)
  166. #define IDirect3DDevice_EndScene(p)                     (p)->lpVtbl->EndScene(p)
  167. #define IDirect3DDevice_GetDirect3D(p, a)               (p)->lpVtbl->GetDirect3D(p, a)
  168. #endif
  169.  
  170. /*
  171.  * IDirect3DExecuteBuffer
  172.  */
  173. #undef INTERFACE
  174. #define INTERFACE IDirect3DExecuteBuffer
  175. DECLARE_INTERFACE_(IDirect3DExecuteBuffer, IUnknown)
  176. {
  177.     /*** IUnknown methods ***/
  178.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID* ppvObj) PURE;
  179.     STDMETHOD_(ULONG, AddRef) (THIS) PURE;
  180.     STDMETHOD_(ULONG, Release) (THIS) PURE;
  181.     /*** IDirect3DExecuteBuffer methods ***/
  182.     STDMETHOD(Initialize) (THIS_ LPDIRECT3DDEVICE, LPD3DEXECUTEBUFFERDESC) PURE;
  183.     STDMETHOD(Lock) (THIS_ LPD3DEXECUTEBUFFERDESC) PURE;
  184.     STDMETHOD_(HRESULT, Unlock) (THIS) PURE;
  185.     STDMETHOD(SetExecuteData) (THIS_ LPD3DEXECUTEDATA) PURE;
  186.     STDMETHOD(GetExecuteData) (THIS_ LPD3DEXECUTEDATA) PURE;
  187.     STDMETHOD(Validate) (THIS_ LPDWORD, LPD3DVALIDATECALLBACK, LPVOID, DWORD) PURE;
  188.     STDMETHOD(Optimize) (THIS_ DWORD) PURE;
  189. };
  190.  
  191. #if !defined(__cplusplus) || defined(CINTERFACE)
  192. #define IDirect3DExecuteBuffer_QueryInterface(p, a, b) (p)->lpVtbl->QueryInterface(p, a, b)
  193. #define IDirect3DExecuteBuffer_AddRef(p)               (p)->lpVtbl->AddRef(p)
  194. #define IDirect3DExecuteBuffer_Release(p)              (p)->lpVtbl->Release(p)
  195. #define IDirect3DExecuteBuffer_Initialize(p, a, b)     (p)->lpVtbl->Initialize(p, a, b)
  196. #define IDirect3DExecuteBuffer_Lock(p, a)              (p)->lpVtbl->Lock(p, a)
  197. #define IDirect3DExecuteBuffer_Unlock(p, a)            (p)->lpVtbl->Unlock(p)
  198. #define IDirect3DExecuteBuffer_SetExecuteData(p, a)    (p)->lpVtbl->SetExecuteData(p, a)
  199. #define IDirect3DExecuteBuffer_Validate(p, a, b, c, d) (p)->lpVtbl->Validata(p, a, b, c, d)
  200. #endif
  201.  
  202. /*
  203.  * Flags for execute buffer calls
  204.  */
  205. #define D3DNEXT_NEXT    0x00000001l
  206. #define D3DNEXT_HEAD    0x00000002l
  207. #define D3DNEXT_TAIL    0x00000004l
  208.  
  209. /*
  210.  * IDirect3DLight
  211.  */
  212. #undef INTERFACE
  213. #define INTERFACE IDirect3DLight
  214. DECLARE_INTERFACE_(IDirect3DLight, IUnknown)
  215. {
  216.     /*** IUnknown methods ***/
  217.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID* ppvObj) PURE;
  218.     STDMETHOD_(ULONG, AddRef) (THIS) PURE;
  219.     STDMETHOD_(ULONG, Release) (THIS) PURE;
  220.     /*** IDirect3DLight methods ***/
  221.     STDMETHOD(Initialize) (THIS_ LPDIRECT3D) PURE;
  222.     STDMETHOD(SetLight) (THIS_ LPD3DLIGHT) PURE;
  223.     STDMETHOD(GetLight) (THIS_ LPD3DLIGHT) PURE;
  224. };
  225.  
  226. #if !defined(__cplusplus) || defined(CINTERFACE)
  227. #define IDirect3DLight_QueryInterface(p, a, b) (p)->lpVtbl->QueryInterface(p, a, b)
  228. #define IDirect3DLight_AddRef(p)               (p)->lpVtbl->AddRef(p)
  229. #define IDirect3DLight_Release(p)              (p)->lpVtbl->Release(p)
  230. #define IDirect3DLight_Initialize(p, a)        (p)->lpVtbl->Initialize(p, a)
  231. #define IDirect3DLight_SetLight(p, a)          (p)->lpVtbl->SetLight(p, a)
  232. #define IDirect3DLight_GetLight(p, a)          (p)->lpVtbl->GetLight(p, a)
  233. #endif
  234.  
  235. /*
  236.  * IDirect3DMaterial
  237.  */
  238. #undef INTERFACE
  239. #define INTERFACE IDirect3DMaterial
  240. DECLARE_INTERFACE_(IDirect3DMaterial, IUnknown)
  241. {
  242.     /*** IUnknown methods ***/
  243.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID* ppvObj) PURE;
  244.     STDMETHOD_(ULONG, AddRef) (THIS) PURE;
  245.     STDMETHOD_(ULONG, Release) (THIS) PURE;
  246.     /*** IDirect3DMaterial methods ***/
  247.     STDMETHOD(Initialize) (THIS_ LPDIRECT3D) PURE;
  248.     STDMETHOD(SetMaterial) (THIS_ LPD3DMATERIAL) PURE;
  249.     STDMETHOD(GetMaterial) (THIS_ LPD3DMATERIAL) PURE;
  250.     STDMETHOD(GetHandle) (THIS_ LPDIRECT3DDEVICE, LPD3DMATERIALHANDLE) PURE;
  251.     STDMETHOD_(HRESULT, Reserve) (THIS) PURE;
  252.     STDMETHOD_(HRESULT, Unreserve) (THIS) PURE;
  253. };
  254.  
  255. #if !defined(__cplusplus) || defined(CINTERFACE)
  256. #define IDirect3DMaterial_QueryInterface(p, a, b) (p)->lpVtbl->QueryInterface(p, a, b)
  257. #define IDirect3DMaterial_AddRef(p)               (p)->lpVtbl->AddRef(p)
  258. #define IDirect3DMaterial_Release(p)              (p)->lpVtbl->Release(p)
  259. #define IDirect3DMaterial_Initialize(p, a)        (p)->lpVtbl->Initialize(p, a)
  260. #define IDirect3DMaterial_SetMaterial(p, a)       (p)->lpVtbl->SetLight(p, a)
  261. #define IDirect3DMaterial_GetMaterial(p, a)       (p)->lpVtbl->GetLight(p, a)
  262. #define IDirect3DMaterial_GetHandle(p, a, b)      (p)->lpVtbl->GetHandle(p, a, b)
  263. #define IDirect3DMaterial_Reserve(p)              (p)->lpVtbl->Reserve(p)
  264. #define IDirect3DMaterial_Unreserve(p)            (p)->lpVtbl->Unreserve(p)
  265. #endif
  266.  
  267. /*
  268.  * IDirect3DTexture
  269.  */
  270. #undef INTERFACE
  271. #define INTERFACE IDirect3DTexture
  272. DECLARE_INTERFACE_(IDirect3DTexture, IUnknown)
  273. {
  274.     /*** IUnknown methods ***/
  275.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID* ppvObj) PURE;
  276.     STDMETHOD_(ULONG, AddRef) (THIS) PURE;
  277.     STDMETHOD_(ULONG, Release) (THIS) PURE;
  278.     /*** IDirect3DTexture methods ***/
  279.     STDMETHOD(Initialize) (THIS_ LPDIRECT3DDEVICE, LPDIRECTDRAWSURFACE) PURE;
  280.     STDMETHOD(GetHandle) (THIS_ LPDIRECT3DDEVICE, LPD3DTEXTUREHANDLE) PURE;
  281.     STDMETHOD(PaletteChanged) (THIS_ DWORD, DWORD) PURE;
  282.     STDMETHOD(Load) (THIS_ LPDIRECT3DTEXTURE) PURE;
  283.     STDMETHOD_(HRESULT, Unload) (THIS) PURE;
  284. };
  285.  
  286. #if !defined(__cplusplus) || defined(CINTERFACE)
  287. #define IDirect3DTexture_QueryInterface(p, a, b) (p)->lpVtbl->QueryInterface(p, a, b)
  288. #define IDirect3DTexture_AddRef(p)               (p)->lpVtbl->AddRef(p)
  289. #define IDirect3DTexture_Release(p)              (p)->lpVtbl->Release(p)
  290. #define IDirect3DTexture_Initialize(p, a, b)     (p)->lpVtbl->Initialize(p, a, b)
  291. #define IDirect3DTexture_GetHandle(p, a, b)      (p)->lpVtbl->GetHandle(p, a, b)
  292. #define IDirect3DTexture_PaletteChanged(p, a, b) (p)->lpVtbl->PaletteChanged(p, a, b)
  293. #define IDirect3DTexture_Load(p, a)              (p)->lpVtbl->Load(p, a)
  294. #define IDirect3DTexture_Unload(p)               (p)->lpVtbl->Unload(p)
  295. #endif
  296.  
  297. /*
  298.  * IDirect3DViewport
  299.  */
  300. #undef INTERFACE
  301. #define INTERFACE IDirect3DViewport
  302. DECLARE_INTERFACE_(IDirect3DViewport, IUnknown)
  303. {
  304.     /*** IUnknown methods ***/
  305.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID* ppvObj) PURE;
  306.     STDMETHOD_(ULONG, AddRef) (THIS) PURE;
  307.     STDMETHOD_(ULONG, Release) (THIS) PURE;
  308.     /*** IDirect3DViewport methods ***/
  309.     STDMETHOD(Initialize) (THIS_ LPDIRECT3D) PURE;
  310.     STDMETHOD(GetViewport) (THIS_ LPD3DVIEWPORT) PURE;
  311.     STDMETHOD(SetViewport) (THIS_ LPD3DVIEWPORT) PURE;
  312.     STDMETHOD(TransformVertices) (THIS_ DWORD, LPD3DTRANSFORMDATA, DWORD, LPDWORD) PURE;
  313.     STDMETHOD(LightElements) (THIS_ DWORD, LPD3DLIGHTDATA) PURE;
  314.     STDMETHOD(SetBackground) (THIS_ D3DMATERIALHANDLE) PURE;
  315.     STDMETHOD(GetBackground) (THIS_ LPD3DMATERIALHANDLE, LPBOOL) PURE;
  316.     STDMETHOD(SetBackgroundDepth) (THIS_ LPDIRECTDRAWSURFACE) PURE;
  317.     STDMETHOD(GetBackgroundDepth) (THIS_ LPDIRECTDRAWSURFACE*, LPBOOL) PURE;
  318.     STDMETHOD(Clear) (THIS_ DWORD, LPD3DRECT, DWORD) PURE;
  319.     STDMETHOD(AddLight) (THIS_ LPDIRECT3DLIGHT) PURE;
  320.     STDMETHOD(DeleteLight) (THIS_ LPDIRECT3DLIGHT) PURE;
  321.     STDMETHOD(NextLight) (THIS_ LPDIRECT3DLIGHT, LPDIRECT3DLIGHT*, DWORD) PURE;
  322. };
  323.  
  324. #if !defined(__cplusplus) || defined(CINTERFACE)
  325. #define IDirect3DViewport_QueryInterface(p, a, b)          (p)->lpVtbl->QueryInterface(p, a, b)
  326. #define IDirect3DViewport_AddRef(p)                        (p)->lpVtbl->AddRef(p)
  327. #define IDirect3DViewport_Release(p)                       (p)->lpVtbl->Release(p)
  328. #define IDirect3DViewport_Initialize(p, a)                 (p)->lpVtbl->Initialize(p, a)
  329. #define IDirect3DViewport_GetViewport(p, a)                (p)->lpVtbl->GetViewport(p, a)
  330. #define IDirect3DViewport_SetViewport(p, a)                (p)->lpVtbl->SetViewport(p, a)
  331. #define IDirect3DViewport_TransformVertices(p, a, b, c, d) (p)->lpVtbl->TransformVertices(p, a, b, c, d)
  332. #define IDirect3DViewport_LightElements(p, a, b)           (p)->lpVtbl->LightElements(p, a, b)
  333. #define IDirect3DViewport_SetBackground(p, a)              (p)->lpVtbl->SetBackground(p, a)
  334. #define IDirect3DViewport_GetBackground(p, a, b)           (p)->lpVtbl->GetBackground(p, a, b)
  335. #define IDirect3DViewport_Clear(p, a, b, c)                (p)->lpVtbl->Clear(p, a, b, c)
  336. #define IDirect3DViewport_AddLight(p, a)                   (p)->lpVtbl->AddLight(p, a)
  337. #define IDirect3DViewport_DeleteLight(p, a)                (p)->lpVtbl->DeleteLight(p, a)
  338. #define IDirect3DViewport_NextLight(p, a, b, c)            (p)->lpVtbl->NextLight(p, a, b, c)
  339. #endif
  340.  
  341. /*
  342.  * Direct3D Errors
  343.  * DirectDraw error codes are used when errors not specified here.
  344.  */
  345. #define D3D_OK                          DD_OK
  346. #define D3DERR_BADMAJORVERSION          MAKE_DDHRESULT(700)
  347. #define D3DERR_BADMINORVERSION          MAKE_DDHRESULT(701)
  348.  
  349. #define D3DERR_EXECUTE_CREATE_FAILED    MAKE_DDHRESULT(710)
  350. #define D3DERR_EXECUTE_DESTROY_FAILED   MAKE_DDHRESULT(711)
  351. #define D3DERR_EXECUTE_LOCK_FAILED      MAKE_DDHRESULT(712)
  352. #define D3DERR_EXECUTE_UNLOCK_FAILED    MAKE_DDHRESULT(713)
  353. #define D3DERR_EXECUTE_LOCKED           MAKE_DDHRESULT(714)
  354. #define D3DERR_EXECUTE_NOT_LOCKED       MAKE_DDHRESULT(715)
  355.  
  356. #define D3DERR_EXECUTE_FAILED           MAKE_DDHRESULT(716)
  357. #define D3DERR_EXECUTE_CLIPPED_FAILED   MAKE_DDHRESULT(717)
  358.  
  359. #define D3DERR_TEXTURE_NO_SUPPORT       MAKE_DDHRESULT(720)
  360. #define D3DERR_TEXTURE_CREATE_FAILED    MAKE_DDHRESULT(721)
  361. #define D3DERR_TEXTURE_DESTROY_FAILED   MAKE_DDHRESULT(722)
  362. #define D3DERR_TEXTURE_LOCK_FAILED      MAKE_DDHRESULT(723)
  363. #define D3DERR_TEXTURE_UNLOCK_FAILED    MAKE_DDHRESULT(724)
  364. #define D3DERR_TEXTURE_LOAD_FAILED      MAKE_DDHRESULT(725)
  365. #define D3DERR_TEXTURE_SWAP_FAILED      MAKE_DDHRESULT(726)
  366. #define D3DERR_TEXTURE_LOCKED           MAKE_DDHRESULT(727)
  367. #define D3DERR_TEXTURE_NOT_LOCKED       MAKE_DDHRESULT(728)
  368. #define D3DERR_TEXTURE_GETSURF_FAILED   MAKE_DDHRESULT(729)
  369.  
  370. #define D3DERR_MATRIX_CREATE_FAILED     MAKE_DDHRESULT(730)
  371. #define D3DERR_MATRIX_DESTROY_FAILED    MAKE_DDHRESULT(731)
  372. #define D3DERR_MATRIX_SETDATA_FAILED    MAKE_DDHRESULT(732)
  373. #define D3DERR_MATRIX_GETDATA_FAILED    MAKE_DDHRESULT(733)
  374. #define D3DERR_SETVIEWPORTDATA_FAILED   MAKE_DDHRESULT(734)
  375.  
  376. #define D3DERR_MATERIAL_CREATE_FAILED   MAKE_DDHRESULT(740)
  377. #define D3DERR_MATERIAL_DESTROY_FAILED  MAKE_DDHRESULT(741)
  378. #define D3DERR_MATERIAL_SETDATA_FAILED  MAKE_DDHRESULT(742)
  379. #define D3DERR_MATERIAL_GETDATA_FAILED  MAKE_DDHRESULT(743)
  380.  
  381. #define D3DERR_LIGHT_SET_FAILED         MAKE_DDHRESULT(750)
  382.  
  383. #define D3DERR_SCENE_IN_SCENE           MAKE_DDHRESULT(760)
  384. #define D3DERR_SCENE_NOT_IN_SCENE       MAKE_DDHRESULT(761)
  385. #define D3DERR_SCENE_BEGIN_FAILED       MAKE_DDHRESULT(762)
  386. #define D3DERR_SCENE_END_FAILED         MAKE_DDHRESULT(763)
  387.  
  388. #ifdef __cplusplus
  389. };
  390. #endif
  391.  
  392. #endif /* _D3D_H_ */
  393.