d3d7.bmx 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229
  1. Strict
  2. Import Pub.Win32
  3. 'This is very much a WORK IN PROGRESS, and highly subject to change!
  4. 'IDirect3DDevice7 parameter definitions still incomplete
  5. Const D3DDEVCAPS_HWRASTERIZATION=$80000
  6. Const D3DTFN_POINT=1
  7. Const D3DTFN_LINEAR=2
  8. Const D3DTFN_ANISOTROPIC=3
  9. Const D3DTFP_NONE=1
  10. Const D3DTFP_POINT=2
  11. Const D3DTFP_LINEAR=3
  12. Const D3DTFG_POINT=1
  13. Const D3DTFG_LINEAR=2
  14. Const D3DTFG_FLATCUBIC=3
  15. Const D3DTFG_GAUSSIANCUBIC=4
  16. Const D3DTFG_ANISOTROPIC=5
  17. Const D3DVBCAPS_SYSTEMMEMORY=$800
  18. Const D3DVBCAPS_WRITEONLY=$10000
  19. Const D3DVBCAPS_OPTIMIZED=$80000000
  20. Const D3DVBCAPS_DONOTCLIP=$1
  21. Rem
  22. Type D3DMATERIAL7
  23. Field diffuse_r#,diffuse_g#,diffuse_b#,diffuse_a#
  24. Field ambient_r#,ambient_g#,ambient_b#,ambient_a#
  25. Field specular_r#,specular_g#,specular_b#,specular_a#
  26. Field emissive_r#,emissive_g#,emissive_b#,emissive_a#
  27. Field power#
  28. End Type
  29. Type D3DVIEWPORT7
  30. Field dwX,dwY,dwWidth,dwHeight
  31. Field dvMinZ,dvMaxZ
  32. End Type
  33. Type D3DVERTEXBUFFERDESC
  34. Field dwSize,dwCaps,dwFVF,dwNumVertices
  35. End Type
  36. 'Extern "win32"
  37. Type IDirect3D7 Extends IUnknown
  38. Method EnumDevices(callback(desc:Byte Ptr,name:Byte Ptr,d3ddevice:Byte Ptr,context:Object),user:Object)
  39. End Method
  40. Method CreateDevice(clsid:Byte Ptr,ddsurface7:Byte Ptr,d3ddevice7:Byte Ptr)
  41. End Method
  42. Method CreateVertexBuffer(lpVBDesc:Byte Ptr,lplpD3DVertexBuffer:Byte Ptr,dwFlags)
  43. End Method
  44. Method EnumZBufferFormats(clsid,d3dpfcallback,void)
  45. End Method
  46. Method EvictManagedTextures()
  47. End Method
  48. ' /*** IDirect3D7 methods ***/
  49. ' STDMETHOD(EnumDevices)(THIS_ LPD3DENUMDEVICESCALLBACK7,LPVOID) PURE;
  50. ' STDMETHOD(CreateDevice)(THIS_ REFCLSID,LPDIRECTDRAWSURFACE7,LPDIRECT3DDEVICE7*) PURE;
  51. ' STDMETHOD(CreateVertexBuffer)(THIS_ LPD3DVERTEXBUFFERDESC,LPDIRECT3DVERTEXBUFFER7*,DWORD) PURE;
  52. ' STDMETHOD(EnumZBufferFormats)(THIS_ REFCLSID,LPD3DENUMPIXELFORMATSCALLBACK,LPVOID) PURE;
  53. ' STDMETHOD(EvictManagedTextures)(THIS) PURE;
  54. End Type
  55. Type IDirect3DDevice7 Extends IUnknown
  56. Method GetCaps(desc:Byte Ptr)
  57. Method EnumTextureFormats(callback(),context:Object)
  58. Method BeginScene()
  59. Method EndScene()
  60. Method GetDirect3D()
  61. Method SetRenderTarget(surf7:Byte Ptr,flags)
  62. Method GetRenderTarget(surf7:Byte Ptr)
  63. Method Clear(count,rects:Byte Ptr,flags,color,z,stencil)
  64. Method SetTransform(state,matrix:Byte Ptr)
  65. Method GetTransform(state,matrix:Byte Ptr)
  66. Method SetViewport(viewport:Byte Ptr)
  67. Method MultiplyTransform()
  68. Method GetViewport()
  69. Method SetMaterial(material:Byte Ptr)
  70. Method GetMaterial()
  71. Method SetLight()
  72. Method GetLight()
  73. Method SetRenderState(renderstate,value)
  74. Method GetRenderState()
  75. Method BeginStateBlock()
  76. Method EndStateBlock()
  77. Method PreLoad()
  78. Method DrawPrimitive(primtype,verttype,verts:Byte Ptr,count,flags)
  79. Method DrawIndexedPrimitive(d3dptPrimitiveType,dwVertexTypeDesc,lpvVertices:Byte Ptr,dwVertexCount,lpwIndices:Short Ptr,dwIndexCount,dwFlags)
  80. Method SetClipStatus( lpD3DClipStatus:Byte Ptr )
  81. Method GetClipStatus( lpD3DClipStatus:Byte Ptr )
  82. Method DrawPrimitiveStrided(d3dptPrimitiveType,dwVertexTypeDesc,lpVertexArray:Byte Ptr,dwVertexCount,dwFlags)
  83. Method DrawIndexedPrimitiveStrided(d3dptPrimitiveType,dwVertexTypeDesc,lpVertexArray:Byte Ptr,dwVertexCount,lpwIndices:Short Ptr,dwIndexCount,dwFlags)
  84. Method DrawPrimitiveVB(d3dptPrimitiveType,lpd3dVertexBuffer:Byte Ptr,dwStartVertex,dwNumVertices,dwFlags)
  85. Method DrawIndexedPrimitiveVB(d3dptPrimitiveType,lpd3dVertexBuffer:Byte Ptr,dwStartVertex,dwNumVertices,lpwIndices:Short Ptr,dwIndexCount,dwFlags)
  86. Method ComputeSphereVisibility()
  87. Method GetTexture()
  88. Method SetTexture(stage,ddsurface7:Byte Ptr)
  89. Method GetTextureStageState()
  90. Method SetTextureStageState(stage,state,value)
  91. Method ValidateDevice()
  92. Method ApplyStateBlock()
  93. Method CaptureStateBlock()
  94. Method DeleteStateBlock()
  95. Method CreateStateBlock()
  96. Method Load()
  97. Method LightEnable()
  98. Method GetLightEnable()
  99. Method SetClipPlane( dwIndex,pPlaneEquation:Float Ptr )
  100. Method GetClipPlane( dwIndex,pPlaneEquation:Float Ptr )
  101. Method GetInfo()
  102. ' /*** IDirect3DDevice7 methods ***/
  103. Rem
  104. STDMETHOD(GetCaps)(THIS_ LPD3DDEVICEDESC7) PURE;
  105. STDMETHOD(EnumTextureFormats)(THIS_ LPD3DENUMPIXELFORMATSCALLBACK,LPVOID) PURE;
  106. STDMETHOD(BeginScene)(THIS) PURE;
  107. STDMETHOD(EndScene)(THIS) PURE;
  108. STDMETHOD(GetDirect3D)(THIS_ LPDIRECT3D7*) PURE;
  109. STDMETHOD(SetRenderTarget)(THIS_ LPDIRECTDRAWSURFACE7,DWORD) PURE;
  110. STDMETHOD(GetRenderTarget)(THIS_ LPDIRECTDRAWSURFACE7 *) PURE;
  111. STDMETHOD(Clear)(THIS_ DWORD,LPD3DRECT,DWORD,D3DCOLOR,D3DVALUE,DWORD) PURE;
  112. STDMETHOD(SetTransform)(THIS_ D3DTRANSFORMSTATETYPE,LPD3DMATRIX) PURE;
  113. STDMETHOD(GetTransform)(THIS_ D3DTRANSFORMSTATETYPE,LPD3DMATRIX) PURE;
  114. STDMETHOD(SetViewport)(THIS_ LPD3DVIEWPORT7) PURE;
  115. STDMETHOD(MultiplyTransform)(THIS_ D3DTRANSFORMSTATETYPE,LPD3DMATRIX) PURE;
  116. STDMETHOD(GetViewport)(THIS_ LPD3DVIEWPORT7) PURE;
  117. STDMETHOD(SetMaterial)(THIS_ LPD3DMATERIAL7) PURE;
  118. STDMETHOD(GetMaterial)(THIS_ LPD3DMATERIAL7) PURE;
  119. STDMETHOD(SetLight)(THIS_ DWORD,LPD3DLIGHT7) PURE;
  120. STDMETHOD(GetLight)(THIS_ DWORD,LPD3DLIGHT7) PURE;
  121. STDMETHOD(SetRenderState)(THIS_ D3DRENDERSTATETYPE,DWORD) PURE;
  122. STDMETHOD(GetRenderState)(THIS_ D3DRENDERSTATETYPE,LPDWORD) PURE;
  123. STDMETHOD(BeginStateBlock)(THIS) PURE;
  124. STDMETHOD(EndStateBlock)(THIS_ LPDWORD) PURE;
  125. STDMETHOD(PreLoad)(THIS_ LPDIRECTDRAWSURFACE7) PURE;
  126. STDMETHOD(DrawPrimitive)(THIS_ D3DPRIMITIVETYPE,DWORD,LPVOID,DWORD,DWORD) PURE;
  127. STDMETHOD(DrawIndexedPrimitive)(THIS_ D3DPRIMITIVETYPE,DWORD,LPVOID,DWORD,LPWORD,DWORD,DWORD) PURE;
  128. STDMETHOD(SetClipStatus)(THIS_ LPD3DCLIPSTATUS) PURE;
  129. STDMETHOD(GetClipStatus)(THIS_ LPD3DCLIPSTATUS) PURE;
  130. STDMETHOD(DrawPrimitiveStrided)(THIS_ D3DPRIMITIVETYPE,DWORD,LPD3DDRAWPRIMITIVESTRIDEDDATA,DWORD,DWORD) PURE;
  131. STDMETHOD(DrawIndexedPrimitiveStrided)(THIS_ D3DPRIMITIVETYPE,DWORD,LPD3DDRAWPRIMITIVESTRIDEDDATA,DWORD,LPWORD,DWORD,DWORD) PURE;
  132. STDMETHOD(DrawPrimitiveVB)(THIS_ D3DPRIMITIVETYPE,LPDIRECT3DVERTEXBUFFER7,DWORD,DWORD,DWORD) PURE;
  133. STDMETHOD(DrawIndexedPrimitiveVB)(THIS_ D3DPRIMITIVETYPE,LPDIRECT3DVERTEXBUFFER7,DWORD,DWORD,LPWORD,DWORD,DWORD) PURE;
  134. STDMETHOD(ComputeSphereVisibility)(THIS_ LPD3DVECTOR,LPD3DVALUE,DWORD,DWORD,LPDWORD) PURE;
  135. STDMETHOD(GetTexture)(THIS_ DWORD,LPDIRECTDRAWSURFACE7 *) PURE;
  136. STDMETHOD(SetTexture)(THIS_ DWORD,LPDIRECTDRAWSURFACE7) PURE;
  137. STDMETHOD(GetTextureStageState)(THIS_ DWORD,D3DTEXTURESTAGESTATETYPE,LPDWORD) PURE;
  138. STDMETHOD(SetTextureStageState)(THIS_ DWORD,D3DTEXTURESTAGESTATETYPE,DWORD) PURE;
  139. STDMETHOD(ValidateDevice)(THIS_ LPDWORD) PURE;
  140. STDMETHOD(ApplyStateBlock)(THIS_ DWORD) PURE;
  141. STDMETHOD(CaptureStateBlock)(THIS_ DWORD) PURE;
  142. STDMETHOD(DeleteStateBlock)(THIS_ DWORD) PURE;
  143. STDMETHOD(CreateStateBlock)(THIS_ D3DSTATEBLOCKTYPE,LPDWORD) PURE;
  144. STDMETHOD(Load)(THIS_ LPDIRECTDRAWSURFACE7,LPPOINT,LPDIRECTDRAWSURFACE7,LPRECT,DWORD) PURE;
  145. STDMETHOD(LightEnable)(THIS_ DWORD,BOOL) PURE;
  146. STDMETHOD(GetLightEnable)(THIS_ DWORD,BOOL*) PURE;
  147. STDMETHOD(SetClipPlane)(THIS_ DWORD,D3DVALUE*) PURE;
  148. STDMETHOD(GetClipPlane)(THIS_ DWORD,D3DVALUE*) PURE;
  149. STDMETHOD(GetInfo)(THIS_ DWORD,LPVOID,DWORD) PURE;
  150. 'EndRem
  151. End Type
  152. Type IDirect3DVertexBuffer7 Extends IUnknown
  153. Method Lock(flags,data:Byte Ptr,size:Int Ptr)
  154. Method Unlock()
  155. Method ProcessVertices(dwVertexOp,dwDestIndex,dwCount,lpSrcBuffer:Byte Ptr,dwSrcIndex,lpD3DDevice:Byte Ptr,dwFlags)
  156. Method GetVertexBufferDesc(lpVBDesc:Byte Ptr)
  157. Method Optimize(lpD3DDevice:Byte Ptr,dwFlags)
  158. Method ProcessVerticesStrided(dwVertexOp,dwDestIndex,dwCount,lpVertexArray:Byte Ptr,dwSrcIndex,lpD3DDevice:Byte Ptr,dwFlags)
  159. ' /*** IDirect3DVertexBuffer7 methods ***/
  160. 'Rem
  161. STDMETHOD(Lock)(THIS_ DWORD,LPVOID*,LPDWORD) PURE;
  162. STDMETHOD(Unlock)(THIS) PURE;
  163. STDMETHOD(ProcessVertices)(THIS_ DWORD,DWORD,DWORD,LPDIRECT3DVERTEXBUFFER7,DWORD,LPDIRECT3DDEVICE7,DWORD) PURE;
  164. STDMETHOD(GetVertexBufferDesc)(THIS_ LPD3DVERTEXBUFFERDESC) PURE;
  165. STDMETHOD(Optimize)(THIS_ LPDIRECT3DDEVICE7,DWORD) PURE;
  166. STDMETHOD(ProcessVerticesStrided)(THIS_ DWORD,DWORD,DWORD,LPD3DDRAWPRIMITIVESTRIDEDDATA,DWORD,LPDIRECT3DDEVICE7,DWORD) PURE;
  167. EndRem
  168. 'End Type
  169. 'End Extern
  170. Global IID_IDirect3D7[]=[$f5049e77,$11d24861,$a00007a4,$a82906c9]
  171. Global IID_IDirect3DHALDevice[]=[$84e63de0,$11cf46aa,$00006f81,$6e1520c0]
  172. Global IID_IDirect3DTnLDevice[]=[$f5049e78,$11d24861,$A00007a4,$a82906c9]
  173. Rem
  174. DEFINE_GUID( IID_IDirect3D, 0x3BBA0080,0x2421,0x11CF,0xA3,0x1A,0x00,0xAA,0x00,0xB9,0x33,0x56 );
  175. DEFINE_GUID( IID_IDirect3D2, 0x6aae1ec1,0x662a,0x11d0,0x88,0x9d,0x00,0xaa,0x00,0xbb,0xb7,0x6a);
  176. DEFINE_GUID( IID_IDirect3D3, 0xbb223240,0xe72b,0x11d0,0xa9,0xb4,0x00,0xaa,0x00,0xc0,0x99,0x3e);
  177. DEFINE_GUID( IID_IDirect3D7, 0xf5049e77,0x4861,0x11d2,0xa4,0x7,0x0,0xa0,0xc9,0x6,0x29,0xa8);
  178. DEFINE_GUID( IID_IDirect3DRampDevice, 0xF2086B20,0x259F,0x11CF,0xA3,0x1A,0x00,0xAA,0x00,0xB9,0x33,0x56 );
  179. DEFINE_GUID( IID_IDirect3DRGBDevice, 0xA4665C60,0x2673,0x11CF,0xA3,0x1A,0x00,0xAA,0x00,0xB9,0x33,0x56 );
  180. DEFINE_GUID( IID_IDirect3DHALDevice, 0x84E63dE0,0x46AA,0x11CF,0x81,0x6F,0x00,0x00,0xC0,0x20,0x15,0x6E );
  181. DEFINE_GUID( IID_IDirect3DMMXDevice, 0x881949a1,0xd6f3,0x11d0,0x89,0xab,0x00,0xa0,0xc9,0x05,0x41,0x29 );
  182. DEFINE_GUID( IID_IDirect3DRefDevice, 0x50936643, 0x13e9, 0x11d1, 0x89, 0xaa, 0x0, 0xa0, 0xc9, 0x5, 0x41, 0x29);
  183. DEFINE_GUID( IID_IDirect3DNullDevice, 0x8767df22, 0xbacc, 0x11d1, 0x89, 0x69, 0x0, 0xa0, 0xc9, 0x6, 0x29, 0xa8);
  184. DEFINE_GUID( IID_IDirect3DTnLHalDevice, 0xf5049e78, 0x4861, 0x11d2, 0xa4, 0x7, 0x0, 0xa0, 0xc9, 0x6, 0x29, 0xa8);
  185. DEFINE_GUID( IID_IDirect3DDevice, 0x64108800,0x957d,0X11d0,0x89,0xab,0x00,0xa0,0xc9,0x05,0x41,0x29 );
  186. DEFINE_GUID( IID_IDirect3DDevice2, 0x93281501, 0x8cf8, 0x11d0, 0x89, 0xab, 0x0, 0xa0, 0xc9, 0x5, 0x41, 0x29);
  187. DEFINE_GUID( IID_IDirect3DDevice3, 0xb0ab3b60, 0x33d7, 0x11d1, 0xa9, 0x81, 0x0, 0xc0, 0x4f, 0xd7, 0xb1, 0x74);
  188. DEFINE_GUID( IID_IDirect3DDevice7, 0xf5049e79, 0x4861, 0x11d2, 0xa4, 0x7, 0x0, 0xa0, 0xc9, 0x6, 0x29, 0xa8);
  189. DEFINE_GUID( IID_IDirect3DTexture, 0x2CDCD9E0,0x25A0,0x11CF,0xA3,0x1A,0x00,0xAA,0x00,0xB9,0x33,0x56 );
  190. DEFINE_GUID( IID_IDirect3DTexture2, 0x93281502, 0x8cf8, 0x11d0, 0x89, 0xab, 0x0, 0xa0, 0xc9, 0x5, 0x41, 0x29);
  191. DEFINE_GUID( IID_IDirect3DLight, 0x4417C142,0x33AD,0x11CF,0x81,0x6F,0x00,0x00,0xC0,0x20,0x15,0x6E );
  192. DEFINE_GUID( IID_IDirect3DMaterial, 0x4417C144,0x33AD,0x11CF,0x81,0x6F,0x00,0x00,0xC0,0x20,0x15,0x6E );
  193. DEFINE_GUID( IID_IDirect3DMaterial2, 0x93281503, 0x8cf8, 0x11d0, 0x89, 0xab, 0x0, 0xa0, 0xc9, 0x5, 0x41, 0x29);
  194. DEFINE_GUID( IID_IDirect3DMaterial3, 0xca9c46f4, 0xd3c5, 0x11d1, 0xb7, 0x5a, 0x0, 0x60, 0x8, 0x52, 0xb3, 0x12);
  195. DEFINE_GUID( IID_IDirect3DExecuteBuffer,0x4417C145,0x33AD,0x11CF,0x81,0x6F,0x00,0x00,0xC0,0x20,0x15,0x6E );
  196. DEFINE_GUID( IID_IDirect3DViewport, 0x4417C146,0x33AD,0x11CF,0x81,0x6F,0x00,0x00,0xC0,0x20,0x15,0x6E );
  197. DEFINE_GUID( IID_IDirect3DViewport2, 0x93281500, 0x8cf8, 0x11d0, 0x89, 0xab, 0x0, 0xa0, 0xc9, 0x5, 0x41, 0x29);
  198. DEFINE_GUID( IID_IDirect3DViewport3, 0xb0ab3b61, 0x33d7, 0x11d1, 0xa9, 0x81, 0x0, 0xc0, 0x4f, 0xd7, 0xb1, 0x74);
  199. DEFINE_GUID( IID_IDirect3DVertexBuffer, 0x7a503555, 0x4a83, 0x11d1, 0xa5, 0xdb, 0x0, 0xa0, 0xc9, 0x3, 0x67, 0xf8);
  200. DEFINE_GUID( IID_IDirect3DVertexBuffer7, 0xf5049e7d, 0x4861, 0x11d2, 0xa4, 0x7, 0x0, 0xa0, 0xc9, 0x6, 0x29, 0xa8);
  201. EndRem