home *** CD-ROM | disk | FTP | other *** search
/ Beginning C++ Through Gam…rogramming (2nd Edition) / BCGP2E.ISO / bloodshed / devcpp-4.9.9.2_setup.exe / d3d9.h < prev    next >
C/C++ Source or Header  |  2005-01-29  |  77KB  |  1,289 lines

  1. /*
  2.  
  3.     d3d9.h - Header file for the Direct3D9 API
  4.  
  5.     Written by Filip Navara <xnavara@volny.cz>
  6.  
  7.     This library is distributed in the hope that it will be useful,
  8.     but WITHOUT ANY WARRANTY; without even the implied warranty of
  9.     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  10.  
  11. */
  12.  
  13. #ifndef _D3D9_H
  14. #define _D3D9_H
  15. #if __GNUC__ >=3
  16. #pragma GCC system_header
  17. #endif
  18.  
  19. #ifndef DIRECT3D_VERSION
  20. #define DIRECT3D_VERSION  0x0900
  21. #endif
  22.  
  23. #if (DIRECT3D_VERSION >= 0x0900)
  24.  
  25. #include <objbase.h>
  26. #include "d3d9types.h"
  27. #include "d3d9caps.h"
  28.  
  29. #define D3D_SDK_VERSION    31
  30. #define D3DCREATE_FPU_PRESERVE    0x02
  31. #define D3DCREATE_MULTITHREADED    0x04
  32. #define D3DCREATE_PUREDEVICE    0x10
  33. #define D3DCREATE_SOFTWARE_VERTEXPROCESSING    0x20
  34. #define D3DCREATE_HARDWARE_VERTEXPROCESSING    0x40
  35. #define D3DCREATE_MIXED_VERTEXPROCESSING    0x80
  36. #define D3DSPD_IUNKNOWN    1
  37. #define D3DSGR_NO_CALIBRATION    0
  38. #define D3DSGR_CALIBRATE    1
  39. #define MAKE_D3DHRESULT(code)    MAKE_HRESULT(1,0x876,code)
  40. #define MAKE_D3DSTATUS(code)    MAKE_HRESULT(0,0x876,code)
  41. #define D3D_OK    0
  42. #define D3DOK_NOAUTOGEN    MAKE_D3DSTATUS(2159)
  43. #define D3DERR_WRONGTEXTUREFORMAT    MAKE_D3DHRESULT(2072)
  44. #define D3DERR_UNSUPPORTEDCOLOROPERATION    MAKE_D3DHRESULT(2073)
  45. #define D3DERR_UNSUPPORTEDCOLORARG    MAKE_D3DHRESULT(2074)
  46. #define D3DERR_UNSUPPORTEDALPHAOPERATION    MAKE_D3DHRESULT(2075)
  47. #define D3DERR_UNSUPPORTEDALPHAARG    MAKE_D3DHRESULT(2076)
  48. #define D3DERR_TOOMANYOPERATIONS    MAKE_D3DHRESULT(2077)
  49. #define D3DERR_CONFLICTINGTEXTUREFILTER    MAKE_D3DHRESULT(2078)
  50. #define D3DERR_UNSUPPORTEDFACTORVALUE    MAKE_D3DHRESULT(2079)
  51. #define D3DERR_CONFLICTINGRENDERSTATE    MAKE_D3DHRESULT(2081)
  52. #define D3DERR_UNSUPPORTEDTEXTUREFILTER    MAKE_D3DHRESULT(2082)
  53. #define D3DERR_CONFLICTINGTEXTUREPALETTE    MAKE_D3DHRESULT(2086)
  54. #define D3DERR_DRIVERINTERNALERROR    MAKE_D3DHRESULT(2087)
  55. #define D3DERR_NOTFOUND    MAKE_D3DHRESULT(2150)
  56. #define D3DERR_MOREDATA    MAKE_D3DHRESULT(2151)
  57. #define D3DERR_DEVICELOST    MAKE_D3DHRESULT(2152)
  58. #define D3DERR_DEVICENOTRESET    MAKE_D3DHRESULT(2153)
  59. #define D3DERR_NOTAVAILABLE    MAKE_D3DHRESULT(2154)
  60. #define D3DERR_OUTOFVIDEOMEMORY    MAKE_D3DHRESULT(380)
  61. #define D3DERR_INVALIDDEVICE    MAKE_D3DHRESULT(2155)
  62. #define D3DERR_INVALIDCALL    MAKE_D3DHRESULT(2156)
  63. #define D3DERR_DRIVERINVALIDCALL    MAKE_D3DHRESULT(2157)
  64. #define D3DERR_WASSTILLDRAWING    MAKE_D3DHRESULT(540)
  65. #define D3DADAPTER_DEFAULT    0
  66. #define D3DCURSOR_IMMEDIATE_UPDATE    1
  67. #define D3DENUM_HOST_ADAPTER    1
  68. #define D3DPRESENTFLAG_LOCKABLE_BACKBUFFER    1
  69. #define D3DPV_DONOTCOPYDATA    1
  70. #define D3DENUM_NO_WHQL_LEVEL    2
  71. #define D3DPRESENT_BACK_BUFFERS_MAX    3
  72. #define VALID_D3DENUM_FLAGS    3
  73. #define D3DMAXNUMPRIMITIVES    0xFFFF
  74. #define D3DMAXNUMVERTICES    0xFFFF
  75. #define D3DCURRENT_DISPLAY_MODE    0xEFFFFF
  76.  
  77. #ifdef __cplusplus
  78. extern "C" {
  79. #endif
  80. extern const GUID IID_IDirect3D9;
  81. extern const GUID IID_IDirect3DDevice9;
  82. extern const GUID IID_IDirect3DVolume9;
  83. extern const GUID IID_IDirect3DSwapChain9;
  84. extern const GUID IID_IDirect3DResource9;
  85. extern const GUID IID_IDirect3DSurface9;
  86. extern const GUID IID_IDirect3DVertexBuffer9;
  87. extern const GUID IID_IDirect3DIndexBuffer9;
  88. extern const GUID IID_IDirect3DBaseTexture9;
  89. extern const GUID IID_IDirect3DCubeTexture9;
  90. extern const GUID IID_IDirect3DTexture9;
  91. extern const GUID IID_IDirect3DVolumeTexture9;
  92. extern const GUID IID_IDirect3DVertexDeclaration9;
  93. extern const GUID IID_IDirect3DVertexShader9;
  94. extern const GUID IID_IDirect3DPixelShader9;
  95. extern const GUID IID_IDirect3DStateBlock9;
  96. extern const GUID IID_IDirect3DQuery9;
  97. #ifdef __cplusplus
  98. };
  99. #endif
  100.  
  101. typedef interface IDirect3D9 IDirect3D9;
  102. typedef interface IDirect3DDevice9 IDirect3DDevice9;
  103. typedef interface IDirect3DVolume9 IDirect3DVolume9;
  104. typedef interface IDirect3DSwapChain9 IDirect3DSwapChain9;
  105. typedef interface IDirect3DResource9 IDirect3DResource9;
  106. typedef interface IDirect3DSurface9 IDirect3DSurface9;
  107. typedef interface IDirect3DVertexBuffer9 IDirect3DVertexBuffer9;
  108. typedef interface IDirect3DIndexBuffer9 IDirect3DIndexBuffer9;
  109. typedef interface IDirect3DBaseTexture9 IDirect3DBaseTexture9;
  110. typedef interface IDirect3DCubeTexture9 IDirect3DCubeTexture9;
  111. typedef interface IDirect3DTexture9 IDirect3DTexture9;
  112. typedef interface IDirect3DVolumeTexture9 IDirect3DVolumeTexture9;
  113. typedef interface IDirect3DVertexDeclaration9 IDirect3DVertexDeclaration9;
  114. typedef interface IDirect3DVertexShader9 IDirect3DVertexShader9;
  115. typedef interface IDirect3DPixelShader9 IDirect3DPixelShader9;
  116. typedef interface IDirect3DStateBlock9 IDirect3DStateBlock9;
  117. typedef interface IDirect3DQuery9 IDirect3DQuery9;
  118.  
  119. #undef INTERFACE
  120. #define INTERFACE IDirect3D9
  121. DECLARE_INTERFACE_(IDirect3D9,IUnknown)
  122. {
  123.     STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
  124.     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  125.     STDMETHOD_(ULONG,Release)(THIS) PURE;
  126.     STDMETHOD(RegisterSoftwareDevice)(THIS_ void* pInitializeFunction) PURE;
  127.     STDMETHOD_(UINT,GetAdapterCount)(THIS) PURE;
  128.     STDMETHOD(GetAdapterIdentifier)(THIS_ UINT,DWORD,D3DADAPTER_IDENTIFIER9*) PURE;
  129.     STDMETHOD_(UINT,GetAdapterModeCount)(THIS_ UINT,D3DFORMAT) PURE;
  130.     STDMETHOD(EnumAdapterModes)(THIS_ UINT,D3DFORMAT,UINT,D3DDISPLAYMODE*) PURE;
  131.     STDMETHOD(GetAdapterDisplayMode)(THIS_ UINT,D3DDISPLAYMODE*) PURE;
  132.     STDMETHOD(CheckDeviceType)(THIS_ UINT,D3DDEVTYPE,D3DFORMAT,D3DFORMAT,BOOL) PURE;
  133.     STDMETHOD(CheckDeviceFormat)(THIS_ UINT,D3DDEVTYPE,D3DFORMAT,DWORD,D3DRESOURCETYPE,D3DFORMAT) PURE;
  134.     STDMETHOD(CheckDeviceMultiSampleType)(THIS_ UINT,D3DDEVTYPE,D3DFORMAT,BOOL,D3DMULTISAMPLE_TYPE,DWORD*) PURE;
  135.     STDMETHOD(CheckDepthStencilMatch)(THIS_ UINT,D3DDEVTYPE,D3DFORMAT,D3DFORMAT,D3DFORMAT) PURE;
  136.     STDMETHOD(CheckDeviceFormatConversion)(THIS_ UINT,D3DDEVTYPE,D3DFORMAT,D3DFORMAT) PURE;
  137.     STDMETHOD(GetDeviceCaps)(THIS_ UINT,D3DDEVTYPE,D3DCAPS9*) PURE;
  138.     STDMETHOD_(HMONITOR,GetAdapterMonitor)(THIS_ UINT) PURE;
  139.     STDMETHOD(CreateDevice)(THIS_ UINT,D3DDEVTYPE,HWND,DWORD,D3DPRESENT_PARAMETERS*,IDirect3DDevice9**) PURE;
  140. };
  141. typedef struct IDirect3D9 *LPDIRECT3D9, *PDIRECT3D9;
  142.  
  143. #if !defined(__cplusplus) || defined(CINTERFACE)
  144. #define IDirect3D9_QueryInterface(p,a,b)    (p)->lpVtbl->QueryInterface(p,a,b)
  145. #define IDirect3D9_AddRef(p)    (p)->lpVtbl->AddRef(p)
  146. #define IDirect3D9_Release(p)    (p)->lpVtbl->Release(p)
  147. #define IDirect3D9_RegisterSoftwareDevice(p,a)    (p)->lpVtbl->RegisterSoftwareDevice(p,a)
  148. #define IDirect3D9_GetAdapterCount(p)    (p)->lpVtbl->GetAdapterCount(p)
  149. #define IDirect3D9_GetAdapterIdentifier(p,a,b,c)    (p)->lpVtbl->GetAdapterIdentifier(p,a,b,c)
  150. #define IDirect3D9_GetAdapterModeCount(p,a,b)    (p)->lpVtbl->GetAdapterModeCount(p,a,b)
  151. #define IDirect3D9_EnumAdapterModes(p,a,b,c,d)    (p)->lpVtbl->EnumAdapterModes(p,a,b,c,d)
  152. #define IDirect3D9_GetAdapterDisplayMode(p,a,b)    (p)->lpVtbl->GetAdapterDisplayMode(p,a,b)
  153. #define IDirect3D9_CheckDeviceType(p,a,b,c,d,e)    (p)->lpVtbl->CheckDeviceType(p,a,b,c,d,e)
  154. #define IDirect3D9_CheckDeviceFormat(p,a,b,c,d,e,f)    (p)->lpVtbl->CheckDeviceFormat(p,a,b,c,d,e,f)
  155. #define IDirect3D9_CheckDeviceMultiSampleType(p,a,b,c,d,e,f)    (p)->lpVtbl->CheckDeviceMultiSampleType(p,a,b,c,d,e,f)
  156. #define IDirect3D9_CheckDepthStencilMatch(p,a,b,c,d,e)    (p)->lpVtbl->CheckDepthStencilMatch(p,a,b,c,d,e)
  157. #define IDirect3D9_CheckDeviceFormatConversion(p,a,b,c,d)    (p)->lpVtbl->CheckDeviceFormatConversion(p,a,b,c,d)
  158. #define IDirect3D9_GetDeviceCaps(p,a,b,c)    (p)->lpVtbl->GetDeviceCaps(p,a,b,c)
  159. #define IDirect3D9_GetAdapterMonitor(p,a)    (p)->lpVtbl->GetAdapterMonitor(p,a)
  160. #define IDirect3D9_CreateDevice(p,a,b,c,d,e,f)    (p)->lpVtbl->CreateDevice(p,a,b,c,d,e,f)
  161. #else
  162. #define IDirect3D9_QueryInterface(p,a,b)    (p)->QueryInterface(a,b)
  163. #define IDirect3D9_AddRef(p)    (p)->AddRef()
  164. #define IDirect3D9_Release(p)    (p)->Release()
  165. #define IDirect3D9_RegisterSoftwareDevice(p,a)    (p)->RegisterSoftwareDevice(a)
  166. #define IDirect3D9_GetAdapterCount(p)    (p)->GetAdapterCount()
  167. #define IDirect3D9_GetAdapterIdentifier(p,a,b,c)    (p)->GetAdapterIdentifier(a,b,c)
  168. #define IDirect3D9_GetAdapterModeCount(p,a,b)    (p)->GetAdapterModeCount(a,b)
  169. #define IDirect3D9_EnumAdapterModes(p,a,b,c,d)    (p)->EnumAdapterModes(a,b,c,d)
  170. #define IDirect3D9_GetAdapterDisplayMode(p,a,b)    (p)->GetAdapterDisplayMode(a,b)
  171. #define IDirect3D9_CheckDeviceType(p,a,b,c,d,e)    (p)->CheckDeviceType(a,b,c,d,e)
  172. #define IDirect3D9_CheckDeviceFormat(p,a,b,c,d,e,f)    (p)->CheckDeviceFormat(a,b,c,d,e,f)
  173. #define IDirect3D9_CheckDeviceMultiSampleType(p,a,b,c,d,e,f)    (p)->CheckDeviceMultiSampleType(a,b,c,d,e,f)
  174. #define IDirect3D9_CheckDepthStencilMatch(p,a,b,c,d,e)    (p)->CheckDepthStencilMatch(a,b,c,d,e)
  175. #define IDirect3D9_CheckDeviceFormatConversion(p,a,b,c,d)    (p)->CheckDeviceFormatConversion(a,b,c,d)
  176. #define IDirect3D9_GetDeviceCaps(p,a,b,c)    (p)->GetDeviceCaps(a,b,c)
  177. #define IDirect3D9_GetAdapterMonitor(p,a)    (p)->GetAdapterMonitor(a)
  178. #define IDirect3D9_CreateDevice(p,a,b,c,d,e,f)    (p)->CreateDevice(a,b,c,d,e,f)
  179. #endif
  180.  
  181. #undef INTERFACE
  182. #define INTERFACE IDirect3DDevice9
  183. DECLARE_INTERFACE_(IDirect3DDevice9,IUnknown)
  184. {
  185.     STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
  186.     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  187.     STDMETHOD_(ULONG,Release)(THIS) PURE;
  188.     STDMETHOD(TestCooperativeLevel)(THIS) PURE;
  189.     STDMETHOD_(UINT,GetAvailableTextureMem)(THIS) PURE;
  190.     STDMETHOD(EvictManagedResources)(THIS) PURE;
  191.     STDMETHOD(GetDirect3D)(THIS_ IDirect3D9**) PURE;
  192.     STDMETHOD(GetDeviceCaps)(THIS_ D3DCAPS9*) PURE;
  193.     STDMETHOD(GetDisplayMode)(THIS_ UINT,D3DDISPLAYMODE*) PURE;
  194.     STDMETHOD(GetCreationParameters)(THIS_ D3DDEVICE_CREATION_PARAMETERS*) PURE;
  195.     STDMETHOD(SetCursorProperties)(THIS_ UINT,UINT,IDirect3DSurface9*) PURE;
  196.     STDMETHOD_(void,SetCursorPosition)(THIS_ int,int,DWORD) PURE;
  197.     STDMETHOD_(BOOL,ShowCursor)(THIS_ BOOL) PURE;
  198.     STDMETHOD(CreateAdditionalSwapChain)(THIS_ D3DPRESENT_PARAMETERS*,IDirect3DSwapChain9**) PURE;
  199.     STDMETHOD(GetSwapChain)(THIS_ UINT,IDirect3DSwapChain9**) PURE;
  200.     STDMETHOD_(UINT,GetNumberOfSwapChains)(THIS) PURE;
  201.     STDMETHOD(Reset)(THIS_ D3DPRESENT_PARAMETERS*) PURE;
  202.     STDMETHOD(Present)(THIS_ CONST RECT*,CONST RECT*,HWND,CONST RGNDATA*) PURE;
  203.     STDMETHOD(GetBackBuffer)(THIS_ UINT,UINT,D3DBACKBUFFER_TYPE,IDirect3DSurface9**) PURE;
  204.     STDMETHOD(GetRasterStatus)(THIS_ UINT,D3DRASTER_STATUS*) PURE;
  205.     STDMETHOD(SetDialogBoxMode)(THIS_ BOOL) PURE;
  206.     STDMETHOD_(void,SetGammaRamp)(THIS_ UINT,DWORD,CONST D3DGAMMARAMP*) PURE;
  207.     STDMETHOD_(void,GetGammaRamp)(THIS_ UINT,D3DGAMMARAMP*) PURE;
  208.     STDMETHOD(CreateTexture)(THIS_ UINT,UINT,UINT,DWORD,D3DFORMAT,D3DPOOL,IDirect3DTexture9**,HANDLE*) PURE;
  209.     STDMETHOD(CreateVolumeTexture)(THIS_ UINT,UINT,UINT,UINT,DWORD,D3DFORMAT,D3DPOOL,IDirect3DVolumeTexture9**,HANDLE*) PURE;
  210.     STDMETHOD(CreateCubeTexture)(THIS_ UINT,UINT,DWORD,D3DFORMAT,D3DPOOL,IDirect3DCubeTexture9**, HANDLE*) PURE;
  211.     STDMETHOD(CreateVertexBuffer)(THIS_ UINT,DWORD,DWORD,D3DPOOL,IDirect3DVertexBuffer9**, HANDLE*) PURE;
  212.     STDMETHOD(CreateIndexBuffer)(THIS_ UINT,DWORD,D3DFORMAT,D3DPOOL,IDirect3DIndexBuffer9**,HANDLE*) PURE;
  213.     STDMETHOD(CreateRenderTarget)(THIS_ UINT,UINT,D3DFORMAT,D3DMULTISAMPLE_TYPE,DWORD,BOOL,IDirect3DSurface9**,HANDLE*) PURE;
  214.     STDMETHOD(CreateDepthStencilSurface)(THIS_ UINT,UINT,D3DFORMAT,D3DMULTISAMPLE_TYPE,DWORD,BOOL,IDirect3DSurface9**,HANDLE*) PURE;
  215.     STDMETHOD(UpdateSurface)(THIS_ IDirect3DSurface9*,CONST RECT*,IDirect3DSurface9*,CONST POINT*) PURE;
  216.     STDMETHOD(UpdateTexture)(THIS_ IDirect3DBaseTexture9*,IDirect3DBaseTexture9*) PURE;
  217.     STDMETHOD(GetRenderTargetData)(THIS_ IDirect3DSurface9*,IDirect3DSurface9*) PURE;
  218.     STDMETHOD(GetFrontBufferData)(THIS_ UINT,IDirect3DSurface9*) PURE;
  219.     STDMETHOD(StretchRect)(THIS_ IDirect3DSurface9*,CONST RECT*,IDirect3DSurface9*,CONST RECT*,D3DTEXTUREFILTERTYPE) PURE;
  220.     STDMETHOD(ColorFill)(THIS_ IDirect3DSurface9*,CONST RECT*,D3DCOLOR) PURE;
  221.     STDMETHOD(CreateOffscreenPlainSurface)(THIS_ UINT,UINT,D3DFORMAT,D3DPOOL,IDirect3DSurface9**,HANDLE*) PURE;
  222.     STDMETHOD(SetRenderTarget)(THIS_ DWORD,IDirect3DSurface9*) PURE;
  223.     STDMETHOD(GetRenderTarget)(THIS_ DWORD,IDirect3DSurface9**) PURE;
  224.     STDMETHOD(SetDepthStencilSurface)(THIS_ IDirect3DSurface9*) PURE;
  225.     STDMETHOD(GetDepthStencilSurface)(THIS_ IDirect3DSurface9**) PURE;
  226.     STDMETHOD(BeginScene)(THIS) PURE;
  227.     STDMETHOD(EndScene)(THIS) PURE;
  228.     STDMETHOD(Clear)(THIS_ DWORD,CONST D3DRECT*,DWORD,D3DCOLOR,float,DWORD) PURE;
  229.     STDMETHOD(SetTransform)(THIS_ D3DTRANSFORMSTATETYPE,CONST D3DMATRIX*) PURE;
  230.     STDMETHOD(GetTransform)(THIS_ D3DTRANSFORMSTATETYPE,D3DMATRIX*) PURE;
  231.     STDMETHOD(MultiplyTransform)(THIS_ D3DTRANSFORMSTATETYPE,CONST D3DMATRIX*) PURE;
  232.     STDMETHOD(SetViewport)(THIS_ CONST D3DVIEWPORT9*) PURE;
  233.     STDMETHOD(GetViewport)(THIS_ D3DVIEWPORT9*) PURE;
  234.     STDMETHOD(SetMaterial)(THIS_ CONST D3DMATERIAL9*) PURE;
  235.     STDMETHOD(GetMaterial)(THIS_ D3DMATERIAL9*) PURE;
  236.     STDMETHOD(SetLight)(THIS_ DWORD,CONST D3DLIGHT9*) PURE;
  237.     STDMETHOD(GetLight)(THIS_ DWORD,D3DLIGHT9*) PURE;
  238.     STDMETHOD(LightEnable)(THIS_ DWORD,BOOL) PURE;
  239.     STDMETHOD(GetLightEnable)(THIS_ DWORD,BOOL*) PURE;
  240.     STDMETHOD(SetClipPlane)(THIS_ DWORD,CONST float*) PURE;
  241.     STDMETHOD(GetClipPlane)(THIS_ DWORD,float*) PURE;
  242.     STDMETHOD(SetRenderState)(THIS_ D3DRENDERSTATETYPE,DWORD) PURE;
  243.     STDMETHOD(GetRenderState)(THIS_ D3DRENDERSTATETYPE,DWORD*) PURE;
  244.     STDMETHOD(CreateStateBlock)(THIS_ D3DSTATEBLOCKTYPE,IDirect3DStateBlock9**) PURE;
  245.     STDMETHOD(BeginStateBlock)(THIS) PURE;
  246.     STDMETHOD(EndStateBlock)(THIS_ IDirect3DStateBlock9**) PURE;
  247.     STDMETHOD(SetClipStatus)(THIS_ CONST D3DCLIPSTATUS9*) PURE;
  248.     STDMETHOD(GetClipStatus)(THIS_ D3DCLIPSTATUS9*) PURE;
  249.     STDMETHOD(GetTexture)(THIS_ DWORD,IDirect3DBaseTexture9**) PURE;
  250.     STDMETHOD(SetTexture)(THIS_ DWORD,IDirect3DBaseTexture9*) PURE;
  251.     STDMETHOD(GetTextureStageState)(THIS_ DWORD,D3DTEXTURESTAGESTATETYPE,DWORD*) PURE;
  252.     STDMETHOD(SetTextureStageState)(THIS_ DWORD,D3DTEXTURESTAGESTATETYPE,DWORD) PURE;
  253.     STDMETHOD(GetSamplerState)(THIS_ DWORD,D3DSAMPLERSTATETYPE,DWORD*) PURE;
  254.     STDMETHOD(SetSamplerState)(THIS_ DWORD,D3DSAMPLERSTATETYPE,DWORD) PURE;
  255.     STDMETHOD(ValidateDevice)(THIS_ DWORD*) PURE;
  256.     STDMETHOD(SetPaletteEntries)(THIS_ UINT,CONST PALETTEENTRY*) PURE;
  257.     STDMETHOD(GetPaletteEntries)(THIS_ UINT,PALETTEENTRY*) PURE;
  258.     STDMETHOD(SetCurrentTexturePalette)(THIS_ UINT) PURE;
  259.     STDMETHOD(GetCurrentTexturePalette)(THIS_ UINT*) PURE;
  260.     STDMETHOD(SetScissorRect)(THIS_ CONST RECT*) PURE;
  261.     STDMETHOD(GetScissorRect)(THIS_ RECT*) PURE;
  262.     STDMETHOD(SetSoftwareVertexProcessing)(THIS_ BOOL) PURE;
  263.     STDMETHOD_(BOOL,GetSoftwareVertexProcessing)(THIS) PURE;
  264.     STDMETHOD(SetNPatchMode)(THIS_ float) PURE;
  265.     STDMETHOD_(float,GetNPatchMode)(THIS) PURE;
  266.     STDMETHOD(DrawPrimitive)(THIS_ D3DPRIMITIVETYPE,UINT,UINT) PURE;
  267.     STDMETHOD(DrawIndexedPrimitive)(THIS_ D3DPRIMITIVETYPE,INT,UINT,UINT,UINT,UINT) PURE;
  268.     STDMETHOD(DrawPrimitiveUP)(THIS_ D3DPRIMITIVETYPE,UINT,CONST void*,UINT) PURE;
  269.     STDMETHOD(DrawIndexedPrimitiveUP)(THIS_ D3DPRIMITIVETYPE,UINT,UINT,UINT,CONST void*,D3DFORMAT,CONST void*,UINT) PURE;
  270.     STDMETHOD(ProcessVertices)(THIS_ UINT,UINT,UINT,IDirect3DVertexBuffer9*,IDirect3DVertexDeclaration9*,DWORD) PURE;
  271.     STDMETHOD(CreateVertexDeclaration)(THIS_ CONST D3DVERTEXELEMENT9*,IDirect3DVertexDeclaration9**) PURE;
  272.     STDMETHOD(SetVertexDeclaration)(THIS_ IDirect3DVertexDeclaration9*) PURE;
  273.     STDMETHOD(GetVertexDeclaration)(THIS_ IDirect3DVertexDeclaration9**) PURE;
  274.     STDMETHOD(SetFVF)(THIS_ DWORD) PURE;
  275.     STDMETHOD(GetFVF)(THIS_ DWORD*) PURE;
  276.     STDMETHOD(CreateVertexShader)(THIS_ CONST DWORD*,IDirect3DVertexShader9**) PURE;
  277.     STDMETHOD(SetVertexShader)(THIS_ IDirect3DVertexShader9*) PURE;
  278.     STDMETHOD(GetVertexShader)(THIS_ IDirect3DVertexShader9**) PURE;
  279.     STDMETHOD(SetVertexShaderConstantF)(THIS_ UINT,CONST float*,UINT) PURE;
  280.     STDMETHOD(GetVertexShaderConstantF)(THIS_ UINT,float*,UINT) PURE;
  281.     STDMETHOD(SetVertexShaderConstantI)(THIS_ UINT,CONST int*,UINT) PURE;
  282.     STDMETHOD(GetVertexShaderConstantI)(THIS_ UINT,int*,UINT) PURE;
  283.     STDMETHOD(SetVertexShaderConstantB)(THIS_ UINT,CONST BOOL*,UINT) PURE;
  284.     STDMETHOD(GetVertexShaderConstantB)(THIS_ UINT,BOOL*,UINT) PURE;
  285.     STDMETHOD(SetStreamSource)(THIS_ UINT,IDirect3DVertexBuffer9*,UINT,UINT) PURE;
  286.     STDMETHOD(GetStreamSource)(THIS_ UINT,IDirect3DVertexBuffer9**,UINT*,UINT*) PURE;
  287.     STDMETHOD(SetStreamSourceFreq)(THIS_ UINT,UINT) PURE;
  288.     STDMETHOD(GetStreamSourceFreq)(THIS_ UINT,UINT*) PURE;
  289.     STDMETHOD(SetIndices)(THIS_ IDirect3DIndexBuffer9*) PURE;
  290.     STDMETHOD(GetIndices)(THIS_ IDirect3DIndexBuffer9**) PURE;
  291.     STDMETHOD(CreatePixelShader)(THIS_ CONST DWORD*,IDirect3DPixelShader9**) PURE;
  292.     STDMETHOD(SetPixelShader)(THIS_ IDirect3DPixelShader9*) PURE;
  293.     STDMETHOD(GetPixelShader)(THIS_ IDirect3DPixelShader9**) PURE;
  294.     STDMETHOD(SetPixelShaderConstantF)(THIS_ UINT,CONST float*,UINT) PURE;
  295.     STDMETHOD(GetPixelShaderConstantF)(THIS_ UINT,float*,UINT) PURE;
  296.     STDMETHOD(SetPixelShaderConstantI)(THIS_ UINT,CONST int*,UINT) PURE;
  297.     STDMETHOD(GetPixelShaderConstantI)(THIS_ UINT,int*,UINT) PURE;
  298.     STDMETHOD(SetPixelShaderConstantB)(THIS_ UINT,CONST BOOL*,UINT) PURE;
  299.     STDMETHOD(GetPixelShaderConstantB)(THIS_ UINT,BOOL*,UINT) PURE;
  300.     STDMETHOD(DrawRectPatch)(THIS_ UINT,CONST float*,CONST D3DRECTPATCH_INFO*) PURE;
  301.     STDMETHOD(DrawTriPatch)(THIS_ UINT,CONST float*,CONST D3DTRIPATCH_INFO*) PURE;
  302.     STDMETHOD(DeletePatch)(THIS_ UINT) PURE;
  303.     STDMETHOD(CreateQuery)(THIS_ D3DQUERYTYPE,IDirect3DQuery9**) PURE;
  304. };
  305. typedef struct IDirect3DDevice9 *LPDIRECT3DDEVICE9, *PDIRECT3DDEVICE9;
  306.  
  307. #if !defined(__cplusplus) || defined(CINTERFACE)
  308. #define IDirect3DDevice9_QueryInterface(p,a,b)    (p)->lpVtbl->QueryInterface(p,a,b)
  309. #define IDirect3DDevice9_AddRef(p)    (p)->lpVtbl->AddRef(p)
  310. #define IDirect3DDevice9_Release(p)    (p)->lpVtbl->Release(p)
  311. #define IDirect3DDevice9_TestCooperativeLevel(p)    (p)->lpVtbl->TestCooperativeLevel(p)
  312. #define IDirect3DDevice9_GetAvailableTextureMem(p)    (p)->lpVtbl->GetAvailableTextureMem(p)
  313. #define IDirect3DDevice9_EvictManagedResources(p)    (p)->lpVtbl->EvictManagedResources(p)
  314. #define IDirect3DDevice9_GetDirect3D(p,a)    (p)->lpVtbl->GetDirect3D(p,a)
  315. #define IDirect3DDevice9_GetDeviceCaps(p,a)    (p)->lpVtbl->GetDeviceCaps(p,a)
  316. #define IDirect3DDevice9_GetDisplayMode(p,a,b)    (p)->lpVtbl->GetDisplayMode(p,a,b)
  317. #define IDirect3DDevice9_GetCreationParameters(p,a)    (p)->lpVtbl->GetCreationParameters(p,a)
  318. #define IDirect3DDevice9_SetCursorProperties(p,a,b,c)    (p)->lpVtbl->SetCursorProperties(p,a,b,c)
  319. #define IDirect3DDevice9_SetCursorPosition(p,a,b,c)    (p)->lpVtbl->SetCursorPosition(p,a,b,c)
  320. #define IDirect3DDevice9_ShowCursor(p,a)    (p)->lpVtbl->ShowCursor(p,a)
  321. #define IDirect3DDevice9_CreateAdditionalSwapChain(p,a,b)    (p)->lpVtbl->CreateAdditionalSwapChain(p,a,b)
  322. #define IDirect3DDevice9_GetSwapChain(p,a,b)    (p)->lpVtbl->GetSwapChain(p,a,b)
  323. #define IDirect3DDevice9_GetNumberOfSwapChains(p)    (p)->lpVtbl->GetNumberOfSwapChains(p)
  324. #define IDirect3DDevice9_Reset(p,a)    (p)->lpVtbl->Reset(p,a)
  325. #define IDirect3DDevice9_Present(p,a,b,c,d)    (p)->lpVtbl->Present(p,a,b,c,d)
  326. #define IDirect3DDevice9_GetBackBuffer(p,a,b,c,d)    (p)->lpVtbl->GetBackBuffer(p,a,b,c,d)
  327. #define IDirect3DDevice9_GetRasterStatus(p,a,b)    (p)->lpVtbl->GetRasterStatus(p,a,b)
  328. #define IDirect3DDevice9_SetDialogBoxMode(p,a)    (p)->lpVtbl->SetDialogBoxMode(p,a)
  329. #define IDirect3DDevice9_SetGammaRamp(p,a,b,c)    (p)->lpVtbl->SetGammaRamp(p,a,b,c)
  330. #define IDirect3DDevice9_GetGammaRamp(p,a,b)    (p)->lpVtbl->GetGammaRamp(p,a,b)
  331. #define IDirect3DDevice9_CreateTexture(p,a,b,c,d,e,f,g,h)    (p)->lpVtbl->CreateTexture(p,a,b,c,d,e,f,g,h)
  332. #define IDirect3DDevice9_CreateVolumeTexture(p,a,b,c,d,e,f,g,h,i)    (p)->lpVtbl->CreateVolumeTexture(p,a,b,c,d,e,f,g,h,i)
  333. #define IDirect3DDevice9_CreateCubeTexture(p,a,b,c,d,e,f,g)    (p)->lpVtbl->CreateCubeTexture(p,a,b,c,d,e,f,g)
  334. #define IDirect3DDevice9_CreateVertexBuffer(p,a,b,c,d,e,f)    (p)->lpVtbl->CreateVertexBuffer(p,a,b,c,d,e,f)
  335. #define IDirect3DDevice9_CreateIndexBuffer(p,a,b,c,d,e,f)    (p)->lpVtbl->CreateIndexBuffer(p,a,b,c,d,e,f)
  336. #define IDirect3DDevice9_CreateRenderTarget(p,a,b,c,d,e,f,g,h)    (p)->lpVtbl->CreateRenderTarget(p,a,b,c,d,e,f,g,h)
  337. #define IDirect3DDevice9_CreateDepthStencilSurface(p,a,b,c,d,e,f,g,h)    (p)->lpVtbl->CreateDepthStencilSurface(p,a,b,c,d,e,f,g,h)
  338. #define IDirect3DDevice9_UpdateSurface(p,a,b,c,d)    (p)->lpVtbl->UpdateSurface(p,a,b,c,d)
  339. #define IDirect3DDevice9_UpdateTexture(p,a,b)    (p)->lpVtbl->UpdateTexture(p,a,b)
  340. #define IDirect3DDevice9_GetRenderTargetData(p,a,b)    (p)->lpVtbl->GetRenderTargetData(p,a,b)
  341. #define IDirect3DDevice9_GetFrontBufferData(p,a,b)    (p)->lpVtbl->GetFrontBufferData(p,a,b)
  342. #define IDirect3DDevice9_StretchRect(p,a,b,c,d,e)    (p)->lpVtbl->StretchRect(p,a,b,c,d,e)
  343. #define IDirect3DDevice9_ColorFill(p,a,b,c)    (p)->lpVtbl->ColorFill(p,a,b,c)
  344. #define IDirect3DDevice9_CreateOffscreenPlainSurface(p,a,b,c,d,e,f)    (p)->lpVtbl->CreateOffscreenPlainSurface(p,a,b,c,d,e,f)
  345. #define IDirect3DDevice9_SetRenderTarget(p,a,b)    (p)->lpVtbl->SetRenderTarget(p,a,b)
  346. #define IDirect3DDevice9_GetRenderTarget(p,a,b)    (p)->lpVtbl->GetRenderTarget(p,a,b)
  347. #define IDirect3DDevice9_SetDepthStencilSurface(p,a)    (p)->lpVtbl->SetDepthStencilSurface(p,a)
  348. #define IDirect3DDevice9_GetDepthStencilSurface(p,a)    (p)->lpVtbl->GetDepthStencilSurface(p,a)
  349. #define IDirect3DDevice9_BeginScene(p)    (p)->lpVtbl->BeginScene(p)
  350. #define IDirect3DDevice9_EndScene(p)    (p)->lpVtbl->EndScene(p)
  351. #define IDirect3DDevice9_Clear(p,a,b,c,d,e,f)    (p)->lpVtbl->Clear(p,a,b,c,d,e,f)
  352. #define IDirect3DDevice9_SetTransform(p,a,b)    (p)->lpVtbl->SetTransform(p,a,b)
  353. #define IDirect3DDevice9_GetTransform(p,a,b)    (p)->lpVtbl->GetTransform(p,a,b)
  354. #define IDirect3DDevice9_MultiplyTransform(p,a,b)    (p)->lpVtbl->MultiplyTransform(p,a,b)
  355. #define IDirect3DDevice9_SetViewport(p,a)    (p)->lpVtbl->SetViewport(p,a)
  356. #define IDirect3DDevice9_GetViewport(p,a)    (p)->lpVtbl->GetViewport(p,a)
  357. #define IDirect3DDevice9_SetMaterial(p,a)    (p)->lpVtbl->SetMaterial(p,a)
  358. #define IDirect3DDevice9_GetMaterial(p,a)    (p)->lpVtbl->GetMaterial(p,a)
  359. #define IDirect3DDevice9_SetLight(p,a,b)    (p)->lpVtbl->SetLight(p,a,b)
  360. #define IDirect3DDevice9_GetLight(p,a,b)    (p)->lpVtbl->GetLight(p,a,b)
  361. #define IDirect3DDevice9_LightEnable(p,a,b)    (p)->lpVtbl->LightEnable(p,a,b)
  362. #define IDirect3DDevice9_GetLightEnable(p,a,b)    (p)->lpVtbl->GetLightEnable(p,a,b)
  363. #define IDirect3DDevice9_SetClipPlane(p,a,b)    (p)->lpVtbl->SetClipPlane(p,a,b)
  364. #define IDirect3DDevice9_GetClipPlane(p,a,b)    (p)->lpVtbl->GetClipPlane(p,a,b)
  365. #define IDirect3DDevice9_SetRenderState(p,a,b)    (p)->lpVtbl->SetRenderState(p,a,b)
  366. #define IDirect3DDevice9_GetRenderState(p,a,b)    (p)->lpVtbl->GetRenderState(p,a,b)
  367. #define IDirect3DDevice9_CreateStateBlock(p,a,b)    (p)->lpVtbl->CreateStateBlock(p,a,b)
  368. #define IDirect3DDevice9_BeginStateBlock(p)    (p)->lpVtbl->BeginStateBlock(p)
  369. #define IDirect3DDevice9_EndStateBlock(p,a)    (p)->lpVtbl->EndStateBlock(p,a)
  370. #define IDirect3DDevice9_SetClipStatus(p,a)    (p)->lpVtbl->SetClipStatus(p,a)
  371. #define IDirect3DDevice9_GetClipStatus(p,a)    (p)->lpVtbl->GetClipStatus(p,a)
  372. #define IDirect3DDevice9_GetTexture(p,a,b)    (p)->lpVtbl->GetTexture(p,a,b)
  373. #define IDirect3DDevice9_SetTexture(p,a,b)    (p)->lpVtbl->SetTexture(p,a,b)
  374. #define IDirect3DDevice9_GetTextureStageState(p,a,b,c)    (p)->lpVtbl->GetTextureStageState(p,a,b,c)
  375. #define IDirect3DDevice9_SetTextureStageState(p,a,b,c)    (p)->lpVtbl->SetTextureStageState(p,a,b,c)
  376. #define IDirect3DDevice9_GetSamplerState(p,a,b,c)    (p)->lpVtbl->GetSamplerState(p,a,b,c)
  377. #define IDirect3DDevice9_SetSamplerState(p,a,b,c)    (p)->lpVtbl->SetSamplerState(p,a,b,c)
  378. #define IDirect3DDevice9_ValidateDevice(p,a)    (p)->lpVtbl->ValidateDevice(p,a)
  379. #define IDirect3DDevice9_SetPaletteEntries(p,a,b)    (p)->lpVtbl->SetPaletteEntries(p,a,b)
  380. #define IDirect3DDevice9_GetPaletteEntries(p,a,b)    (p)->lpVtbl->GetPaletteEntries(p,a,b)
  381. #define IDirect3DDevice9_SetCurrentTexturePalette(p,a)    (p)->lpVtbl->SetCurrentTexturePalette(p,a)
  382. #define IDirect3DDevice9_GetCurrentTexturePalette(p,a)    (p)->lpVtbl->GetCurrentTexturePalette(p,a)
  383. #define IDirect3DDevice9_SetScissorRect(p,a)    (p)->lpVtbl->SetScissorRect(p,a)
  384. #define IDirect3DDevice9_GetScissorRect(p,a)    (p)->lpVtbl->GetScissorRect(p,a)
  385. #define IDirect3DDevice9_SetSoftwareVertexProcessing(p,a)    (p)->lpVtbl->SetSoftwareVertexProcessing(p,a)
  386. #define IDirect3DDevice9_GetSoftwareVertexProcessing(p)    (p)->lpVtbl->GetSoftwareVertexProcessing(p)
  387. #define IDirect3DDevice9_SetNPatchMode(p,a)    (p)->lpVtbl->SetNPatchMode(p,a)
  388. #define IDirect3DDevice9_GetNPatchMode(p)    (p)->lpVtbl->GetNPatchMode(p)
  389. #define IDirect3DDevice9_DrawPrimitive(p,a,b,c)    (p)->lpVtbl->DrawPrimitive(p,a,b,c)
  390. #define IDirect3DDevice9_DrawIndexedPrimitive(p,a,b,c,d,e,f)    (p)->lpVtbl->DrawIndexedPrimitive(p,a,b,c,d,e,f)
  391. #define IDirect3DDevice9_DrawPrimitiveUP(p,a,b,c,d)    (p)->lpVtbl->DrawPrimitiveUP(p,a,b,c,d)
  392. #define IDirect3DDevice9_DrawIndexedPrimitiveUP(p,a,b,c,d,e,f,g,h)    (p)->lpVtbl->DrawIndexedPrimitiveUP(p,a,b,c,d,e,f,g,h)
  393. #define IDirect3DDevice9_ProcessVertices(p,a,b,c,d,e,f)    (p)->lpVtbl->ProcessVertices(p,a,b,c,d,e,f)
  394. #define IDirect3DDevice9_CreateVertexDeclaration(p,a,b)    (p)->lpVtbl->CreateVertexDeclaration(p,a,b)
  395. #define IDirect3DDevice9_SetVertexDeclaration(p,a)    (p)->lpVtbl->SetVertexDeclaration(p,a)
  396. #define IDirect3DDevice9_GetVertexDeclaration(p,a)    (p)->lpVtbl->GetVertexDeclaration(p,a)
  397. #define IDirect3DDevice9_SetFVF(p,a)    (p)->lpVtbl->SetFVF(p,a)
  398. #define IDirect3DDevice9_GetFVF(p,a)    (p)->lpVtbl->GetFVF(p,a)
  399. #define IDirect3DDevice9_CreateVertexShader(p,a,b)    (p)->lpVtbl->CreateVertexShader(p,a,b)
  400. #define IDirect3DDevice9_SetVertexShader(p,a)    (p)->lpVtbl->SetVertexShader(p,a)
  401. #define IDirect3DDevice9_GetVertexShader(p,a)    (p)->lpVtbl->GetVertexShader(p,a)
  402. #define IDirect3DDevice9_SetVertexShaderConstantF(p,a,b,c)    (p)->lpVtbl->SetVertexShaderConstantF(p,a,b,c)
  403. #define IDirect3DDevice9_GetVertexShaderConstantF(p,a,b,c)    (p)->lpVtbl->GetVertexShaderConstantF(p,a,b,c)
  404. #define IDirect3DDevice9_SetVertexShaderConstantI(p,a,b,c)    (p)->lpVtbl->SetVertexShaderConstantI(p,a,b,c)
  405. #define IDirect3DDevice9_GetVertexShaderConstantI(p,a,b,c)    (p)->lpVtbl->GetVertexShaderConstantI(p,a,b,c)
  406. #define IDirect3DDevice9_SetVertexShaderConstantB(p,a,b,c)    (p)->lpVtbl->SetVertexShaderConstantB(p,a,b,c)
  407. #define IDirect3DDevice9_GetVertexShaderConstantB(p,a,b,c)    (p)->lpVtbl->GetVertexShaderConstantB(p,a,b,c)
  408. #define IDirect3DDevice9_SetStreamSource(p,a,b,c,d)    (p)->lpVtbl->SetStreamSource(p,a,b,c,d)
  409. #define IDirect3DDevice9_GetStreamSource(p,a,b,c,d)    (p)->lpVtbl->GetStreamSource(p,a,b,c,d)
  410. #define IDirect3DDevice9_SetStreamSourceFreq(p,a,b)    (p)->lpVtbl->SetStreamSourceFreq(p,a,b)
  411. #define IDirect3DDevice9_GetStreamSourceFreq(p,a,b)    (p)->lpVtbl->GetStreamSourceFreq(p,a,b)
  412. #define IDirect3DDevice9_SetIndices(p,a)    (p)->lpVtbl->SetIndices(p,a)
  413. #define IDirect3DDevice9_GetIndices(p,a)    (p)->lpVtbl->GetIndices(p,a)
  414. #define IDirect3DDevice9_CreatePixelShader(p,a,b)    (p)->lpVtbl->CreatePixelShader(p,a,b)
  415. #define IDirect3DDevice9_SetPixelShader(p,a)    (p)->lpVtbl->SetPixelShader(p,a)
  416. #define IDirect3DDevice9_GetPixelShader(p,a)    (p)->lpVtbl->GetPixelShader(p,a)
  417. #define IDirect3DDevice9_SetPixelShaderConstantF(p,a,b,c)    (p)->lpVtbl->SetPixelShaderConstantF(p,a,b,c)
  418. #define IDirect3DDevice9_GetPixelShaderConstantF(p,a,b,c)    (p)->lpVtbl->GetPixelShaderConstantF(p,a,b,c)
  419. #define IDirect3DDevice9_SetPixelShaderConstantI(p,a,b,c)    (p)->lpVtbl->SetPixelShaderConstantI(p,a,b,c)
  420. #define IDirect3DDevice9_GetPixelShaderConstantI(p,a,b,c)    (p)->lpVtbl->GetPixelShaderConstantI(p,a,b,c)
  421. #define IDirect3DDevice9_SetPixelShaderConstantB(p,a,b,c)    (p)->lpVtbl->SetPixelShaderConstantB(p,a,b,c)
  422. #define IDirect3DDevice9_GetPixelShaderConstantB(p,a,b,c)    (p)->lpVtbl->GetPixelShaderConstantB(p,a,b,c)
  423. #define IDirect3DDevice9_DrawRectPatch(p,a,b,c)    (p)->lpVtbl->DrawRectPatch(p,a,b,c)
  424. #define IDirect3DDevice9_DrawTriPatch(p,a,b,c)    (p)->lpVtbl->DrawTriPatch(p,a,b,c)
  425. #define IDirect3DDevice9_DeletePatch(p,a)    (p)->lpVtbl->DeletePatch(p,a)
  426. #define IDirect3DDevice9_CreateQuery(p,a,b)    (p)->lpVtbl->CreateQuery(p,a,b)
  427. #else
  428. #define IDirect3DDevice9_QueryInterface(p,a,b)    (p)->QueryInterface(a,b)
  429. #define IDirect3DDevice9_AddRef(p)    (p)->AddRef()
  430. #define IDirect3DDevice9_Release(p)    (p)->Release()
  431. #define IDirect3DDevice9_TestCooperativeLevel(p)    (p)->TestCooperativeLevel()
  432. #define IDirect3DDevice9_GetAvailableTextureMem(p)    (p)->GetAvailableTextureMem()
  433. #define IDirect3DDevice9_EvictManagedResources(p)    (p)->EvictManagedResources()
  434. #define IDirect3DDevice9_GetDirect3D(p,a)    (p)->GetDirect3D(a)
  435. #define IDirect3DDevice9_GetDeviceCaps(p,a)    (p)->GetDeviceCaps(a)
  436. #define IDirect3DDevice9_GetDisplayMode(p,a,b)    (p)->GetDisplayMode(a,b)
  437. #define IDirect3DDevice9_GetCreationParameters(p,a)    (p)->GetCreationParameters(a)
  438. #define IDirect3DDevice9_SetCursorProperties(p,a,b,c)    (p)->SetCursorProperties(a,b,c)
  439. #define IDirect3DDevice9_SetCursorPosition(p,a,b,c)    (p)->SetCursorPosition(a,b,c)
  440. #define IDirect3DDevice9_ShowCursor(p,a)    (p)->ShowCursor(a)
  441. #define IDirect3DDevice9_CreateAdditionalSwapChain(p,a,b)    (p)->CreateAdditionalSwapChain(a,b)
  442. #define IDirect3DDevice9_GetSwapChain(p,a,b)    (p)->GetSwapChain(a,b)
  443. #define IDirect3DDevice9_GetNumberOfSwapChains(p)    (p)->GetNumberOfSwapChains()
  444. #define IDirect3DDevice9_Reset(p,a)    (p)->Reset(a)
  445. #define IDirect3DDevice9_Present(p,a,b,c,d)    (p)->Present(a,b,c,d)
  446. #define IDirect3DDevice9_GetBackBuffer(p,a,b,c,d)    (p)->GetBackBuffer(a,b,c,d)
  447. #define IDirect3DDevice9_GetRasterStatus(p,a,b)    (p)->GetRasterStatus(a,b)
  448. #define IDirect3DDevice9_SetDialogBoxMode(p,a)    (p)->SetDialogBoxMode(a)
  449. #define IDirect3DDevice9_SetGammaRamp(p,a,b,c)    (p)->SetGammaRamp(a,b,c)
  450. #define IDirect3DDevice9_GetGammaRamp(p,a,b)    (p)->GetGammaRamp(a,b)
  451. #define IDirect3DDevice9_CreateTexture(p,a,b,c,d,e,f,g,h)    (p)->CreateTexture(a,b,c,d,e,f,g,h)
  452. #define IDirect3DDevice9_CreateVolumeTexture(p,a,b,c,d,e,f,g,h,i)    (p)->CreateVolumeTexture(a,b,c,d,e,f,g,h,i)
  453. #define IDirect3DDevice9_CreateCubeTexture(p,a,b,c,d,e,f,g)    (p)->CreateCubeTexture(a,b,c,d,e,f,g)
  454. #define IDirect3DDevice9_CreateVertexBuffer(p,a,b,c,d,e,f)    (p)->CreateVertexBuffer(a,b,c,d,e,f)
  455. #define IDirect3DDevice9_CreateIndexBuffer(p,a,b,c,d,e,f)    (p)->CreateIndexBuffer(a,b,c,d,e,f)
  456. #define IDirect3DDevice9_CreateRenderTarget(p,a,b,c,d,e,f,g,h)    (p)->CreateRenderTarget(a,b,c,d,e,f,g,h)
  457. #define IDirect3DDevice9_CreateDepthStencilSurface(p,a,b,c,d,e,f,g,h)    (p)->CreateDepthStencilSurface(a,b,c,d,e,f,g,h)
  458. #define IDirect3DDevice9_UpdateSurface(p,a,b,c,d)    (p)->UpdateSurface(a,b,c,d)
  459. #define IDirect3DDevice9_UpdateTexture(p,a,b)    (p)->UpdateTexture(a,b)
  460. #define IDirect3DDevice9_GetRenderTargetData(p,a,b)    (p)->GetRenderTargetData(a,b)
  461. #define IDirect3DDevice9_GetFrontBufferData(p,a,b)    (p)->GetFrontBufferData(a,b)
  462. #define IDirect3DDevice9_StretchRect(p,a,b,c,d,e)    (p)->StretchRect(a,b,c,d,e)
  463. #define IDirect3DDevice9_ColorFill(p,a,b,c)    (p)->ColorFill(a,b,c)
  464. #define IDirect3DDevice9_CreateOffscreenPlainSurface(p,a,b,c,d,e,f)    (p)->CreateOffscreenPlainSurface(a,b,c,d,e,f)
  465. #define IDirect3DDevice9_SetRenderTarget(p,a,b)    (p)->SetRenderTarget(a,b)
  466. #define IDirect3DDevice9_GetRenderTarget(p,a,b)    (p)->GetRenderTarget(a,b)
  467. #define IDirect3DDevice9_SetDepthStencilSurface(p,a)    (p)->SetDepthStencilSurface(a)
  468. #define IDirect3DDevice9_GetDepthStencilSurface(p,a)    (p)->GetDepthStencilSurface(a)
  469. #define IDirect3DDevice9_BeginScene(p)    (p)->BeginScene()
  470. #define IDirect3DDevice9_EndScene(p)    (p)->EndScene()
  471. #define IDirect3DDevice9_Clear(p,a,b,c,d,e,f)    (p)->Clear(a,b,c,d,e,f)
  472. #define IDirect3DDevice9_SetTransform(p,a,b)    (p)->SetTransform(a,b)
  473. #define IDirect3DDevice9_GetTransform(p,a,b)    (p)->GetTransform(a,b)
  474. #define IDirect3DDevice9_MultiplyTransform(p,a,b)    (p)->MultiplyTransform(a,b)
  475. #define IDirect3DDevice9_SetViewport(p,a)    (p)->SetViewport(a)
  476. #define IDirect3DDevice9_GetViewport(p,a)    (p)->GetViewport(a)
  477. #define IDirect3DDevice9_SetMaterial(p,a)    (p)->SetMaterial(a)
  478. #define IDirect3DDevice9_GetMaterial(p,a)    (p)->GetMaterial(a)
  479. #define IDirect3DDevice9_SetLight(p,a,b)    (p)->SetLight(a,b)
  480. #define IDirect3DDevice9_GetLight(p,a,b)    (p)->GetLight(a,b)
  481. #define IDirect3DDevice9_LightEnable(p,a,b)    (p)->LightEnable(a,b)
  482. #define IDirect3DDevice9_GetLightEnable(p,a,b)    (p)->GetLightEnable(a,b)
  483. #define IDirect3DDevice9_SetClipPlane(p,a,b)    (p)->SetClipPlane(a,b)
  484. #define IDirect3DDevice9_GetClipPlane(p,a,b)    (p)->GetClipPlane(a,b)
  485. #define IDirect3DDevice9_SetRenderState(p,a,b)    (p)->SetRenderState(a,b)
  486. #define IDirect3DDevice9_GetRenderState(p,a,b)    (p)->GetRenderState(a,b)
  487. #define IDirect3DDevice9_CreateStateBlock(p,a,b)    (p)->CreateStateBlock(a,b)
  488. #define IDirect3DDevice9_BeginStateBlock(p)    (p)->BeginStateBlock()
  489. #define IDirect3DDevice9_EndStateBlock(p,a)    (p)->EndStateBlock(a)
  490. #define IDirect3DDevice9_SetClipStatus(p,a)    (p)->SetClipStatus(a)
  491. #define IDirect3DDevice9_GetClipStatus(p,a)    (p)->GetClipStatus(a)
  492. #define IDirect3DDevice9_GetTexture(p,a,b)    (p)->GetTexture(a,b)
  493. #define IDirect3DDevice9_SetTexture(p,a,b)    (p)->SetTexture(a,b)
  494. #define IDirect3DDevice9_GetTextureStageState(p,a,b,c)    (p)->GetTextureStageState(a,b,c)
  495. #define IDirect3DDevice9_SetTextureStageState(p,a,b,c)    (p)->SetTextureStageState(a,b,c)
  496. #define IDirect3DDevice9_GetSamplerState(p,a,b,c)    (p)->GetSamplerState(a,b,c)
  497. #define IDirect3DDevice9_SetSamplerState(p,a,b,c)    (p)->SetSamplerState(a,b,c)
  498. #define IDirect3DDevice9_ValidateDevice(p,a)    (p)->ValidateDevice(a)
  499. #define IDirect3DDevice9_SetPaletteEntries(p,a,b)    (p)->SetPaletteEntries(a,b)
  500. #define IDirect3DDevice9_GetPaletteEntries(p,a,b)    (p)->GetPaletteEntries(a,b)
  501. #define IDirect3DDevice9_SetCurrentTexturePalette(p,a)    (p)->SetCurrentTexturePalette(a)
  502. #define IDirect3DDevice9_GetCurrentTexturePalette(p,a)    (p)->GetCurrentTexturePalette(a)
  503. #define IDirect3DDevice9_SetScissorRect(p,a)    (p)->SetScissorRect(a)
  504. #define IDirect3DDevice9_GetScissorRect(p,a)    (p)->GetScissorRect(a)
  505. #define IDirect3DDevice9_SetSoftwareVertexProcessing(p,a)    (p)->SetSoftwareVertexProcessing(a)
  506. #define IDirect3DDevice9_GetSoftwareVertexProcessing(p)    (p)->GetSoftwareVertexProcessing()
  507. #define IDirect3DDevice9_SetNPatchMode(p,a)    (p)->SetNPatchMode(a)
  508. #define IDirect3DDevice9_GetNPatchMode(p)    (p)->GetNPatchMode()
  509. #define IDirect3DDevice9_DrawPrimitive(p,a,b,c)    (p)->DrawPrimitive(a,b,c)
  510. #define IDirect3DDevice9_DrawIndexedPrimitive(p,a,b,c,d,e,f)    (p)->DrawIndexedPrimitive(a,b,c,d,e,f)
  511. #define IDirect3DDevice9_DrawPrimitiveUP(p,a,b,c,d)    (p)->DrawPrimitiveUP(a,b,c,d)
  512. #define IDirect3DDevice9_DrawIndexedPrimitiveUP(p,a,b,c,d,e,f,g,h)    (p)->DrawIndexedPrimitiveUP(a,b,c,d,e,f,g,h)
  513. #define IDirect3DDevice9_ProcessVertices(p,a,b,c,d,e,f)    (p)->ProcessVertices(a,b,c,d,e,f)
  514. #define IDirect3DDevice9_CreateVertexDeclaration(p,a,b)    (p)->CreateVertexDeclaration(a,b)
  515. #define IDirect3DDevice9_SetVertexDeclaration(p,a)    (p)->SetVertexDeclaration(a)
  516. #define IDirect3DDevice9_GetVertexDeclaration(p,a)    (p)->GetVertexDeclaration(a)
  517. #define IDirect3DDevice9_SetFVF(p,a)    (p)->SetFVF(a)
  518. #define IDirect3DDevice9_GetFVF(p,a)    (p)->GetFVF(a)
  519. #define IDirect3DDevice9_CreateVertexShader(p,a,b)    (p)->CreateVertexShader(a,b)
  520. #define IDirect3DDevice9_SetVertexShader(p,a)    (p)->SetVertexShader(a)
  521. #define IDirect3DDevice9_GetVertexShader(p,a)    (p)->GetVertexShader(a)
  522. #define IDirect3DDevice9_SetVertexShaderConstantF(p,a,b,c)    (p)->SetVertexShaderConstantF(a,b,c)
  523. #define IDirect3DDevice9_GetVertexShaderConstantF(p,a,b,c)    (p)->GetVertexShaderConstantF(a,b,c)
  524. #define IDirect3DDevice9_SetVertexShaderConstantI(p,a,b,c)    (p)->SetVertexShaderConstantI(a,b,c)
  525. #define IDirect3DDevice9_GetVertexShaderConstantI(p,a,b,c)    (p)->GetVertexShaderConstantI(a,b,c)
  526. #define IDirect3DDevice9_SetVertexShaderConstantB(p,a,b,c)    (p)->SetVertexShaderConstantB(a,b,c)
  527. #define IDirect3DDevice9_GetVertexShaderConstantB(p,a,b,c)    (p)->GetVertexShaderConstantB(a,b,c)
  528. #define IDirect3DDevice9_SetStreamSource(p,a,b,c,d)    (p)->SetStreamSource(a,b,c,d)
  529. #define IDirect3DDevice9_GetStreamSource(p,a,b,c,d)    (p)->GetStreamSource(a,b,c,d)
  530. #define IDirect3DDevice9_SetStreamSourceFreq(p,a,b)    (p)->SetStreamSourceFreq(a,b)
  531. #define IDirect3DDevice9_GetStreamSourceFreq(p,a,b)    (p)->GetStreamSourceFreq(a,b)
  532. #define IDirect3DDevice9_SetIndices(p,a)    (p)->SetIndices(a)
  533. #define IDirect3DDevice9_GetIndices(p,a)    (p)->GetIndices(a)
  534. #define IDirect3DDevice9_CreatePixelShader(p,a,b)    (p)->CreatePixelShader(a,b)
  535. #define IDirect3DDevice9_SetPixelShader(p,a)    (p)->SetPixelShader(a)
  536. #define IDirect3DDevice9_GetPixelShader(p,a)    (p)->GetPixelShader(a)
  537. #define IDirect3DDevice9_SetPixelShaderConstantF(p,a,b,c)    (p)->SetPixelShaderConstantF(a,b,c)
  538. #define IDirect3DDevice9_GetPixelShaderConstantF(p,a,b,c)    (p)->GetPixelShaderConstantF(a,b,c)
  539. #define IDirect3DDevice9_SetPixelShaderConstantI(p,a,b,c)    (p)->SetPixelShaderConstantI(a,b,c)
  540. #define IDirect3DDevice9_GetPixelShaderConstantI(p,a,b,c)    (p)->GetPixelShaderConstantI(a,b,c)
  541. #define IDirect3DDevice9_SetPixelShaderConstantB(p,a,b,c)    (p)->SetPixelShaderConstantB(a,b,c)
  542. #define IDirect3DDevice9_GetPixelShaderConstantB(p,a,b,c)    (p)->GetPixelShaderConstantB(a,b,c)
  543. #define IDirect3DDevice9_DrawRectPatch(p,a,b,c)    (p)->DrawRectPatch(a,b,c)
  544. #define IDirect3DDevice9_DrawTriPatch(p,a,b,c)    (p)->DrawTriPatch(a,b,c)
  545. #define IDirect3DDevice9_DeletePatch(p,a)    (p)->DeletePatch(a)
  546. #define IDirect3DDevice9_CreateQuery(p,a,b)    (p)->CreateQuery(a,b)
  547. #endif
  548.  
  549. #undef INTERFACE
  550. #define INTERFACE IDirect3DVolume9
  551. DECLARE_INTERFACE_(IDirect3DVolume9,IUnknown)
  552. {
  553.     STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
  554.     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  555.     STDMETHOD_(ULONG,Release)(THIS) PURE;
  556.     STDMETHOD(GetDevice)(THIS_ IDirect3DDevice9**) PURE;
  557.     STDMETHOD(SetPrivateData)(THIS_ REFGUID,CONST void*,DWORD,DWORD) PURE;
  558.     STDMETHOD(GetPrivateData)(THIS_ REFGUID,void*,DWORD*) PURE;
  559.     STDMETHOD(FreePrivateData)(THIS_ REFGUID) PURE;
  560.     STDMETHOD(GetContainer)(THIS_ REFIID,void**) PURE;
  561.     STDMETHOD(GetDesc)(THIS_ D3DVOLUME_DESC*) PURE;
  562.     STDMETHOD(LockBox)(THIS_ D3DLOCKED_BOX*,CONST D3DBOX*,DWORD) PURE;
  563.     STDMETHOD(UnlockBox)(THIS) PURE;
  564. };
  565. typedef struct IDirect3DVolume9 *LPDIRECT3DVOLUME9, *PDIRECT3DVOLUME9;
  566.  
  567. #if !defined(__cplusplus) || defined(CINTERFACE)
  568. #define IDirect3DVolume9_QueryInterface(p,a,b)    (p)->lpVtbl->QueryInterface(p,a,b)
  569. #define IDirect3DVolume9_AddRef(p)    (p)->lpVtbl->AddRef(p)
  570. #define IDirect3DVolume9_Release(p)    (p)->lpVtbl->Release(p)
  571. #define IDirect3DVolume9_GetDevice(p,a)    (p)->lpVtbl->GetDevice(p,a)
  572. #define IDirect3DVolume9_SetPrivateData(p,a,b,c,d)    (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
  573. #define IDirect3DVolume9_GetPrivateData(p,a,b,c)    (p)->lpVtbl->GetPrivateData(p,a,b,c)
  574. #define IDirect3DVolume9_FreePrivateData(p,a)    (p)->lpVtbl->FreePrivateData(p,a)
  575. #define IDirect3DVolume9_GetContainer(p,a,b)    (p)->lpVtbl->GetContainer(p,a,b)
  576. #define IDirect3DVolume9_GetDesc(p,a)    (p)->lpVtbl->GetDesc(p,a)
  577. #define IDirect3DVolume9_LockBox(p,a,b,c)    (p)->lpVtbl->LockBox(p,a,b,c)
  578. #define IDirect3DVolume9_UnlockBox(p)    (p)->lpVtbl->UnlockBox(p)
  579. #else
  580. #define IDirect3DVolume9_QueryInterface(p,a,b)    (p)->QueryInterface(a,b)
  581. #define IDirect3DVolume9_AddRef(p)    (p)->AddRef()
  582. #define IDirect3DVolume9_Release(p)    (p)->Release()
  583. #define IDirect3DVolume9_GetDevice(p,a)    (p)->GetDevice(a)
  584. #define IDirect3DVolume9_SetPrivateData(p,a,b,c,d)    (p)->SetPrivateData(a,b,c,d)
  585. #define IDirect3DVolume9_GetPrivateData(p,a,b,c)    (p)->GetPrivateData(a,b,c)
  586. #define IDirect3DVolume9_FreePrivateData(p,a)    (p)->FreePrivateData(a)
  587. #define IDirect3DVolume9_GetContainer(p,a,b)    (p)->GetContainer(a,b)
  588. #define IDirect3DVolume9_GetDesc(p,a)    (p)->GetDesc(a)
  589. #define IDirect3DVolume9_LockBox(p,a,b,c)    (p)->LockBox(a,b,c)
  590. #define IDirect3DVolume9_UnlockBox(p)    (p)->UnlockBox()
  591. #endif
  592.  
  593. #undef INTERFACE
  594. #define INTERFACE IDirect3DSwapChain9
  595. DECLARE_INTERFACE_(IDirect3DSwapChain9,IUnknown)
  596. {
  597.     STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
  598.     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  599.     STDMETHOD_(ULONG,Release)(THIS) PURE;
  600.     STDMETHOD(Present)(THIS_ CONST RECT*,CONST RECT*,HWND,CONST RGNDATA*,DWORD) PURE;
  601.     STDMETHOD(GetFrontBufferData)(THIS_ IDirect3DSurface9*) PURE;
  602.     STDMETHOD(GetBackBuffer)(THIS_ UINT,D3DBACKBUFFER_TYPE,IDirect3DSurface9**) PURE;
  603.     STDMETHOD(GetRasterStatus)(THIS_ D3DRASTER_STATUS*) PURE;
  604.     STDMETHOD(GetDisplayMode)(THIS_ D3DDISPLAYMODE*) PURE;
  605.     STDMETHOD(GetDevice)(THIS_ IDirect3DDevice9**) PURE;
  606.     STDMETHOD(GetPresentParameters)(THIS_ D3DPRESENT_PARAMETERS*) PURE;
  607. };
  608. typedef struct IDirect3DSwapChain9 *LPDIRECT3DSWAPCHAIN9, *PDIRECT3DSWAPCHAIN9;
  609.  
  610. #if !defined(__cplusplus) || defined(CINTERFACE)
  611. #define IDirect3DSwapChain9_QueryInterface(p,a,b)    (p)->lpVtbl->QueryInterface(p,a,b)
  612. #define IDirect3DSwapChain9_AddRef(p)    (p)->lpVtbl->AddRef(p)
  613. #define IDirect3DSwapChain9_Release(p)    (p)->lpVtbl->Release(p)
  614. #define IDirect3DSwapChain9_Present(p,a,b,c,d,e)    (p)->lpVtbl->Present(p,a,b,c,d,e)
  615. #define IDirect3DSwapChain9_GetFrontBufferData(p,a)    (p)->lpVtbl->GetFrontBufferData(p,a)
  616. #define IDirect3DSwapChain9_GetBackBuffer(p,a,b,c)    (p)->lpVtbl->GetBackBuffer(p,a,b,c)
  617. #define IDirect3DSwapChain9_GetRasterStatus(p,a)    (p)->lpVtbl->GetRasterStatus(p,a)
  618. #define IDirect3DSwapChain9_GetDisplayMode(p,a)    (p)->lpVtbl->GetDisplayMode(p,a)
  619. #define IDirect3DSwapChain9_GetDevice(p,a)    (p)->lpVtbl->GetDevice(p,a)
  620. #define IDirect3DSwapChain9_GetPresentParameters(p,a)    (p)->lpVtbl->GetPresentParameters(p,a)
  621. #else
  622. #define IDirect3DSwapChain9_QueryInterface(p,a,b)    (p)->QueryInterface(a,b)
  623. #define IDirect3DSwapChain9_AddRef(p)    (p)->AddRef()
  624. #define IDirect3DSwapChain9_Release(p)    (p)->Release()
  625. #define IDirect3DSwapChain9_Present(p,a,b,c,d,e)    (p)->Present(a,b,c,d,e)
  626. #define IDirect3DSwapChain9_GetFrontBufferData(p,a)    (p)->GetFrontBufferData(a)
  627. #define IDirect3DSwapChain9_GetBackBuffer(p,a,b,c)    (p)->GetBackBuffer(a,b,c)
  628. #define IDirect3DSwapChain9_GetRasterStatus(p,a)    (p)->GetRasterStatus(a)
  629. #define IDirect3DSwapChain9_GetDisplayMode(p,a)    (p)->GetDisplayMode(a)
  630. #define IDirect3DSwapChain9_GetDevice(p,a)    (p)->GetDevice(a)
  631. #define IDirect3DSwapChain9_GetPresentParameters(p,a)    (p)->GetPresentParameters(a)
  632. #endif
  633.  
  634. #undef INTERFACE
  635. #define INTERFACE IDirect3DResource9
  636. DECLARE_INTERFACE_(IDirect3DResource9,IUnknown)
  637. {
  638.     STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
  639.     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  640.     STDMETHOD_(ULONG,Release)(THIS) PURE;
  641.     STDMETHOD(GetDevice)(THIS_ IDirect3DDevice9**) PURE;
  642.     STDMETHOD(SetPrivateData)(THIS_ REFGUID,CONST void*,DWORD,DWORD) PURE;
  643.     STDMETHOD(GetPrivateData)(THIS_ REFGUID,void*,DWORD*) PURE;
  644.     STDMETHOD(FreePrivateData)(THIS_ REFGUID) PURE;
  645.     STDMETHOD_(DWORD,SetPriority)(THIS_ DWORD) PURE;
  646.     STDMETHOD_(DWORD,GetPriority)(THIS) PURE;
  647.     STDMETHOD_(void,PreLoad)(THIS) PURE;
  648.     STDMETHOD_(D3DRESOURCETYPE,GetType)(THIS) PURE;
  649. };
  650. typedef struct IDirect3DResource9 *LPDIRECT3DRESOURCE9, *PDIRECT3DRESOURCE9;
  651.  
  652. #if !defined(__cplusplus) || defined(CINTERFACE)
  653. #define IDirect3DResource9_QueryInterface(p,a,b)    (p)->lpVtbl->QueryInterface(p,a,b)
  654. #define IDirect3DResource9_AddRef(p)    (p)->lpVtbl->AddRef(p)
  655. #define IDirect3DResource9_Release(p)    (p)->lpVtbl->Release(p)
  656. #define IDirect3DResource9_GetDevice(p,a)    (p)->lpVtbl->GetDevice(p,a)
  657. #define IDirect3DResource9_SetPrivateData(p,a,b,c,d)    (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
  658. #define IDirect3DResource9_GetPrivateData(p,a,b,c)    (p)->lpVtbl->GetPrivateData(p,a,b,c)
  659. #define IDirect3DResource9_FreePrivateData(p,a)    (p)->lpVtbl->FreePrivateData(p,a)
  660. #define IDirect3DResource9_SetPriority(p,a)    (p)->lpVtbl->SetPriority(p,a)
  661. #define IDirect3DResource9_GetPriority(p)    (p)->lpVtbl->GetPriority(p)
  662. #define IDirect3DResource9_PreLoad(p)    (p)->lpVtbl->PreLoad(p)
  663. #define IDirect3DResource9_GetType(p)    (p)->lpVtbl->GetType(p)
  664. #else
  665. #define IDirect3DResource9_QueryInterface(p,a,b)    (p)->QueryInterface(a,b)
  666. #define IDirect3DResource9_AddRef(p)    (p)->AddRef()
  667. #define IDirect3DResource9_Release(p)    (p)->Release()
  668. #define IDirect3DResource9_GetDevice(p,a)    (p)->GetDevice(a)
  669. #define IDirect3DResource9_SetPrivateData(p,a,b,c,d)    (p)->SetPrivateData(a,b,c,d)
  670. #define IDirect3DResource9_GetPrivateData(p,a,b,c)    (p)->GetPrivateData(a,b,c)
  671. #define IDirect3DResource9_FreePrivateData(p,a)    (p)->FreePrivateData(a)
  672. #define IDirect3DResource9_SetPriority(p,a)    (p)->SetPriority(a)
  673. #define IDirect3DResource9_GetPriority(p)    (p)->GetPriority()
  674. #define IDirect3DResource9_PreLoad(p)    (p)->PreLoad()
  675. #define IDirect3DResource9_GetType(p)    (p)->GetType()
  676. #endif
  677.  
  678. #undef INTERFACE
  679. #define INTERFACE IDirect3DSurface9
  680. DECLARE_INTERFACE_(IDirect3DSurface9,IDirect3DResource9)
  681. {
  682.     STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
  683.     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  684.     STDMETHOD_(ULONG,Release)(THIS) PURE;
  685.     STDMETHOD(GetDevice)(THIS_ IDirect3DDevice9**) PURE;
  686.     STDMETHOD(SetPrivateData)(THIS_ REFGUID,CONST void*,DWORD,DWORD) PURE;
  687.     STDMETHOD(GetPrivateData)(THIS_ REFGUID,void*,DWORD*) PURE;
  688.     STDMETHOD(FreePrivateData)(THIS_ REFGUID) PURE;
  689.     STDMETHOD_(DWORD,SetPriority)(THIS_ DWORD) PURE;
  690.     STDMETHOD_(DWORD,GetPriority)(THIS) PURE;
  691.     STDMETHOD_(void,PreLoad)(THIS) PURE;
  692.     STDMETHOD_(D3DRESOURCETYPE,GetType)(THIS) PURE;
  693.     STDMETHOD(GetContainer)(THIS_ REFIID,void**) PURE;
  694.     STDMETHOD(GetDesc)(THIS_ D3DSURFACE_DESC*) PURE;
  695.     STDMETHOD(LockRect)(THIS_ D3DLOCKED_RECT*,CONST RECT*,DWORD) PURE;
  696.     STDMETHOD(UnlockRect)(THIS) PURE;
  697.     STDMETHOD(GetDC)(THIS_ HDC*) PURE;
  698.     STDMETHOD(ReleaseDC)(THIS_ HDC) PURE;
  699. };
  700. typedef struct IDirect3DSurface9 *LPDIRECT3DSURFACE9, *PDIRECT3DSURFACE9;
  701.  
  702. #if !defined(__cplusplus) || defined(CINTERFACE)
  703. #define IDirect3DSurface9_QueryInterface(p,a,b)    (p)->lpVtbl->QueryInterface(p,a,b)
  704. #define IDirect3DSurface9_AddRef(p)    (p)->lpVtbl->AddRef(p)
  705. #define IDirect3DSurface9_Release(p)    (p)->lpVtbl->Release(p)
  706. #define IDirect3DSurface9_GetDevice(p,a)    (p)->lpVtbl->GetDevice(p,a)
  707. #define IDirect3DSurface9_SetPrivateData(p,a,b,c,d)    (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
  708. #define IDirect3DSurface9_GetPrivateData(p,a,b,c)    (p)->lpVtbl->GetPrivateData(p,a,b,c)
  709. #define IDirect3DSurface9_FreePrivateData(p,a)    (p)->lpVtbl->FreePrivateData(p,a)
  710. #define IDirect3DSurface9_SetPriority(p,a)    (p)->lpVtbl->SetPriority(p,a)
  711. #define IDirect3DSurface9_GetPriority(p)    (p)->lpVtbl->GetPriority(p)
  712. #define IDirect3DSurface9_PreLoad(p)    (p)->lpVtbl->PreLoad(p)
  713. #define IDirect3DSurface9_GetType(p)    (p)->lpVtbl->GetType(p)
  714. #define IDirect3DSurface9_GetContainer(p,a,b)    (p)->lpVtbl->GetContainer(p,a,b)
  715. #define IDirect3DSurface9_GetDesc(p,a)    (p)->lpVtbl->GetDesc(p,a)
  716. #define IDirect3DSurface9_LockRect(p,a,b,c)    (p)->lpVtbl->LockRect(p,a,b,c)
  717. #define IDirect3DSurface9_UnlockRect(p)    (p)->lpVtbl->UnlockRect(p)
  718. #define IDirect3DSurface9_GetDC(p,a)    (p)->lpVtbl->GetDC(p,a)
  719. #define IDirect3DSurface9_ReleaseDC(p,a)    (p)->lpVtbl->ReleaseDC(p,a)
  720. #else
  721. #define IDirect3DSurface9_QueryInterface(p,a,b)    (p)->QueryInterface(a,b)
  722. #define IDirect3DSurface9_AddRef(p)    (p)->AddRef()
  723. #define IDirect3DSurface9_Release(p)    (p)->Release()
  724. #define IDirect3DSurface9_GetDevice(p,a)    (p)->GetDevice(a)
  725. #define IDirect3DSurface9_SetPrivateData(p,a,b,c,d)    (p)->SetPrivateData(a,b,c,d)
  726. #define IDirect3DSurface9_GetPrivateData(p,a,b,c)    (p)->GetPrivateData(a,b,c)
  727. #define IDirect3DSurface9_FreePrivateData(p,a)    (p)->FreePrivateData(a)
  728. #define IDirect3DSurface9_SetPriority(p,a)    (p)->SetPriority(a)
  729. #define IDirect3DSurface9_GetPriority(p)    (p)->GetPriority()
  730. #define IDirect3DSurface9_PreLoad(p)    (p)->PreLoad()
  731. #define IDirect3DSurface9_GetType(p)    (p)->GetType()
  732. #define IDirect3DSurface9_GetContainer(p,a,b)    (p)->GetContainer(a,b)
  733. #define IDirect3DSurface9_GetDesc(p,a)    (p)->GetDesc(a)
  734. #define IDirect3DSurface9_LockRect(p,a,b,c)    (p)->LockRect(a,b,c)
  735. #define IDirect3DSurface9_UnlockRect(p)    (p)->UnlockRect()
  736. #define IDirect3DSurface9_GetDC(p,a)    (p)->GetDC(a)
  737. #define IDirect3DSurface9_ReleaseDC(p,a)    (p)->ReleaseDC(a)
  738. #endif
  739.  
  740. #undef INTERFACE
  741. #define INTERFACE IDirect3DVertexBuffer9
  742. DECLARE_INTERFACE_(IDirect3DVertexBuffer9,IDirect3DResource9)
  743. {
  744.     STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
  745.     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  746.     STDMETHOD_(ULONG,Release)(THIS) PURE;
  747.     STDMETHOD(GetDevice)(THIS_ IDirect3DDevice9**) PURE;
  748.     STDMETHOD(SetPrivateData)(THIS_ REFGUID,CONST void*,DWORD,DWORD) PURE;
  749.     STDMETHOD(GetPrivateData)(THIS_ REFGUID,void*,DWORD*) PURE;
  750.     STDMETHOD(FreePrivateData)(THIS_ REFGUID) PURE;
  751.     STDMETHOD_(DWORD,SetPriority)(THIS_ DWORD) PURE;
  752.     STDMETHOD_(DWORD,GetPriority)(THIS) PURE;
  753.     STDMETHOD_(void,PreLoad)(THIS) PURE;
  754.     STDMETHOD_(D3DRESOURCETYPE,GetType)(THIS) PURE;
  755.     STDMETHOD(Lock)(THIS_ UINT,UINT,void**,DWORD) PURE;
  756.     STDMETHOD(Unlock)(THIS) PURE;
  757.     STDMETHOD(GetDesc)(THIS_ D3DVERTEXBUFFER_DESC*) PURE;
  758. };
  759. typedef struct IDirect3DVertexBuffer9 *LPDIRECT3DVERTEXBUFFER9, *PDIRECT3DVERTEXBUFFER9;
  760.  
  761. #if !defined(__cplusplus) || defined(CINTERFACE)
  762. #define IDirect3DVertexBuffer9_QueryInterface(p,a,b)    (p)->lpVtbl->QueryInterface(p,a,b)
  763. #define IDirect3DVertexBuffer9_AddRef(p)    (p)->lpVtbl->AddRef(p)
  764. #define IDirect3DVertexBuffer9_Release(p)    (p)->lpVtbl->Release(p)
  765. #define IDirect3DVertexBuffer9_GetDevice(p,a)    (p)->lpVtbl->GetDevice(p,a)
  766. #define IDirect3DVertexBuffer9_SetPrivateData(p,a,b,c,d)    (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
  767. #define IDirect3DVertexBuffer9_GetPrivateData(p,a,b,c)    (p)->lpVtbl->GetPrivateData(p,a,b,c)
  768. #define IDirect3DVertexBuffer9_FreePrivateData(p,a)    (p)->lpVtbl->FreePrivateData(p,a)
  769. #define IDirect3DVertexBuffer9_SetPriority(p,a)    (p)->lpVtbl->SetPriority(p,a)
  770. #define IDirect3DVertexBuffer9_GetPriority(p)    (p)->lpVtbl->GetPriority(p)
  771. #define IDirect3DVertexBuffer9_PreLoad(p)    (p)->lpVtbl->PreLoad(p)
  772. #define IDirect3DVertexBuffer9_GetType(p)    (p)->lpVtbl->GetType(p)
  773. #define IDirect3DVertexBuffer9_Lock(p,a,b,c,d)    (p)->lpVtbl->Lock(p,a,b,c,d)
  774. #define IDirect3DVertexBuffer9_Unlock(p)    (p)->lpVtbl->Unlock(p)
  775. #define IDirect3DVertexBuffer9_GetDesc(p,a)    (p)->lpVtbl->GetDesc(p,a)
  776. #else
  777. #define IDirect3DVertexBuffer9_QueryInterface(p,a,b)    (p)->QueryInterface(a,b)
  778. #define IDirect3DVertexBuffer9_AddRef(p)    (p)->AddRef()
  779. #define IDirect3DVertexBuffer9_Release(p)    (p)->Release()
  780. #define IDirect3DVertexBuffer9_GetDevice(p,a)    (p)->GetDevice(a)
  781. #define IDirect3DVertexBuffer9_SetPrivateData(p,a,b,c,d)    (p)->SetPrivateData(a,b,c,d)
  782. #define IDirect3DVertexBuffer9_GetPrivateData(p,a,b,c)    (p)->GetPrivateData(a,b,c)
  783. #define IDirect3DVertexBuffer9_FreePrivateData(p,a)    (p)->FreePrivateData(a)
  784. #define IDirect3DVertexBuffer9_SetPriority(p,a)    (p)->SetPriority(a)
  785. #define IDirect3DVertexBuffer9_GetPriority(p)    (p)->GetPriority()
  786. #define IDirect3DVertexBuffer9_PreLoad(p)    (p)->PreLoad()
  787. #define IDirect3DVertexBuffer9_GetType(p)    (p)->GetType()
  788. #define IDirect3DVertexBuffer9_Lock(p,a,b,c,d)    (p)->Lock(a,b,c,d)
  789. #define IDirect3DVertexBuffer9_Unlock(p)    (p)->Unlock()
  790. #define IDirect3DVertexBuffer9_GetDesc(p,a)    (p)->GetDesc(a)
  791. #endif
  792.  
  793. #undef INTERFACE
  794. #define INTERFACE IDirect3DIndexBuffer9
  795. DECLARE_INTERFACE_(IDirect3DIndexBuffer9,IDirect3DResource9)
  796. {
  797.     STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
  798.     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  799.     STDMETHOD_(ULONG,Release)(THIS) PURE;
  800.     STDMETHOD(GetDevice)(THIS_ IDirect3DDevice9**) PURE;
  801.     STDMETHOD(SetPrivateData)(THIS_ REFGUID,CONST void*,DWORD,DWORD) PURE;
  802.     STDMETHOD(GetPrivateData)(THIS_ REFGUID,void*,DWORD*) PURE;
  803.     STDMETHOD(FreePrivateData)(THIS_ REFGUID) PURE;
  804.     STDMETHOD_(DWORD,SetPriority)(THIS_ DWORD) PURE;
  805.     STDMETHOD_(DWORD,GetPriority)(THIS) PURE;
  806.     STDMETHOD_(void,PreLoad)(THIS) PURE;
  807.     STDMETHOD_(D3DRESOURCETYPE,GetType)(THIS) PURE;
  808.     STDMETHOD(Lock)(THIS_ UINT,UINT,void**,DWORD) PURE;
  809.     STDMETHOD(Unlock)(THIS) PURE;
  810.     STDMETHOD(GetDesc)(THIS_ D3DINDEXBUFFER_DESC*) PURE;
  811. };
  812. typedef struct IDirect3DIndexBuffer9 *LPDIRECT3DINDEXBUFFER9, *PDIRECT3DINDEXBUFFER9;
  813.  
  814. #if !defined(__cplusplus) || defined(CINTERFACE)
  815. #define IDirect3DIndexBuffer9_QueryInterface(p,a,b)    (p)->lpVtbl->QueryInterface(p,a,b)
  816. #define IDirect3DIndexBuffer9_AddRef(p)    (p)->lpVtbl->AddRef(p)
  817. #define IDirect3DIndexBuffer9_Release(p)    (p)->lpVtbl->Release(p)
  818. #define IDirect3DIndexBuffer9_GetDevice(p,a)    (p)->lpVtbl->GetDevice(p,a)
  819. #define IDirect3DIndexBuffer9_SetPrivateData(p,a,b,c,d)    (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
  820. #define IDirect3DIndexBuffer9_GetPrivateData(p,a,b,c)    (p)->lpVtbl->GetPrivateData(p,a,b,c)
  821. #define IDirect3DIndexBuffer9_FreePrivateData(p,a)    (p)->lpVtbl->FreePrivateData(p,a)
  822. #define IDirect3DIndexBuffer9_SetPriority(p,a)    (p)->lpVtbl->SetPriority(p,a)
  823. #define IDirect3DIndexBuffer9_GetPriority(p)    (p)->lpVtbl->GetPriority(p)
  824. #define IDirect3DIndexBuffer9_PreLoad(p)    (p)->lpVtbl->PreLoad(p)
  825. #define IDirect3DIndexBuffer9_GetType(p)    (p)->lpVtbl->GetType(p)
  826. #define IDirect3DIndexBuffer9_Lock(p,a,b,c,d)    (p)->lpVtbl->Lock(p,a,b,c,d)
  827. #define IDirect3DIndexBuffer9_Unlock(p)    (p)->lpVtbl->Unlock(p)
  828. #define IDirect3DIndexBuffer9_GetDesc(p,a)    (p)->lpVtbl->GetDesc(p,a)
  829. #else
  830. #define IDirect3DIndexBuffer9_QueryInterface(p,a,b)    (p)->QueryInterface(a,b)
  831. #define IDirect3DIndexBuffer9_AddRef(p)    (p)->AddRef()
  832. #define IDirect3DIndexBuffer9_Release(p)    (p)->Release()
  833. #define IDirect3DIndexBuffer9_GetDevice(p,a)    (p)->GetDevice(a)
  834. #define IDirect3DIndexBuffer9_SetPrivateData(p,a,b,c,d)    (p)->SetPrivateData(a,b,c,d)
  835. #define IDirect3DIndexBuffer9_GetPrivateData(p,a,b,c)    (p)->GetPrivateData(a,b,c)
  836. #define IDirect3DIndexBuffer9_FreePrivateData(p,a)    (p)->FreePrivateData(a)
  837. #define IDirect3DIndexBuffer9_SetPriority(p,a)    (p)->SetPriority(a)
  838. #define IDirect3DIndexBuffer9_GetPriority(p)    (p)->GetPriority()
  839. #define IDirect3DIndexBuffer9_PreLoad(p)    (p)->PreLoad()
  840. #define IDirect3DIndexBuffer9_GetType(p)    (p)->GetType()
  841. #define IDirect3DIndexBuffer9_Lock(p,a,b,c,d)    (p)->Lock(a,b,c,d)
  842. #define IDirect3DIndexBuffer9_Unlock(p)    (p)->Unlock()
  843. #define IDirect3DIndexBuffer9_GetDesc(p,a)    (p)->GetDesc(a)
  844. #endif
  845.  
  846. #undef INTERFACE
  847. #define INTERFACE IDirect3DBaseTexture9
  848. DECLARE_INTERFACE_(IDirect3DBaseTexture9,IDirect3DResource9)
  849. {
  850.     STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
  851.     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  852.     STDMETHOD_(ULONG,Release)(THIS) PURE;
  853.     STDMETHOD(GetDevice)(THIS_ IDirect3DDevice9**) PURE;
  854.     STDMETHOD(SetPrivateData)(THIS_ REFGUID,CONST void*,DWORD,DWORD) PURE;
  855.     STDMETHOD(GetPrivateData)(THIS_ REFGUID,void*,DWORD*) PURE;
  856.     STDMETHOD(FreePrivateData)(THIS_ REFGUID) PURE;
  857.     STDMETHOD_(DWORD,SetPriority)(THIS_ DWORD) PURE;
  858.     STDMETHOD_(DWORD,GetPriority)(THIS) PURE;
  859.     STDMETHOD_(void,PreLoad)(THIS) PURE;
  860.     STDMETHOD_(D3DRESOURCETYPE,GetType)(THIS) PURE;
  861.     STDMETHOD_(DWORD,SetLOD)(THIS_ DWORD) PURE;
  862.     STDMETHOD_(DWORD,GetLOD)(THIS) PURE;
  863.     STDMETHOD_(DWORD,GetLevelCount)(THIS) PURE;
  864.     STDMETHOD(SetAutoGenFilterType)(THIS_ D3DTEXTUREFILTERTYPE) PURE;
  865.     STDMETHOD_(D3DTEXTUREFILTERTYPE,GetAutoGenFilterType)(THIS) PURE;
  866.     STDMETHOD_(void,GenerateMipSubLevels)(THIS) PURE;
  867. };
  868. typedef struct IDirect3DBaseTexture9 *LPDIRECT3DBASETEXTURE9, *PDIRECT3DBASETEXTURE9;
  869.  
  870. #if !defined(__cplusplus) || defined(CINTERFACE)
  871. #define IDirect3DBaseTexture9_QueryInterface(p,a,b)    (p)->lpVtbl->QueryInterface(p,a,b)
  872. #define IDirect3DBaseTexture9_AddRef(p)    (p)->lpVtbl->AddRef(p)
  873. #define IDirect3DBaseTexture9_Release(p)    (p)->lpVtbl->Release(p)
  874. #define IDirect3DBaseTexture9_GetDevice(p,a)    (p)->lpVtbl->GetDevice(p,a)
  875. #define IDirect3DBaseTexture9_SetPrivateData(p,a,b,c,d)    (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
  876. #define IDirect3DBaseTexture9_GetPrivateData(p,a,b,c)    (p)->lpVtbl->GetPrivateData(p,a,b,c)
  877. #define IDirect3DBaseTexture9_FreePrivateData(p,a)    (p)->lpVtbl->FreePrivateData(p,a)
  878. #define IDirect3DBaseTexture9_SetPriority(p,a)    (p)->lpVtbl->SetPriority(p,a)
  879. #define IDirect3DBaseTexture9_GetPriority(p)    (p)->lpVtbl->GetPriority(p)
  880. #define IDirect3DBaseTexture9_PreLoad(p)    (p)->lpVtbl->PreLoad(p)
  881. #define IDirect3DBaseTexture9_GetType(p)    (p)->lpVtbl->GetType(p)
  882. #define IDirect3DBaseTexture9_SetLOD(p,a)    (p)->lpVtbl->SetLOD(p,a)
  883. #define IDirect3DBaseTexture9_GetLOD(p)    (p)->lpVtbl->GetLOD(p)
  884. #define IDirect3DBaseTexture9_GetLevelCount(p)    (p)->lpVtbl->GetLevelCount(p)
  885. #define IDirect3DBaseTexture9_SetAutoGenFilterType(p,a)    (p)->lpVtbl->SetAutoGenFilterType(p,a)
  886. #define IDirect3DBaseTexture9_GetAutoGenFilterType(p)    (p)->lpVtbl->GetAutoGenFilterType(p)
  887. #define IDirect3DBaseTexture9_GenerateMipSubLevels(p)    (p)->lpVtbl->GenerateMipSubLevels(p)
  888. #else
  889. #define IDirect3DBaseTexture9_QueryInterface(p,a,b)    (p)->QueryInterface(a,b)
  890. #define IDirect3DBaseTexture9_AddRef(p)    (p)->AddRef()
  891. #define IDirect3DBaseTexture9_Release(p)    (p)->Release()
  892. #define IDirect3DBaseTexture9_GetDevice(p,a)    (p)->GetDevice(a)
  893. #define IDirect3DBaseTexture9_SetPrivateData(p,a,b,c,d)    (p)->SetPrivateData(a,b,c,d)
  894. #define IDirect3DBaseTexture9_GetPrivateData(p,a,b,c)    (p)->GetPrivateData(a,b,c)
  895. #define IDirect3DBaseTexture9_FreePrivateData(p,a)    (p)->FreePrivateData(a)
  896. #define IDirect3DBaseTexture9_SetPriority(p,a)    (p)->SetPriority(a)
  897. #define IDirect3DBaseTexture9_GetPriority(p)    (p)->GetPriority()
  898. #define IDirect3DBaseTexture9_PreLoad(p)    (p)->PreLoad()
  899. #define IDirect3DBaseTexture9_GetType(p)    (p)->GetType()
  900. #define IDirect3DBaseTexture9_SetLOD(p,a)    (p)->SetLOD(a)
  901. #define IDirect3DBaseTexture9_GetLOD(p)    (p)->GetLOD()
  902. #define IDirect3DBaseTexture9_GetLevelCount(p)    (p)->GetLevelCount()
  903. #define IDirect3DBaseTexture9_SetAutoGenFilterType(p,a)    (p)->SetAutoGenFilterType(a)
  904. #define IDirect3DBaseTexture9_GetAutoGenFilterType(p)    (p)->GetAutoGenFilterType()
  905. #define IDirect3DBaseTexture9_GenerateMipSubLevels(p)    (p)->GenerateMipSubLevels()
  906. #endif
  907.  
  908. #undef INTERFACE
  909. #define INTERFACE IDirect3DCubeTexture9
  910. DECLARE_INTERFACE_(IDirect3DCubeTexture9,IDirect3DBaseTexture9)
  911. {
  912.     STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
  913.     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  914.     STDMETHOD_(ULONG,Release)(THIS) PURE;
  915.     STDMETHOD(GetDevice)(THIS_ IDirect3DDevice9**) PURE;
  916.     STDMETHOD(SetPrivateData)(THIS_ REFGUID,CONST void*,DWORD,DWORD) PURE;
  917.     STDMETHOD(GetPrivateData)(THIS_ REFGUID,void*,DWORD*) PURE;
  918.     STDMETHOD(FreePrivateData)(THIS_ REFGUID) PURE;
  919.     STDMETHOD_(DWORD,SetPriority)(THIS_ DWORD) PURE;
  920.     STDMETHOD_(DWORD,GetPriority)(THIS) PURE;
  921.     STDMETHOD_(void,PreLoad)(THIS) PURE;
  922.     STDMETHOD_(D3DRESOURCETYPE,GetType)(THIS) PURE;
  923.     STDMETHOD_(DWORD,SetLOD)(THIS_ DWORD) PURE;
  924.     STDMETHOD_(DWORD,GetLOD)(THIS) PURE;
  925.     STDMETHOD_(DWORD,GetLevelCount)(THIS) PURE;
  926.     STDMETHOD(SetAutoGenFilterType)(THIS_ D3DTEXTUREFILTERTYPE) PURE;
  927.     STDMETHOD_(D3DTEXTUREFILTERTYPE,GetAutoGenFilterType)(THIS) PURE;
  928.     STDMETHOD_(void,GenerateMipSubLevels)(THIS) PURE;
  929.     STDMETHOD(GetLevelDesc)(THIS_ UINT,D3DSURFACE_DESC*) PURE; \
  930.     STDMETHOD(GetCubeMapSurface)(THIS_ D3DCUBEMAP_FACES,UINT,IDirect3DSurface9**) PURE; \
  931.     STDMETHOD(LockRect)(THIS_ D3DCUBEMAP_FACES,UINT,D3DLOCKED_RECT*,CONST RECT*,DWORD) PURE; \
  932.     STDMETHOD(UnlockRect)(THIS_ D3DCUBEMAP_FACES,UINT) PURE; \
  933.     STDMETHOD(AddDirtyRect)(THIS_ D3DCUBEMAP_FACES,CONST RECT*) PURE;
  934. };
  935. typedef struct IDirect3DCubeTexture9 *LPDIRECT3DCUBETEXTURE9, *PDIRECT3DCUBETEXTURE9;
  936.  
  937. #if !defined(__cplusplus) || defined(CINTERFACE)
  938. #define IDirect3DCubeTexture9_QueryInterface(p,a,b)    (p)->lpVtbl->QueryInterface(p,a,b)
  939. #define IDirect3DCubeTexture9_AddRef(p)    (p)->lpVtbl->AddRef(p)
  940. #define IDirect3DCubeTexture9_Release(p)    (p)->lpVtbl->Release(p)
  941. #define IDirect3DCubeTexture9_GetDevice(p,a)    (p)->lpVtbl->GetDevice(p,a)
  942. #define IDirect3DCubeTexture9_SetPrivateData(p,a,b,c,d)    (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
  943. #define IDirect3DCubeTexture9_GetPrivateData(p,a,b,c)    (p)->lpVtbl->GetPrivateData(p,a,b,c)
  944. #define IDirect3DCubeTexture9_FreePrivateData(p,a)    (p)->lpVtbl->FreePrivateData(p,a)
  945. #define IDirect3DCubeTexture9_SetPriority(p,a)    (p)->lpVtbl->SetPriority(p,a)
  946. #define IDirect3DCubeTexture9_GetPriority(p)    (p)->lpVtbl->GetPriority(p)
  947. #define IDirect3DCubeTexture9_PreLoad(p)    (p)->lpVtbl->PreLoad(p)
  948. #define IDirect3DCubeTexture9_GetType(p)    (p)->lpVtbl->GetType(p)
  949. #define IDirect3DCubeTexture9_SetLOD(p,a)    (p)->lpVtbl->SetLOD(p,a)
  950. #define IDirect3DCubeTexture9_GetLOD(p)    (p)->lpVtbl->GetLOD(p)
  951. #define IDirect3DCubeTexture9_GetLevelCount(p)    (p)->lpVtbl->GetLevelCount(p)
  952. #define IDirect3DCubeTexture9_SetAutoGenFilterType(p,a)    (p)->lpVtbl->SetAutoGenFilterType(p,a)
  953. #define IDirect3DCubeTexture9_GetAutoGenFilterType(p)    (p)->lpVtbl->GetAutoGenFilterType(p)
  954. #define IDirect3DCubeTexture9_GenerateMipSubLevels(p)    (p)->lpVtbl->GenerateMipSubLevels(p)
  955. #define IDirect3DCubeTexture9_GetLevelDesc(p,a,b)    (p)->lpVtbl->GetLevelDesc(p,a,b)
  956. #define IDirect3DCubeTexture9_GetCubeMapSurface(p,a,b,c)    (p)->lpVtbl->GetCubeMapSurface(p,a,b,c)
  957. #define IDirect3DCubeTexture9_LockRect(p,a,b,c,d,e)    (p)->lpVtbl->LockRect(p,a,b,c,d,e)
  958. #define IDirect3DCubeTexture9_UnlockRect(p,a,b)    (p)->lpVtbl->UnlockRect(p,a,b)
  959. #define IDirect3DCubeTexture9_AddDirtyRect(p,a,b)    (p)->lpVtbl->AddDirtyRect(p,a,b)
  960. #else
  961. #define IDirect3DCubeTexture9_QueryInterface(p,a,b)    (p)->QueryInterface(a,b)
  962. #define IDirect3DCubeTexture9_AddRef(p)    (p)->AddRef()
  963. #define IDirect3DCubeTexture9_Release(p)    (p)->Release()
  964. #define IDirect3DCubeTexture9_GetDevice(p,a)    (p)->GetDevice(a)
  965. #define IDirect3DCubeTexture9_SetPrivateData(p,a,b,c,d)    (p)->SetPrivateData(a,b,c,d)
  966. #define IDirect3DCubeTexture9_GetPrivateData(p,a,b,c)    (p)->GetPrivateData(a,b,c)
  967. #define IDirect3DCubeTexture9_FreePrivateData(p,a)    (p)->FreePrivateData(a)
  968. #define IDirect3DCubeTexture9_SetPriority(p,a)    (p)->SetPriority(a)
  969. #define IDirect3DCubeTexture9_GetPriority(p)    (p)->GetPriority()
  970. #define IDirect3DCubeTexture9_PreLoad(p)    (p)->PreLoad()
  971. #define IDirect3DCubeTexture9_GetType(p)    (p)->GetType()
  972. #define IDirect3DCubeTexture9_SetLOD(p,a)    (p)->SetLOD(a)
  973. #define IDirect3DCubeTexture9_GetLOD(p)    (p)->GetLOD()
  974. #define IDirect3DCubeTexture9_GetLevelCount(p)    (p)->GetLevelCount()
  975. #define IDirect3DCubeTexture9_SetAutoGenFilterType(p,a)    (p)->SetAutoGenFilterType(a)
  976. #define IDirect3DCubeTexture9_GetAutoGenFilterType(p)    (p)->GetAutoGenFilterType()
  977. #define IDirect3DCubeTexture9_GenerateMipSubLevels(p)    (p)->GenerateMipSubLevels()
  978. #define IDirect3DCubeTexture9_GetLevelDesc(p,a,b)    (p)->GetLevelDesc(a,b)
  979. #define IDirect3DCubeTexture9_GetCubeMapSurface(p,a,b,c)    (p)->GetCubeMapSurface(a,b,c)
  980. #define IDirect3DCubeTexture9_LockRect(p,a,b,c,d,e)    (p)->LockRect(a,b,c,d,e)
  981. #define IDirect3DCubeTexture9_UnlockRect(p,a,b)    (p)->UnlockRect(a,b)
  982. #define IDirect3DCubeTexture9_AddDirtyRect(p,a,b)    (p)->AddDirtyRect(a,b)
  983. #endif
  984.  
  985. #undef INTERFACE
  986. #define INTERFACE IDirect3DTexture9
  987. DECLARE_INTERFACE_(IDirect3DTexture9,IDirect3DBaseTexture9)
  988. {
  989.     STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
  990.     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  991.     STDMETHOD_(ULONG,Release)(THIS) PURE;
  992.     STDMETHOD(GetDevice)(THIS_ IDirect3DDevice9**) PURE;
  993.     STDMETHOD(SetPrivateData)(THIS_ REFGUID,CONST void*,DWORD,DWORD) PURE;
  994.     STDMETHOD(GetPrivateData)(THIS_ REFGUID,void*,DWORD*) PURE;
  995.     STDMETHOD(FreePrivateData)(THIS_ REFGUID) PURE;
  996.     STDMETHOD_(DWORD,SetPriority)(THIS_ DWORD) PURE;
  997.     STDMETHOD_(DWORD,GetPriority)(THIS) PURE;
  998.     STDMETHOD_(void,PreLoad)(THIS) PURE;
  999.     STDMETHOD_(D3DRESOURCETYPE,GetType)(THIS) PURE;
  1000.     STDMETHOD_(DWORD,SetLOD)(THIS_ DWORD) PURE;
  1001.     STDMETHOD_(DWORD,GetLOD)(THIS) PURE;
  1002.     STDMETHOD_(DWORD,GetLevelCount)(THIS) PURE;
  1003.     STDMETHOD(SetAutoGenFilterType)(THIS_ D3DTEXTUREFILTERTYPE) PURE;
  1004.     STDMETHOD_(D3DTEXTUREFILTERTYPE,GetAutoGenFilterType)(THIS) PURE;
  1005.     STDMETHOD_(void,GenerateMipSubLevels)(THIS) PURE;
  1006.     STDMETHOD(GetLevelDesc)(THIS_ UINT,D3DSURFACE_DESC*) PURE;
  1007.     STDMETHOD(GetSurfaceLevel)(THIS_ UINT,IDirect3DSurface9**) PURE;
  1008.     STDMETHOD(LockRect)(THIS_ UINT,D3DLOCKED_RECT*,CONST RECT*,DWORD) PURE;
  1009.     STDMETHOD(UnlockRect)(THIS_ UINT) PURE;
  1010.     STDMETHOD(AddDirtyRect)(THIS_ CONST RECT*) PURE;
  1011. };
  1012. typedef struct IDirect3DTexture9 *LPDIRECT3DTEXTURE9, *PDIRECT3DTEXTURE9;
  1013.  
  1014. #if !defined(__cplusplus) || defined(CINTERFACE)
  1015. #define IDirect3DTexture9_QueryInterface(p,a,b)    (p)->lpVtbl->QueryInterface(p,a,b)
  1016. #define IDirect3DTexture9_AddRef(p)    (p)->lpVtbl->AddRef(p)
  1017. #define IDirect3DTexture9_Release(p)    (p)->lpVtbl->Release(p)
  1018. #define IDirect3DTexture9_GetDevice(p,a)    (p)->lpVtbl->GetDevice(p,a)
  1019. #define IDirect3DTexture9_SetPrivateData(p,a,b,c,d)    (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
  1020. #define IDirect3DTexture9_GetPrivateData(p,a,b,c)    (p)->lpVtbl->GetPrivateData(p,a,b,c)
  1021. #define IDirect3DTexture9_FreePrivateData(p,a)    (p)->lpVtbl->FreePrivateData(p,a)
  1022. #define IDirect3DTexture9_SetPriority(p,a)    (p)->lpVtbl->SetPriority(p,a)
  1023. #define IDirect3DTexture9_GetPriority(p)    (p)->lpVtbl->GetPriority(p)
  1024. #define IDirect3DTexture9_PreLoad(p)    (p)->lpVtbl->PreLoad(p)
  1025. #define IDirect3DTexture9_GetType(p)    (p)->lpVtbl->GetType(p)
  1026. #define IDirect3DTexture9_SetLOD(p,a)    (p)->lpVtbl->SetLOD(p,a)
  1027. #define IDirect3DTexture9_GetLOD(p)    (p)->lpVtbl->GetLOD(p)
  1028. #define IDirect3DTexture9_GetLevelCount(p)    (p)->lpVtbl->GetLevelCount(p)
  1029. #define IDirect3DTexture9_SetAutoGenFilterType(p,a)    (p)->lpVtbl->SetAutoGenFilterType(p,a)
  1030. #define IDirect3DTexture9_GetAutoGenFilterType(p)    (p)->lpVtbl->GetAutoGenFilterType(p)
  1031. #define IDirect3DTexture9_GenerateMipSubLevels(p)    (p)->lpVtbl->GenerateMipSubLevels(p)
  1032. #define IDirect3DTexture9_GetLevelDesc(p,a,b)    (p)->lpVtbl->GetLevelDesc(p,a,b)
  1033. #define IDirect3DTexture9_GetSurfaceLevel(p,a,b)    (p)->lpVtbl->GetSurfaceLevel(p,a,b)
  1034. #define IDirect3DTexture9_LockRect(p,a,b,c,d)    (p)->lpVtbl->LockRect(p,a,b,c,d)
  1035. #define IDirect3DTexture9_UnlockRect(p,a)    (p)->lpVtbl->UnlockRect(p,a)
  1036. #define IDirect3DTexture9_AddDirtyRect(p,a)    (p)->lpVtbl->AddDirtyRect(p,a)
  1037. #else
  1038. #define IDirect3DTexture9_QueryInterface(p,a,b)    (p)->QueryInterface(a,b)
  1039. #define IDirect3DTexture9_AddRef(p)    (p)->AddRef()
  1040. #define IDirect3DTexture9_Release(p)    (p)->Release()
  1041. #define IDirect3DTexture9_GetDevice(p,a)    (p)->GetDevice(a)
  1042. #define IDirect3DTexture9_SetPrivateData(p,a,b,c,d)    (p)->SetPrivateData(a,b,c,d)
  1043. #define IDirect3DTexture9_GetPrivateData(p,a,b,c)    (p)->GetPrivateData(a,b,c)
  1044. #define IDirect3DTexture9_FreePrivateData(p,a)    (p)->FreePrivateData(a)
  1045. #define IDirect3DTexture9_SetPriority(p,a)    (p)->SetPriority(a)
  1046. #define IDirect3DTexture9_GetPriority(p)    (p)->GetPriority()
  1047. #define IDirect3DTexture9_PreLoad(p)    (p)->PreLoad()
  1048. #define IDirect3DTexture9_GetType(p)    (p)->GetType()
  1049. #define IDirect3DTexture9_SetLOD(p,a)    (p)->SetLOD(a)
  1050. #define IDirect3DTexture9_GetLOD(p)    (p)->GetLOD()
  1051. #define IDirect3DTexture9_GetLevelCount(p)    (p)->GetLevelCount()
  1052. #define IDirect3DTexture9_SetAutoGenFilterType(p,a)    (p)->SetAutoGenFilterType(a)
  1053. #define IDirect3DTexture9_GetAutoGenFilterType(p)    (p)->GetAutoGenFilterType()
  1054. #define IDirect3DTexture9_GenerateMipSubLevels(p)    (p)->GenerateMipSubLevels()
  1055. #define IDirect3DTexture9_GetLevelDesc(p,a,b)    (p)->GetLevelDesc(a,b)
  1056. #define IDirect3DTexture9_GetSurfaceLevel(p,a,b)    (p)->GetSurfaceLevel(a,b)
  1057. #define IDirect3DTexture9_LockRect(p,a,b,c,d)    (p)->LockRect(a,b,c,d)
  1058. #define IDirect3DTexture9_UnlockRect(p,a)    (p)->UnlockRect(a)
  1059. #define IDirect3DTexture9_AddDirtyRect(p,a)    (p)->AddDirtyRect(a)
  1060. #endif
  1061.  
  1062. #undef INTERFACE
  1063. #define INTERFACE IDirect3DVolumeTexture9
  1064. DECLARE_INTERFACE_(IDirect3DVolumeTexture9,IDirect3DBaseTexture9)
  1065. {
  1066.     STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
  1067.     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  1068.     STDMETHOD_(ULONG,Release)(THIS) PURE;
  1069.     STDMETHOD(GetDevice)(THIS_ IDirect3DDevice9**) PURE;
  1070.     STDMETHOD(SetPrivateData)(THIS_ REFGUID,CONST void*,DWORD,DWORD) PURE;
  1071.     STDMETHOD(GetPrivateData)(THIS_ REFGUID,void*,DWORD*) PURE;
  1072.     STDMETHOD(FreePrivateData)(THIS_ REFGUID) PURE;
  1073.     STDMETHOD_(DWORD,SetPriority)(THIS_ DWORD) PURE;
  1074.     STDMETHOD_(DWORD,GetPriority)(THIS) PURE;
  1075.     STDMETHOD_(void,PreLoad)(THIS) PURE;
  1076.     STDMETHOD_(D3DRESOURCETYPE,GetType)(THIS) PURE;
  1077.     STDMETHOD_(DWORD,SetLOD)(THIS_ DWORD) PURE;
  1078.     STDMETHOD_(DWORD,GetLOD)(THIS) PURE;
  1079.     STDMETHOD_(DWORD,GetLevelCount)(THIS) PURE;
  1080.     STDMETHOD(SetAutoGenFilterType)(THIS_ D3DTEXTUREFILTERTYPE) PURE;
  1081.     STDMETHOD_(D3DTEXTUREFILTERTYPE,GetAutoGenFilterType)(THIS) PURE;
  1082.     STDMETHOD_(void,GenerateMipSubLevels)(THIS) PURE;
  1083.     STDMETHOD(GetLevelDesc)(THIS_ UINT,D3DVOLUME_DESC*) PURE;
  1084.     STDMETHOD(GetVolumeLevel)(THIS_ UINT,IDirect3DVolume9**) PURE;
  1085.     STDMETHOD(LockBox)(THIS_ UINT,D3DLOCKED_BOX*,CONST D3DBOX*,DWORD) PURE;
  1086.     STDMETHOD(UnlockBox)(THIS_ UINT) PURE;
  1087.     STDMETHOD(AddDirtyBox)(THIS_ CONST D3DBOX*) PURE;
  1088. };
  1089. typedef struct IDirect3DVolumeTexture9 *LPDIRECT3DVOLUMETEXTURE9, *PDIRECT3DVOLUMETEXTURE9;
  1090.  
  1091. #if !defined(__cplusplus) || defined(CINTERFACE)
  1092. #define IDirect3DVolumeTexture9_QueryInterface(p,a,b)    (p)->lpVtbl->QueryInterface(p,a,b)
  1093. #define IDirect3DVolumeTexture9_AddRef(p)    (p)->lpVtbl->AddRef(p)
  1094. #define IDirect3DVolumeTexture9_Release(p)    (p)->lpVtbl->Release(p)
  1095. #define IDirect3DVolumeTexture9_GetDevice(p,a)    (p)->lpVtbl->GetDevice(p,a)
  1096. #define IDirect3DVolumeTexture9_SetPrivateData(p,a,b,c,d)    (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
  1097. #define IDirect3DVolumeTexture9_GetPrivateData(p,a,b,c)    (p)->lpVtbl->GetPrivateData(p,a,b,c)
  1098. #define IDirect3DVolumeTexture9_FreePrivateData(p,a)    (p)->lpVtbl->FreePrivateData(p,a)
  1099. #define IDirect3DVolumeTexture9_SetPriority(p,a)    (p)->lpVtbl->SetPriority(p,a)
  1100. #define IDirect3DVolumeTexture9_GetPriority(p)    (p)->lpVtbl->GetPriority(p)
  1101. #define IDirect3DVolumeTexture9_PreLoad(p)    (p)->lpVtbl->PreLoad(p)
  1102. #define IDirect3DVolumeTexture9_GetType(p)    (p)->lpVtbl->GetType(p)
  1103. #define IDirect3DVolumeTexture9_SetLOD(p,a)    (p)->lpVtbl->SetLOD(p,a)
  1104. #define IDirect3DVolumeTexture9_GetLOD(p)    (p)->lpVtbl->GetLOD(p)
  1105. #define IDirect3DVolumeTexture9_GetLevelCount(p)    (p)->lpVtbl->GetLevelCount(p)
  1106. #define IDirect3DVolumeTexture9_SetAutoGenFilterType(p,a)    (p)->lpVtbl->SetAutoGenFilterType(p,a)
  1107. #define IDirect3DVolumeTexture9_GetAutoGenFilterType(p)    (p)->lpVtbl->GetAutoGenFilterType(p)
  1108. #define IDirect3DVolumeTexture9_GenerateMipSubLevels(p)    (p)->lpVtbl->GenerateMipSubLevels(p)
  1109. #define IDirect3DVolumeTexture9_GetLevelDesc(p,a,b)    (p)->lpVtbl->GetLevelDesc(p,a,b)
  1110. #define IDirect3DVolumeTexture9_GetVolumeLevel(p,a,b)    (p)->lpVtbl->GetVolumeLevel(p,a,b)
  1111. #define IDirect3DVolumeTexture9_LockBox(p,a,b,c,d)    (p)->lpVtbl->LockBox(p,a,b,c,d)
  1112. #define IDirect3DVolumeTexture9_UnlockBox(p,a)    (p)->lpVtbl->UnlockBox(p,a)
  1113. #define IDirect3DVolumeTexture9_AddDirtyBox(p,a)    (p)->lpVtbl->AddDirtyBox(p,a)
  1114. #else
  1115. #define IDirect3DVolumeTexture9_QueryInterface(p,a,b)    (p)->QueryInterface(a,b)
  1116. #define IDirect3DVolumeTexture9_AddRef(p)    (p)->AddRef()
  1117. #define IDirect3DVolumeTexture9_Release(p)    (p)->Release()
  1118. #define IDirect3DVolumeTexture9_GetDevice(p,a)    (p)->GetDevice(a)
  1119. #define IDirect3DVolumeTexture9_SetPrivateData(p,a,b,c,d)    (p)->SetPrivateData(a,b,c,d)
  1120. #define IDirect3DVolumeTexture9_GetPrivateData(p,a,b,c)    (p)->GetPrivateData(a,b,c)
  1121. #define IDirect3DVolumeTexture9_FreePrivateData(p,a)    (p)->FreePrivateData(a)
  1122. #define IDirect3DVolumeTexture9_SetPriority(p,a)    (p)->SetPriority(a)
  1123. #define IDirect3DVolumeTexture9_GetPriority(p)    (p)->GetPriority()
  1124. #define IDirect3DVolumeTexture9_PreLoad(p)    (p)->PreLoad()
  1125. #define IDirect3DVolumeTexture9_GetType(p)    (p)->GetType()
  1126. #define IDirect3DVolumeTexture9_SetLOD(p,a)    (p)->SetLOD(a)
  1127. #define IDirect3DVolumeTexture9_GetLOD(p)    (p)->GetLOD()
  1128. #define IDirect3DVolumeTexture9_GetLevelCount(p)    (p)->GetLevelCount()
  1129. #define IDirect3DVolumeTexture9_SetAutoGenFilterType(p,a)    (p)->SetAutoGenFilterType(a)
  1130. #define IDirect3DVolumeTexture9_GetAutoGenFilterType(p)    (p)->GetAutoGenFilterType()
  1131. #define IDirect3DVolumeTexture9_GenerateMipSubLevels(p)    (p)->GenerateMipSubLevels()
  1132. #define IDirect3DVolumeTexture9_GetLevelDesc(p,a,b)    (p)->GetLevelDesc(a,b)
  1133. #define IDirect3DVolumeTexture9_GetVolumeLevel(p,a,b)    (p)->GetVolumeLevel(a,b)
  1134. #define IDirect3DVolumeTexture9_LockBox(p,a,b,c,d)    (p)->LockBox(a,b,c,d)
  1135. #define IDirect3DVolumeTexture9_UnlockBox(p,a)    (p)->UnlockBox(a)
  1136. #define IDirect3DVolumeTexture9_AddDirtyBox(p,a)    (p)->AddDirtyBox(a)
  1137. #endif
  1138.  
  1139. #undef INTERFACE
  1140. #define INTERFACE IDirect3DVertexDeclaration9
  1141. DECLARE_INTERFACE_(IDirect3DVertexDeclaration9,IUnknown)
  1142. {
  1143.     STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
  1144.     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  1145.     STDMETHOD_(ULONG,Release)(THIS) PURE;
  1146.     STDMETHOD(GetDevice)(THIS_ IDirect3DDevice9**) PURE;
  1147.     STDMETHOD(GetDeclaration)(THIS_ D3DVERTEXELEMENT9*,UINT*) PURE;
  1148. };
  1149. typedef struct IDirect3DVertexDeclaration9 *LPDIRECT3DVERTEXDECLARATION9, *PDIRECT3DVERTEXDECLARATION9;
  1150.  
  1151. #if !defined(__cplusplus) || defined(CINTERFACE)
  1152. #define IDirect3DVertexDeclaration9_QueryInterface(p,a,b)    (p)->lpVtbl->QueryInterface(p,a,b)
  1153. #define IDirect3DVertexDeclaration9_AddRef(p)    (p)->lpVtbl->AddRef(p)
  1154. #define IDirect3DVertexDeclaration9_Release(p)    (p)->lpVtbl->Release(p)
  1155. #define IDirect3DVertexDeclaration9_GetDevice(p,a)    (p)->lpVtbl->GetDevice(p,a)
  1156. #define IDirect3DVertexDeclaration9_GetDeclaration(p,a,b)    (p)->lpVtbl->GetDeclaration(p,a,b)
  1157. #else
  1158. #define IDirect3DVertexDeclaration9_QueryInterface(p,a,b)    (p)->QueryInterface(a,b)
  1159. #define IDirect3DVertexDeclaration9_AddRef(p)    (p)->AddRef()
  1160. #define IDirect3DVertexDeclaration9_Release(p)    (p)->Release()
  1161. #define IDirect3DVertexDeclaration9_GetDevice(p,a)    (p)->GetDevice(a)
  1162. #define IDirect3DVertexDeclaration9_GetDeclaration(p,a,b)    (p)->GetDeclaration(a,b)
  1163. #endif
  1164.  
  1165. #undef INTERFACE
  1166. #define INTERFACE IDirect3DVertexShader9
  1167. DECLARE_INTERFACE_(IDirect3DVertexShader9,IUnknown)
  1168. {
  1169.     STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
  1170.     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  1171.     STDMETHOD_(ULONG,Release)(THIS) PURE;
  1172.     STDMETHOD(GetDevice)(THIS_ IDirect3DDevice9**) PURE;
  1173.     STDMETHOD(GetFunction)(THIS_ void*,UINT*) PURE;
  1174. };
  1175. typedef struct IDirect3DVertexShader9 *LPDIRECT3DVERTEXSHADER9, *PDIRECT3DVERTEXSHADER9;
  1176.  
  1177. #if !defined(__cplusplus) || defined(CINTERFACE)
  1178. #define IDirect3DVertexShader9_QueryInterface(p,a,b)    (p)->lpVtbl->QueryInterface(p,a,b)
  1179. #define IDirect3DVertexShader9_AddRef(p)    (p)->lpVtbl->AddRef(p)
  1180. #define IDirect3DVertexShader9_Release(p)    (p)->lpVtbl->Release(p)
  1181. #define IDirect3DVertexShader9_GetDevice(p,a)    (p)->lpVtbl->GetDevice(p,a)
  1182. #define IDirect3DVertexShader9_GetFunction(p,a,b)    (p)->lpVtbl->GetFunction(p,a,b)
  1183. #else
  1184. #define IDirect3DVertexShader9_QueryInterface(p,a,b)    (p)->QueryInterface(a,b)
  1185. #define IDirect3DVertexShader9_AddRef(p)    (p)->AddRef()
  1186. #define IDirect3DVertexShader9_Release(p)    (p)->Release()
  1187. #define IDirect3DVertexShader9_GetDevice(p,a)    (p)->GetDevice(a)
  1188. #define IDirect3DVertexShader9_GetFunction(p,a,b)    (p)->GetFunction(a,b)
  1189. #endif
  1190.  
  1191. #undef INTERFACE
  1192. #define INTERFACE IDirect3DPixelShader9
  1193. DECLARE_INTERFACE_(IDirect3DPixelShader9,IUnknown)
  1194. {
  1195.     STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
  1196.     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  1197.     STDMETHOD_(ULONG,Release)(THIS) PURE;
  1198.     STDMETHOD(GetDevice)(THIS_ IDirect3DDevice9**) PURE;
  1199.     STDMETHOD(GetFunction)(THIS_ void*,UINT*) PURE;
  1200. };
  1201. typedef struct IDirect3DPixelShader9 *LPDIRECT3DPIXELSHADER9, *PDIRECT3DPIXELSHADER9;
  1202.  
  1203. #if !defined(__cplusplus) || defined(CINTERFACE)
  1204. #define IDirect3DPixelShader9_QueryInterface(p,a,b)    (p)->lpVtbl->QueryInterface(p,a,b)
  1205. #define IDirect3DPixelShader9_AddRef(p)    (p)->lpVtbl->AddRef(p)
  1206. #define IDirect3DPixelShader9_Release(p)    (p)->lpVtbl->Release(p)
  1207. #define IDirect3DPixelShader9_GetDevice(p,a)    (p)->lpVtbl->GetDevice(p,a)
  1208. #define IDirect3DPixelShader9_GetFunction(p,a,b)    (p)->lpVtbl->GetFunction(p,a,b)
  1209. #else
  1210. #define IDirect3DPixelShader9_QueryInterface(p,a,b)    (p)->QueryInterface(a,b)
  1211. #define IDirect3DPixelShader9_AddRef(p)    (p)->AddRef()
  1212. #define IDirect3DPixelShader9_Release(p)    (p)->Release()
  1213. #define IDirect3DPixelShader9_GetDevice(p,a)    (p)->GetDevice(a)
  1214. #define IDirect3DPixelShader9_GetFunction(p,a,b)    (p)->GetFunction(a,b)
  1215. #endif
  1216.  
  1217. #undef INTERFACE
  1218. #define INTERFACE IDirect3DStateBlock9
  1219. DECLARE_INTERFACE_(IDirect3DStateBlock9,IUnknown)
  1220. {
  1221.     STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
  1222.     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  1223.     STDMETHOD_(ULONG,Release)(THIS) PURE;
  1224.     STDMETHOD(GetDevice)(THIS_ IDirect3DDevice9**) PURE;
  1225.     STDMETHOD(Capture)(THIS) PURE;
  1226.     STDMETHOD(Apply)(THIS) PURE;
  1227. };
  1228. typedef struct IDirect3DStateBlock9 *LPDIRECT3DSTATEBLOCK9, *PDIRECT3DSTATEBLOCK9;
  1229.  
  1230. #if !defined(__cplusplus) || defined(CINTERFACE)
  1231. #define IDirect3DStateBlock9_QueryInterface(p,a,b)    (p)->lpVtbl->QueryInterface(p,a,b)
  1232. #define IDirect3DStateBlock9_AddRef(p)    (p)->lpVtbl->AddRef(p)
  1233. #define IDirect3DStateBlock9_Release(p)    (p)->lpVtbl->Release(p)
  1234. #define IDirect3DStateBlock9_GetDevice(p,a)    (p)->lpVtbl->GetDevice(p,a)
  1235. #define IDirect3DStateBlock9_Capture(p)    (p)->lpVtbl->Capture(p)
  1236. #define IDirect3DStateBlock9_Apply(p)    (p)->lpVtbl->Apply(p)
  1237. #else
  1238. #define IDirect3DStateBlock9_QueryInterface(p,a,b)    (p)->QueryInterface(a,b)
  1239. #define IDirect3DStateBlock9_AddRef(p)    (p)->AddRef()
  1240. #define IDirect3DStateBlock9_Release(p)    (p)->Release()
  1241. #define IDirect3DStateBlock9_GetDevice(p,a)    (p)->GetDevice(a)
  1242. #define IDirect3DStateBlock9_Capture(p)    (p)->Capture()
  1243. #define IDirect3DStateBlock9_Apply(p)    (p)->Apply()
  1244. #endif
  1245.  
  1246. #undef INTERFACE
  1247. #define INTERFACE IDirect3DQuery9
  1248. DECLARE_INTERFACE_(IDirect3DQuery9,IUnknown)
  1249. {
  1250.     STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
  1251.     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  1252.     STDMETHOD_(ULONG,Release)(THIS) PURE;
  1253.     STDMETHOD(GetDevice)(THIS_ IDirect3DDevice9**) PURE;
  1254.     STDMETHOD_(D3DQUERYTYPE, GetType)(THIS) PURE;
  1255.     STDMETHOD_(DWORD, GetDataSize)(THIS) PURE;
  1256.     STDMETHOD(Issue)(THIS_ DWORD) PURE;
  1257.     STDMETHOD(GetData)(THIS_ void*,DWORD,DWORD) PURE;
  1258. };
  1259. typedef struct IDirect3DQuery9 *LPDIRECT3DQUERY9, *PDIRECT3DQUERY9;
  1260.  
  1261. #if !defined(__cplusplus) || defined(CINTERFACE)
  1262. #define IDirect3DQuery9_QueryInterface(p,a,b)    (p)->lpVtbl->QueryInterface(p,a,b)
  1263. #define IDirect3DQuery9_AddRef(p)    (p)->lpVtbl->AddRef(p)
  1264. #define IDirect3DQuery9_Release(p)    (p)->lpVtbl->Release(p)
  1265. #define IDirect3DQuery9_GetDevice(p,a)    (p)->lpVtbl->GetDevice(p,a)
  1266. #define IDirect3DQuery9_GetType(p)    (p)->lpVtbl->GetType(p)
  1267. #define IDirect3DQuery9_GetDataSize(p)    (p)->lpVtbl->GetDataSize(p)
  1268. #define IDirect3DQuery9_Issue(p,a)    (p)->lpVtbl->Issue(p,a)
  1269. #define IDirect3DQuery9_GetData(p,a,b,c)    (p)->lpVtbl->GetData(p,a,b,c)
  1270. #else
  1271. #define IDirect3DQuery9_QueryInterface(p,a,b)    (p)->QueryInterface(a,b)
  1272. #define IDirect3DQuery9_AddRef(p)    (p)->AddRef()
  1273. #define IDirect3DQuery9_Release(p)    (p)->Release()
  1274. #define IDirect3DQuery9_GetDevice(p,a)    (p)->GetDevice(a)
  1275. #define IDirect3DQuery9_GetType(p)    (p)->GetType()
  1276. #define IDirect3DQuery9_GetDataSize(p)    (p)->GetDataSize()
  1277. #define IDirect3DQuery9_Issue(p,a)    (p)->Issue(a)
  1278. #define IDirect3DQuery9_GetData(p,a,b,c)    (p)->GetData(a,b,c)
  1279. #endif
  1280.  
  1281. #ifdef __cplusplus
  1282. extern "C" IDirect3D9* WINAPI Direct3DCreate9(UINT SDKVersion);
  1283. #else
  1284. extern IDirect3D9* WINAPI Direct3DCreate9(UINT SDKVersion);
  1285. #endif
  1286.  
  1287. #endif
  1288. #endif
  1289.