1 module directx.d3d8; 2 3 import directx.win32; 4 import directx.com; 5 import directx.d3dcommon; 6 7 extern (C++) interface IDirect3D8 : IUnknown { 8 HRESULT RegisterSoftwareDevice(void* pInitializeFunction); 9 UINT GetAdapterCount(); 10 HRESULT GetAdapterIdentifier(UINT Adapter,DWORD Flags,D3DADAPTER_IDENTIFIER8* pIdentifier); 11 UINT GetAdapterModeCount(UINT Adapter); 12 HRESULT EnumAdapterModes(UINT Adapter,UINT Mode,D3DDISPLAYMODE* pMode); 13 HRESULT GetAdapterDisplayMode(UINT Adapter,D3DDISPLAYMODE* pMode); 14 HRESULT CheckDeviceType(UINT Adapter,D3DDEVTYPE CheckType,D3DFORMAT DisplayFormat,D3DFORMAT BackBufferFormat,BOOL Windowed); 15 HRESULT CheckDeviceFormat(UINT Adapter,D3DDEVTYPE DeviceType,D3DFORMAT AdapterFormat,DWORD Usage,D3DRESOURCETYPE RType,D3DFORMAT CheckFormat); 16 HRESULT CheckDeviceMultiSampleType(UINT Adapter,D3DDEVTYPE DeviceType,D3DFORMAT SurfaceFormat,BOOL Windowed,D3DMULTISAMPLE_TYPE MultiSampleType); 17 HRESULT CheckDepthStencilMatch(UINT Adapter,D3DDEVTYPE DeviceType,D3DFORMAT AdapterFormat,D3DFORMAT RenderTargetFormat,D3DFORMAT DepthStencilFormat); 18 HRESULT GetDeviceCaps(UINT Adapter,D3DDEVTYPE DeviceType,D3DCAPS8* pCaps); 19 HMONITOR GetAdapterMonitor(UINT Adapter); 20 HRESULT CreateDevice(UINT Adapter,D3DDEVTYPE DeviceType,HWND hFocusWindow,DWORD BehaviorFlags,D3DPRESENT_PARAMETERS* pPresentationParameters,IDirect3DDevice8* ppReturnedDeviceInterface); 21 } 22 23 extern (C++) interface IDirect3DDevice8 : IUnknown { 24 HRESULT TestCooperativeLevel(); 25 UINT GetAvailableTextureMem(); 26 HRESULT ResourceManagerDiscardBytes(DWORD Bytes); 27 HRESULT GetDirect3D(IDirect3D8* ppD3D8); 28 HRESULT GetDeviceCaps(D3DCAPS8* pCaps); 29 HRESULT GetDisplayMode(D3DDISPLAYMODE* pMode); 30 HRESULT GetCreationParameters(D3DDEVICE_CREATION_PARAMETERS *pParameters); 31 HRESULT SetCursorProperties(UINT XHotSpot,UINT YHotSpot,IDirect3DSurface8 pCursorBitmap); 32 void SetCursorPosition(int X,int Y,DWORD Flags); 33 BOOL ShowCursor(BOOL bShow); 34 HRESULT CreateAdditionalSwapChain(D3DPRESENT_PARAMETERS* pPresentationParameters,IDirect3DSwapChain8* pSwapChain); 35 HRESULT Reset(D3DPRESENT_PARAMETERS* pPresentationParameters); 36 HRESULT Present(const(RECT)* pSourceRect,const(RECT)* pDestRect,HWND hDestWindowOverride,const(RGNDATA)* pDirtyRegion); 37 HRESULT GetBackBuffer(UINT BackBuffer,D3DBACKBUFFER_TYPE Type,IDirect3DSurface8* ppBackBuffer); 38 HRESULT GetRasterStatus(D3DRASTER_STATUS* pRasterStatus); 39 void SetGammaRamp(DWORD Flags,const(D3DGAMMARAMP)* pRamp); 40 void GetGammaRamp(D3DGAMMARAMP* pRamp); 41 HRESULT CreateTexture(UINT Width,UINT Height,UINT Levels,DWORD Usage,D3DFORMAT Format,D3DPOOL Pool,IDirect3DTexture8* ppTexture); 42 HRESULT CreateVolumeTexture(UINT Width,UINT Height,UINT Depth,UINT Levels,DWORD Usage,D3DFORMAT Format,D3DPOOL Pool,IDirect3DVolumeTexture8* ppVolumeTexture); 43 HRESULT CreateCubeTexture(UINT EdgeLength,UINT Levels,DWORD Usage,D3DFORMAT Format,D3DPOOL Pool,IDirect3DCubeTexture8* ppCubeTexture); 44 HRESULT CreateVertexBuffer(UINT Length,DWORD Usage,DWORD FVF,D3DPOOL Pool,IDirect3DVertexBuffer8* ppVertexBuffer); 45 HRESULT CreateIndexBuffer(UINT Length,DWORD Usage,D3DFORMAT Format,D3DPOOL Pool,IDirect3DIndexBuffer8* ppIndexBuffer); 46 HRESULT CreateRenderTarget(UINT Width,UINT Height,D3DFORMAT Format,D3DMULTISAMPLE_TYPE MultiSample,BOOL Lockable,IDirect3DSurface8* ppSurface); 47 HRESULT CreateDepthStencilSurface(UINT Width,UINT Height,D3DFORMAT Format,D3DMULTISAMPLE_TYPE MultiSample,IDirect3DSurface8* ppSurface); 48 HRESULT CreateImageSurface(UINT Width,UINT Height,D3DFORMAT Format,IDirect3DSurface8* ppSurface); 49 HRESULT CopyRects(IDirect3DSurface8 pSourceSurface,const(RECT)* pSourceRectsArray,UINT cRects,IDirect3DSurface8 pDestinationSurface,const(POINT)* pDestPointsArray); 50 HRESULT UpdateTexture(IDirect3DBaseTexture8 pSourceTexture,IDirect3DBaseTexture8 pDestinationTexture); 51 HRESULT GetFrontBuffer(IDirect3DSurface8 pDestSurface); 52 HRESULT SetRenderTarget(IDirect3DSurface8 pRenderTarget,IDirect3DSurface8 pNewZStencil); 53 HRESULT GetRenderTarget(IDirect3DSurface8* ppRenderTarget); 54 HRESULT GetDepthStencilSurface(IDirect3DSurface8* ppZStencilSurface); 55 HRESULT BeginScene(); 56 HRESULT EndScene(); 57 HRESULT Clear(DWORD Count,const(D3DRECT)* pRects,DWORD Flags,D3DCOLOR Color,float Z,DWORD Stencil); 58 HRESULT SetTransform(D3DTRANSFORMSTATETYPE State,const(D3DMATRIX)* pMatrix); 59 HRESULT GetTransform(D3DTRANSFORMSTATETYPE State,D3DMATRIX* pMatrix); 60 HRESULT MultiplyTransform(D3DTRANSFORMSTATETYPE,const(D3DMATRIX)*); 61 HRESULT SetViewport(const(D3DVIEWPORT8)* pViewport); 62 HRESULT GetViewport(D3DVIEWPORT8* pViewport); 63 HRESULT SetMaterial(const(D3DMATERIAL8)* pMaterial); 64 HRESULT GetMaterial(D3DMATERIAL8* pMaterial); 65 HRESULT SetLight(DWORD Index,const(D3DLIGHT8)*); 66 HRESULT GetLight(DWORD Index,D3DLIGHT8*); 67 HRESULT LightEnable(DWORD Index,BOOL Enable); 68 HRESULT GetLightEnable(DWORD Index,BOOL* pEnable); 69 HRESULT SetClipPlane(DWORD Index,const(float)* pPlane); 70 HRESULT GetClipPlane(DWORD Index,float* pPlane); 71 HRESULT SetRenderState(D3DRENDERSTATETYPE State,DWORD Value); 72 HRESULT GetRenderState(D3DRENDERSTATETYPE State,DWORD* pValue); 73 HRESULT BeginStateBlock(); 74 HRESULT EndStateBlock(DWORD* pToken); 75 HRESULT ApplyStateBlock(DWORD Token); 76 HRESULT CaptureStateBlock(DWORD Token); 77 HRESULT DeleteStateBlock(DWORD Token); 78 HRESULT CreateStateBlock(D3DSTATEBLOCKTYPE Type,DWORD* pToken); 79 HRESULT SetClipStatus(const(D3DCLIPSTATUS8)* pClipStatus); 80 HRESULT GetClipStatus(D3DCLIPSTATUS8* pClipStatus); 81 HRESULT GetTexture(DWORD Stage,IDirect3DBaseTexture8* ppTexture); 82 HRESULT SetTexture(DWORD Stage,IDirect3DBaseTexture8 pTexture); 83 HRESULT GetTextureStageState(DWORD Stage,D3DTEXTURESTAGESTATETYPE Type,DWORD* pValue); 84 HRESULT SetTextureStageState(DWORD Stage,D3DTEXTURESTAGESTATETYPE Type,DWORD Value); 85 HRESULT ValidateDevice(DWORD* pNumPasses); 86 HRESULT GetInfo(DWORD DevInfoID,void* pDevInfoStruct,DWORD DevInfoStructSize); 87 HRESULT SetPaletteEntries(UINT PaletteNumber,const(PALETTEENTRY)* pEntries); 88 HRESULT GetPaletteEntries(UINT PaletteNumber,PALETTEENTRY* pEntries); 89 HRESULT SetCurrentTexturePalette(UINT PaletteNumber); 90 HRESULT GetCurrentTexturePalette(UINT *PaletteNumber); 91 HRESULT DrawPrimitive(D3DPRIMITIVETYPE PrimitiveType,UINT StartVertex,UINT PrimitiveCount); 92 HRESULT DrawIndexedPrimitive(D3DPRIMITIVETYPE,UINT minIndex,UINT NumVertices,UINT startIndex,UINT primCount); 93 HRESULT DrawPrimitiveUP(D3DPRIMITIVETYPE PrimitiveType,UINT PrimitiveCount,const(void)* pVertexStreamZeroData,UINT VertexStreamZeroStride); 94 HRESULT DrawIndexedPrimitiveUP(D3DPRIMITIVETYPE PrimitiveType,UINT MinVertexIndex,UINT NumVertexIndices,UINT PrimitiveCount,const(void)* pIndexData,D3DFORMAT IndexDataFormat,const(void)* pVertexStreamZeroData,UINT VertexStreamZeroStride); 95 HRESULT ProcessVertices(UINT SrcStartIndex,UINT DestIndex,UINT VertexCount,IDirect3DVertexBuffer8 pDestBuffer,DWORD Flags); 96 HRESULT CreateVertexShader(const(DWORD)* pDeclaration,const(DWORD)* pFunction,DWORD* pHandle,DWORD Usage); 97 HRESULT SetVertexShader(DWORD Handle); 98 HRESULT GetVertexShader(DWORD* pHandle); 99 HRESULT DeleteVertexShader(DWORD Handle); 100 HRESULT SetVertexShaderConstant(DWORD Register,const(void)* pConstantData,DWORD ConstantCount); 101 HRESULT GetVertexShaderConstant(DWORD Register,void* pConstantData,DWORD ConstantCount); 102 HRESULT GetVertexShaderDeclaration(DWORD Handle,void* pData,DWORD* pSizeOfData); 103 HRESULT GetVertexShaderFunction(DWORD Handle,void* pData,DWORD* pSizeOfData); 104 HRESULT SetStreamSource(UINT StreamNumber,IDirect3DVertexBuffer8 pStreamData,UINT Stride); 105 HRESULT GetStreamSource(UINT StreamNumber,IDirect3DVertexBuffer8* ppStreamData,UINT* pStride); 106 HRESULT SetIndices(IDirect3DIndexBuffer8 pIndexData,UINT BaseVertexIndex); 107 HRESULT GetIndices(IDirect3DIndexBuffer8* ppIndexData,UINT* pBaseVertexIndex); 108 HRESULT CreatePixelShader(const(DWORD)* pFunction,DWORD* pHandle); 109 HRESULT SetPixelShader(DWORD Handle); 110 HRESULT GetPixelShader(DWORD* pHandle); 111 HRESULT DeletePixelShader(DWORD Handle); 112 HRESULT SetPixelShaderConstant(DWORD Register,const(void)* pConstantData,DWORD ConstantCount); 113 HRESULT GetPixelShaderConstant(DWORD Register,void* pConstantData,DWORD ConstantCount); 114 HRESULT GetPixelShaderFunction(DWORD Handle,void* pData,DWORD* pSizeOfData); 115 HRESULT DrawRectPatch(UINT Handle,const(float)* pNumSegs,const(D3DRECTPATCH_INFO)* pRectPatchInfo); 116 HRESULT DrawTriPatch(UINT Handle,const(float)* pNumSegs,const(D3DTRIPATCH_INFO)* pTriPatchInfo); 117 HRESULT DeletePatch(UINT Handle); 118 } 119 120 extern (C++) interface IDirect3DSwapChain8 : IUnknown { 121 HRESULT Present(const(RECT)* pSourceRect,const(RECT)* pDestRect,HWND hDestWindowOverride,const(RGNDATA)* pDirtyRegion); 122 HRESULT GetBackBuffer(UINT BackBuffer,D3DBACKBUFFER_TYPE Type,IDirect3DSurface8* ppBackBuffer); 123 } 124 125 extern (C++) interface IDirect3DResource8 : IUnknown { 126 HRESULT GetDevice(IDirect3DDevice8* ppDevice); 127 HRESULT SetPrivateData(REFGUID refguid,const(void)* pData,DWORD SizeOfData,DWORD Flags); 128 HRESULT GetPrivateData(REFGUID refguid,void* pData,DWORD* pSizeOfData); 129 HRESULT FreePrivateData(REFGUID refguid); 130 DWORD SetPriority(DWORD PriorityNew); 131 DWORD GetPriority(); 132 void PreLoad(); 133 D3DRESOURCETYPE GetType(); 134 } 135 136 extern (C++) interface IDirect3DBaseTexture8 : IDirect3DResource8 { 137 DWORD SetLOD(DWORD LODNew); 138 DWORD GetLOD(); 139 DWORD GetLevelCount(); 140 } 141 142 extern (C++) interface IDirect3DTexture8 : IDirect3DBaseTexture8 { 143 HRESULT GetLevelDesc(UINT Level,D3DSURFACE_DESC *pDesc); 144 HRESULT GetSurfaceLevel(UINT Level,IDirect3DSurface8* ppSurfaceLevel); 145 HRESULT LockRect(UINT Level,D3DLOCKED_RECT* pLockedRect,const(RECT)* pRect,DWORD Flags); 146 HRESULT UnlockRect(UINT Level); 147 HRESULT AddDirtyRect(const(RECT)* pDirtyRect); 148 } 149 150 extern (C++) interface IDirect3DVolumeTexture8 : IDirect3DBaseTexture8 { 151 HRESULT GetLevelDesc(UINT Level,D3DVOLUME_DESC *pDesc); 152 HRESULT GetVolumeLevel(UINT Level,IDirect3DVolume8* ppVolumeLevel); 153 HRESULT LockBox(UINT Level,D3DLOCKED_BOX* pLockedVolume,const(D3DBOX)* pBox,DWORD Flags); 154 HRESULT UnlockBox(UINT Level); 155 HRESULT AddDirtyBox(const(D3DBOX)* pDirtyBox); 156 } 157 158 extern (C++) interface IDirect3DCubeTexture8 : IDirect3DBaseTexture8 { 159 HRESULT GetLevelDesc(UINT Level,D3DSURFACE_DESC *pDesc); 160 HRESULT GetCubeMapSurface(D3DCUBEMAP_FACES FaceType,UINT Level,IDirect3DSurface8* ppCubeMapSurface); 161 HRESULT LockRect(D3DCUBEMAP_FACES FaceType,UINT Level,D3DLOCKED_RECT* pLockedRect,const(RECT)* pRect,DWORD Flags); 162 HRESULT UnlockRect(D3DCUBEMAP_FACES FaceType,UINT Level); 163 HRESULT AddDirtyRect(D3DCUBEMAP_FACES FaceType,const(RECT)* pDirtyRect); 164 } 165 166 extern (C++) interface IDirect3DVertexBuffer8 : IDirect3DResource8 {} 167 extern (C++) interface IDirect3DIndexBuffer8 : IDirect3DResource8 {} 168 169 extern (C++) interface IDirect3DSurface8 : IUnknown { 170 HRESULT GetDevice(IDirect3DDevice8* ppDevice); 171 HRESULT SetPrivateData(REFGUID refguid,const(void)* pData,DWORD SizeOfData,DWORD Flags); 172 HRESULT GetPrivateData(REFGUID refguid,void* pData,DWORD* pSizeOfData); 173 HRESULT FreePrivateData(REFGUID refguid); 174 HRESULT GetContainer(REFIID riid,void** ppContainer); 175 HRESULT GetDesc(D3DSURFACE_DESC *pDesc); 176 HRESULT LockRect(D3DLOCKED_RECT* pLockedRect,const(RECT)* pRect,DWORD Flags); 177 HRESULT UnlockRect(); 178 } 179 180 extern (C++) interface IDirect3DVolume8 : IUnknown { 181 HRESULT GetDevice(IDirect3DDevice8* ppDevice); 182 HRESULT SetPrivateData(REFGUID refguid,const(void)* pData,DWORD SizeOfData,DWORD Flags); 183 HRESULT GetPrivateData(REFGUID refguid,void* pData,DWORD* pSizeOfData); 184 HRESULT FreePrivateData(REFGUID refguid); 185 HRESULT GetContainer(REFIID riid,void** ppContainer); 186 HRESULT GetDesc(D3DVOLUME_DESC *pDesc); 187 HRESULT LockBox(D3DLOCKED_BOX * pLockedVolume,const(D3DBOX)* pBox,DWORD Flags); 188 HRESULT UnlockBox(); 189 } 190 191 struct D3DVIEWPORT8 { 192 DWORD X; 193 DWORD Y; /* Viewport Top left */ 194 DWORD Width; 195 DWORD Height; /* Viewport Dimensions */ 196 float MinZ; /* Min/max of clip Volume */ 197 float MaxZ; 198 } 199 200 struct D3DCLIPSTATUS8 { 201 DWORD ClipUnion; 202 DWORD ClipIntersection; 203 } 204 205 struct D3DMATERIAL8 { 206 D3DCOLORVALUE Diffuse; /* Diffuse color RGBA */ 207 D3DCOLORVALUE Ambient; /* Ambient color RGB */ 208 D3DCOLORVALUE Specular; /* Specular 'shininess' */ 209 D3DCOLORVALUE Emissive; /* Emissive color RGB */ 210 float Power; /* Sharpness if specular highlight */ 211 } 212 213 struct D3DLIGHT8 { 214 D3DLIGHTTYPE Type; /* Type of light source */ 215 D3DCOLORVALUE Diffuse; /* Diffuse color of light */ 216 D3DCOLORVALUE Specular; /* Specular color of light */ 217 D3DCOLORVALUE Ambient; /* Ambient color of light */ 218 D3DVECTOR Position; /* Position in world space */ 219 D3DVECTOR Direction; /* Direction in world space */ 220 float Range; /* Cutoff range */ 221 float Falloff; /* Falloff */ 222 float Attenuation0; /* Constant attenuation */ 223 float Attenuation1; /* Linear attenuation */ 224 float Attenuation2; /* Quadratic attenuation */ 225 float Theta; /* Inner angle of spotlight cone */ 226 float Phi; /* Outer angle of spotlight cone */ 227 } 228 229 __gshared LPDIRECT3DCREATE8 Direct3DCreate8; 230 231 extern (Windows) { 232 alias LPDIRECT3DCREATE8 = IDirect3D8 function(UINT SDKVersion); 233 } 234 235 enum D3D_SDK_VERSION = 220;