_open_osfhandle is expected to take the absence of either _O_TEXT or
[wine/gsoc_dplay.git] / dlls / d3d8 / d3d8_private.h
blob1f9b12a6f455bc6e5e9a3edce2d3e25cb692bf52
1 /*
2 * Direct3D 8 private include file
4 * Copyright 2002 Jason Edmeades
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21 #ifndef __WINE_D3DX8_PRIVATE_H
22 #define __WINE_D3DX8_PRIVATE_H
24 #ifndef __WINE_CONFIG_H
25 # error You must include config.h to use this header
26 #endif
28 /* THIS FILE MUST NOT CONTAIN X11 or MESA DEFINES */
29 #define XMD_H /* This is to prevent the Xmd.h inclusion bug :-/ */
30 #include <GL/gl.h>
31 #include <GL/glx.h>
32 #ifdef HAVE_GL_GLEXT_H
33 # include <GL/glext.h>
34 #endif
35 #undef XMD_H
37 #undef APIENTRY
38 #undef CALLBACK
39 #undef WINAPI
41 /* Redefines the constants */
42 #define CALLBACK __stdcall
43 #define WINAPI __stdcall
44 #define APIENTRY WINAPI
46 /* X11 locking */
48 extern void (*wine_tsx11_lock_ptr)(void);
49 extern void (*wine_tsx11_unlock_ptr)(void);
51 /* As GLX relies on X, this is needed */
52 #define ENTER_GL() wine_tsx11_lock_ptr()
53 #define LEAVE_GL() wine_tsx11_unlock_ptr()
55 #include "d3d8.h"
57 /* Device caps */
58 #define MAX_STREAMS 16
59 #define MAX_ACTIVE_LIGHTS 8
60 #define MAX_CLIPPLANES D3DMAXUSERCLIPPLANES
61 #define MAX_LEVELS 256
63 /* Other useful values */
64 #define HIGHEST_RENDER_STATE 174
65 #define HIGHEST_TEXTURE_STATE 29
66 #define HIGHEST_TRANSFORMSTATE 512
67 #define D3DSBT_RECORDED 0xfffffffe
69 /* Direct3D8 Interfaces: */
70 typedef struct IDirect3DBaseTexture8Impl IDirect3DBaseTexture8Impl;
71 typedef struct IDirect3DVolumeTexture8Impl IDirect3DVolumeTexture8Impl;
72 typedef struct IDirect3D8Impl IDirect3D8Impl;
73 typedef struct IDirect3DDevice8Impl IDirect3DDevice8Impl;
74 typedef struct IDirect3DTexture8Impl IDirect3DTexture8Impl;
75 typedef struct IDirect3DCubeTexture8Impl IDirect3DCubeTexture8Impl;
76 typedef struct IDirect3DIndexBuffer8Impl IDirect3DIndexBuffer8Impl;
77 typedef struct IDirect3DSurface8Impl IDirect3DSurface8Impl;
78 typedef struct IDirect3DSwapChain8Impl IDirect3DSwapChain8Impl;
79 typedef struct IDirect3DResource8Impl IDirect3DResource8Impl;
80 typedef struct IDirect3DVolume8Impl IDirect3DVolume8Impl;
81 typedef struct IDirect3DVertexBuffer8Impl IDirect3DVertexBuffer8Impl;
83 /** Private Interfaces: */
84 typedef struct IDirect3DStateBlockImpl IDirect3DStateBlockImpl;
85 typedef struct IDirect3DVertexShaderImpl IDirect3DVertexShaderImpl;
86 typedef struct IDirect3DPixelShaderImpl IDirect3DPixelShaderImpl;
87 typedef struct IDirect3DVertexShaderDeclarationImpl IDirect3DVertexShaderDeclarationImpl;
89 typedef struct D3DSHADERVECTOR {
90 float x;
91 float y;
92 float z;
93 float w;
94 } D3DSHADERVECTOR;
96 typedef struct D3DSHADERSCALAR {
97 float x;
98 } D3DSHADERSCALAR;
100 #define D3D8_VSHADER_MAX_CONSTANTS 96
101 #define D3D8_PSHADER_MAX_CONSTANTS 96
102 typedef D3DSHADERVECTOR VSHADERCONSTANTS8[D3D8_VSHADER_MAX_CONSTANTS];
104 typedef struct SHADERDATA8 {
105 /** Run Time Shader Function Constants */
106 /*D3DXBUFFER* constants;*/
107 VSHADERCONSTANTS8 C;
108 /** Shader Code as char ... */
109 CONST DWORD* code;
110 UINT codeLength;
111 } SHADERDATA8;
113 /** temporary here waiting for buffer code */
114 typedef struct VSHADERINPUTDATA8 {
115 D3DSHADERVECTOR V[16];
116 } VSHADERINPUTDATA8;
118 /** temporary here waiting for buffer code */
119 typedef struct VSHADEROUTPUTDATA8 {
120 D3DSHADERVECTOR oPos;
121 D3DSHADERVECTOR oD[2];
122 D3DSHADERVECTOR oT[4];
123 D3DSHADERVECTOR oFog;
124 D3DSHADERVECTOR oPts;
125 } VSHADEROUTPUTDATA8;
128 * External prototypes
130 /*BOOL D3DRAW_HAL_Init(HINSTANCE, DWORD, LPVOID); */
131 void CreateStateBlock(LPDIRECT3DDEVICE8 iface);
134 * Macros
136 #define checkGLcall(A) \
138 GLint err = glGetError(); \
139 if (err != GL_NO_ERROR) { \
140 FIXME(">>>>>>>>>>>>>>>>> %x from %s @ %s / %d\n", err, A, __FILE__, __LINE__); \
141 } else { \
142 TRACE("%s call ok %s / %d\n", A, __FILE__, __LINE__); \
145 #define vcheckGLcall(A) \
147 GLint err = glGetError(); \
148 if (err != GL_NO_ERROR) { \
149 FIXME(">>>>>>>>>>>>>>>>> %x from %s @ %s / %d\n", err, A, __FILE__, __LINE__); \
150 } else { \
151 VTRACE(("%s call ok %s / %d\n", A, __FILE__, __LINE__)); \
155 #define checkGLSupport(ExtName) FALSE/*(TRUE == This->direct3d8->glInfo.supported[ExtName])*/
156 #define GLExtCall(FuncName) /*(This->direct3d8->glInfo.FuncName)*/
159 #define D3DCOLOR_R(dw) (((float) (((dw) >> 16) & 0xFF)) / 255.0f)
160 #define D3DCOLOR_G(dw) (((float) (((dw) >> 8) & 0xFF)) / 255.0f)
161 #define D3DCOLOR_B(dw) (((float) (((dw) >> 0) & 0xFF)) / 255.0f)
162 #define D3DCOLOR_A(dw) (((float) (((dw) >> 24) & 0xFF)) / 255.0f)
164 #define D3DCOLORTOCOLORVALUE(dw, col) \
165 (col).r = D3DCOLOR_R(dw); \
166 (col).g = D3DCOLOR_G(dw); \
167 (col).b = D3DCOLOR_B(dw); \
168 (col).a = D3DCOLOR_A(dw);
170 #define D3DCOLORTOVECTOR4(dw, vec) \
171 (vec).x = D3DCOLOR_R(dw); \
172 (vec).y = D3DCOLOR_G(dw); \
173 (vec).z = D3DCOLOR_B(dw); \
174 (vec).w = D3DCOLOR_A(dw);
178 /* ===========================================================================
179 The interfactes themselves
180 =========================================================================== */
182 /* ---------- */
183 /* IDirect3D8 */
184 /* ---------- */
186 /*****************************************************************************
187 * Predeclare the interface implementation structures
189 extern ICOM_VTABLE(IDirect3D8) Direct3D8_Vtbl;
190 extern ICOM_VTABLE(IDirect3D8) mesa_d3d8vt;
192 /*****************************************************************************
193 * IDirect3D implementation structure
195 struct IDirect3D8Impl
197 /* IUnknown fields */
198 ICOM_VFIELD(IDirect3D8);
199 DWORD ref;
201 /* IDirect3D8 fields */
204 /* IUnknown: */
205 extern HRESULT WINAPI IDirect3D8Impl_QueryInterface(LPDIRECT3D8 iface,REFIID refiid,LPVOID *obj);
206 extern ULONG WINAPI IDirect3D8Impl_AddRef(LPDIRECT3D8 iface);
207 extern ULONG WINAPI IDirect3D8Impl_Release(LPDIRECT3D8 iface);
209 /* IDirect3d8: */
210 extern HRESULT WINAPI IDirect3D8Impl_RegisterSoftwareDevice(LPDIRECT3D8 iface, void* pInitializeFunction);
211 extern UINT WINAPI IDirect3D8Impl_GetAdapterCount(LPDIRECT3D8 iface);
212 extern HRESULT WINAPI IDirect3D8Impl_GetAdapterIdentifier(LPDIRECT3D8 iface, UINT Adapter, DWORD Flags, D3DADAPTER_IDENTIFIER8* pIdentifier);
213 extern UINT WINAPI IDirect3D8Impl_GetAdapterModeCount(LPDIRECT3D8 iface, UINT Adapter);
214 extern HRESULT WINAPI IDirect3D8Impl_EnumAdapterModes(LPDIRECT3D8 iface, UINT Adapter, UINT Mode, D3DDISPLAYMODE* pMode);
215 extern HRESULT WINAPI IDirect3D8Impl_GetAdapterDisplayMode(LPDIRECT3D8 iface, UINT Adapter, D3DDISPLAYMODE* pMode);
216 extern HRESULT WINAPI IDirect3D8Impl_CheckDeviceType(LPDIRECT3D8 iface, UINT Adapter, D3DDEVTYPE CheckType, D3DFORMAT DisplayFormat,
217 D3DFORMAT BackBufferFormat, BOOL Windowed);
218 extern HRESULT WINAPI IDirect3D8Impl_CheckDeviceFormat(LPDIRECT3D8 iface, UINT Adapter, D3DDEVTYPE DeviceType, D3DFORMAT AdapterFormat,
219 DWORD Usage, D3DRESOURCETYPE RType, D3DFORMAT CheckFormat);
220 extern HRESULT WINAPI IDirect3D8Impl_CheckDeviceMultiSampleType(LPDIRECT3D8 iface, UINT Adapter, D3DDEVTYPE DeviceType, D3DFORMAT SurfaceFormat,
221 BOOL Windowed, D3DMULTISAMPLE_TYPE MultiSampleType);
222 extern HRESULT WINAPI IDirect3D8Impl_CheckDepthStencilMatch(LPDIRECT3D8 iface, UINT Adapter, D3DDEVTYPE DeviceType, D3DFORMAT AdapterFormat,
223 D3DFORMAT RenderTargetFormat, D3DFORMAT DepthStencilFormat);
224 extern HRESULT WINAPI IDirect3D8Impl_GetDeviceCaps(LPDIRECT3D8 iface, UINT Adapter, D3DDEVTYPE DeviceType, D3DCAPS8* pCaps);
225 extern HMONITOR WINAPI IDirect3D8Impl_GetAdapterMonitor(LPDIRECT3D8 iface, UINT Adapter);
226 extern HRESULT WINAPI IDirect3D8Impl_CreateDevice(LPDIRECT3D8 iface, UINT Adapter, D3DDEVTYPE DeviceType, HWND hFocusWindow,
227 DWORD BehaviorFlags, D3DPRESENT_PARAMETERS* pPresentationParameters,
228 IDirect3DDevice8** ppReturnedDeviceInterface);
230 /* ---------------- */
231 /* IDirect3DDevice8 */
232 /* ---------------- */
234 /*****************************************************************************
235 * Predeclare the interface implementation structures
237 extern ICOM_VTABLE(IDirect3DDevice8) Direct3DDevice8_Vtbl;
239 /*****************************************************************************
240 * IDirect3DDevice8 implementation structure
242 struct IDirect3DDevice8Impl
244 /* IUnknown fields */
245 ICOM_VFIELD(IDirect3DDevice8);
246 DWORD ref;
248 /* IDirect3DDevice8 fields */
249 IDirect3D8Impl *direct3d8;
250 IDirect3DSurface8Impl *backBuffer;
251 IDirect3DSurface8Impl *depthStencilBuffer;
252 D3DPRESENT_PARAMETERS PresentParms;
253 D3DDEVICE_CREATION_PARAMETERS CreateParms;
255 UINT adapterNo;
256 D3DDEVTYPE devType;
258 UINT srcBlend;
259 UINT dstBlend;
261 /* State block related */
262 BOOL isRecordingState;
263 IDirect3DStateBlockImpl *StateBlock;
264 IDirect3DStateBlockImpl *UpdateStateBlock;
266 /* Other required values */
267 float lightPosn[MAX_ACTIVE_LIGHTS][4];
268 float lightDirn[MAX_ACTIVE_LIGHTS][4];
270 /* Optimization */
271 D3DMATRIX lastProj;
272 D3DMATRIX lastView;
273 D3DMATRIX lastWorld0;
274 D3DMATRIX lastTexTrans[8];
277 /* OpenGL related */
278 GLXContext glCtx;
279 XVisualInfo *visInfo;
280 Display *display;
281 Window win;
283 /* OpenGL Extension related */
284 BOOL isMultiTexture;
285 BOOL isDot3;
286 UINT TextureUnits;
287 UINT clipPlanes;
288 UINT maxLights;
290 UINT dummyTextureName[8];
293 /* IUnknown: */
294 extern HRESULT WINAPI IDirect3DDevice8Impl_QueryInterface(LPDIRECT3DDEVICE8 iface,REFIID refiid,LPVOID *obj);
295 extern ULONG WINAPI IDirect3DDevice8Impl_AddRef(LPDIRECT3DDEVICE8 iface);
296 extern ULONG WINAPI IDirect3DDevice8Impl_Release(LPDIRECT3DDEVICE8 iface);
298 /* IDirect3DDevice8: */
299 extern HRESULT WINAPI IDirect3DDevice8Impl_TestCooperativeLevel(LPDIRECT3DDEVICE8 iface);
300 extern UINT WINAPI IDirect3DDevice8Impl_GetAvailableTextureMem(LPDIRECT3DDEVICE8 iface);
301 extern HRESULT WINAPI IDirect3DDevice8Impl_ResourceManagerDiscardBytes(LPDIRECT3DDEVICE8 iface, DWORD Bytes);
302 extern HRESULT WINAPI IDirect3DDevice8Impl_GetDirect3D(LPDIRECT3DDEVICE8 iface, IDirect3D8** ppD3D8);
303 extern HRESULT WINAPI IDirect3DDevice8Impl_GetDeviceCaps(LPDIRECT3DDEVICE8 iface, D3DCAPS8* pCaps);
304 extern HRESULT WINAPI IDirect3DDevice8Impl_GetDisplayMode(LPDIRECT3DDEVICE8 iface, D3DDISPLAYMODE* pMode);
305 extern HRESULT WINAPI IDirect3DDevice8Impl_GetCreationParameters(LPDIRECT3DDEVICE8 iface, D3DDEVICE_CREATION_PARAMETERS* pParameters);
306 extern HRESULT WINAPI IDirect3DDevice8Impl_SetCursorProperties(LPDIRECT3DDEVICE8 iface, UINT XHotSpot, UINT YHotSpot, IDirect3DSurface8* pCursorBitmap);
307 extern void WINAPI IDirect3DDevice8Impl_SetCursorPosition(LPDIRECT3DDEVICE8 iface, UINT XScreenSpace, UINT YScreenSpace,DWORD Flags);
308 extern BOOL WINAPI IDirect3DDevice8Impl_ShowCursor(LPDIRECT3DDEVICE8 iface, BOOL bShow);
309 extern HRESULT WINAPI IDirect3DDevice8Impl_CreateAdditionalSwapChain(LPDIRECT3DDEVICE8 iface, D3DPRESENT_PARAMETERS* pPresentationParameters, IDirect3DSwapChain8** pSwapChain);
310 extern HRESULT WINAPI IDirect3DDevice8Impl_Reset(LPDIRECT3DDEVICE8 iface, D3DPRESENT_PARAMETERS* pPresentationParameters);
311 extern HRESULT WINAPI IDirect3DDevice8Impl_Present(LPDIRECT3DDEVICE8 iface, CONST RECT* pSourceRect,CONST RECT* pDestRect,HWND hDestWindowOverride,CONST RGNDATA* pDirtyRegion);
312 extern HRESULT WINAPI IDirect3DDevice8Impl_GetBackBuffer(LPDIRECT3DDEVICE8 iface, UINT BackBuffer,D3DBACKBUFFER_TYPE Type,IDirect3DSurface8** ppBackBuffer);
313 extern HRESULT WINAPI IDirect3DDevice8Impl_GetRasterStatus(LPDIRECT3DDEVICE8 iface, D3DRASTER_STATUS* pRasterStatus);
314 extern void WINAPI IDirect3DDevice8Impl_SetGammaRamp(LPDIRECT3DDEVICE8 iface, DWORD Flags,CONST D3DGAMMARAMP* pRamp);
315 extern void WINAPI IDirect3DDevice8Impl_GetGammaRamp(LPDIRECT3DDEVICE8 iface, D3DGAMMARAMP* pRamp);
316 extern HRESULT WINAPI IDirect3DDevice8Impl_CreateTexture(LPDIRECT3DDEVICE8 iface, UINT Width,UINT Height,UINT Levels,DWORD Usage,D3DFORMAT Format,D3DPOOL Pool,IDirect3DTexture8** ppTexture);
317 extern HRESULT WINAPI IDirect3DDevice8Impl_CreateVolumeTexture(LPDIRECT3DDEVICE8 iface, UINT Width,UINT Height,UINT Depth,UINT Levels,DWORD Usage,D3DFORMAT Format,D3DPOOL Pool,IDirect3DVolumeTexture8** ppVolumeTexture);
318 extern HRESULT WINAPI IDirect3DDevice8Impl_CreateCubeTexture(LPDIRECT3DDEVICE8 iface, UINT EdgeLength,UINT Levels,DWORD Usage,D3DFORMAT Format,D3DPOOL Pool,IDirect3DCubeTexture8** ppCubeTexture);
319 extern HRESULT WINAPI IDirect3DDevice8Impl_CreateVertexBuffer(LPDIRECT3DDEVICE8 iface, UINT Length,DWORD Usage,DWORD FVF,D3DPOOL Pool,IDirect3DVertexBuffer8** ppVertexBuffer);
320 extern HRESULT WINAPI IDirect3DDevice8Impl_CreateIndexBuffer(LPDIRECT3DDEVICE8 iface, UINT Length,DWORD Usage,D3DFORMAT Format,D3DPOOL Pool,IDirect3DIndexBuffer8** ppIndexBuffer);
321 extern HRESULT WINAPI IDirect3DDevice8Impl_CreateRenderTarget(LPDIRECT3DDEVICE8 iface, UINT Width,UINT Height,D3DFORMAT Format,D3DMULTISAMPLE_TYPE MultiSample,BOOL Lockable,IDirect3DSurface8** ppSurface);
322 extern HRESULT WINAPI IDirect3DDevice8Impl_CreateDepthStencilSurface(LPDIRECT3DDEVICE8 iface, UINT Width,UINT Height,D3DFORMAT Format,D3DMULTISAMPLE_TYPE MultiSample,IDirect3DSurface8** ppSurface);
323 extern HRESULT WINAPI IDirect3DDevice8Impl_CreateImageSurface(LPDIRECT3DDEVICE8 iface, UINT Width,UINT Height,D3DFORMAT Format,IDirect3DSurface8** ppSurface);
324 extern HRESULT WINAPI IDirect3DDevice8Impl_CopyRects(LPDIRECT3DDEVICE8 iface, IDirect3DSurface8* pSourceSurface,CONST RECT* pSourceRectsArray,UINT cRects,IDirect3DSurface8* pDestinationSurface,CONST POINT* pDestPointsArray);
325 extern HRESULT WINAPI IDirect3DDevice8Impl_UpdateTexture(LPDIRECT3DDEVICE8 iface, IDirect3DBaseTexture8* pSourceTexture,IDirect3DBaseTexture8* pDestinationTexture);
326 extern HRESULT WINAPI IDirect3DDevice8Impl_GetFrontBuffer(LPDIRECT3DDEVICE8 iface, IDirect3DSurface8* pDestSurface);
327 extern HRESULT WINAPI IDirect3DDevice8Impl_SetRenderTarget(LPDIRECT3DDEVICE8 iface, IDirect3DSurface8* pRenderTarget,IDirect3DSurface8* pNewZStencil);
328 extern HRESULT WINAPI IDirect3DDevice8Impl_GetRenderTarget(LPDIRECT3DDEVICE8 iface, IDirect3DSurface8** ppRenderTarget);
329 extern HRESULT WINAPI IDirect3DDevice8Impl_GetDepthStencilSurface(LPDIRECT3DDEVICE8 iface, IDirect3DSurface8** ppZStencilSurface);
330 extern HRESULT WINAPI IDirect3DDevice8Impl_BeginScene(LPDIRECT3DDEVICE8 iface);
331 extern HRESULT WINAPI IDirect3DDevice8Impl_EndScene(LPDIRECT3DDEVICE8 iface);
332 extern HRESULT WINAPI IDirect3DDevice8Impl_Clear(LPDIRECT3DDEVICE8 iface, DWORD Count,CONST D3DRECT* pRects,DWORD Flags,D3DCOLOR Color,float Z,DWORD Stencil);
333 extern HRESULT WINAPI IDirect3DDevice8Impl_SetTransform(LPDIRECT3DDEVICE8 iface, D3DTRANSFORMSTATETYPE State,CONST D3DMATRIX* pMatrix);
334 extern HRESULT WINAPI IDirect3DDevice8Impl_GetTransform(LPDIRECT3DDEVICE8 iface, D3DTRANSFORMSTATETYPE State,D3DMATRIX* pMatrix);
335 extern HRESULT WINAPI IDirect3DDevice8Impl_MultiplyTransform(LPDIRECT3DDEVICE8 iface, D3DTRANSFORMSTATETYPE State, CONST D3DMATRIX* pMatrix);
336 extern HRESULT WINAPI IDirect3DDevice8Impl_SetViewport(LPDIRECT3DDEVICE8 iface, CONST D3DVIEWPORT8* pViewport);
337 extern HRESULT WINAPI IDirect3DDevice8Impl_GetViewport(LPDIRECT3DDEVICE8 iface, D3DVIEWPORT8* pViewport);
338 extern HRESULT WINAPI IDirect3DDevice8Impl_SetMaterial(LPDIRECT3DDEVICE8 iface, CONST D3DMATERIAL8* pMaterial);
339 extern HRESULT WINAPI IDirect3DDevice8Impl_GetMaterial(LPDIRECT3DDEVICE8 iface, D3DMATERIAL8* pMaterial);
340 extern HRESULT WINAPI IDirect3DDevice8Impl_SetLight(LPDIRECT3DDEVICE8 iface, DWORD Index,CONST D3DLIGHT8* pLight);
341 extern HRESULT WINAPI IDirect3DDevice8Impl_GetLight(LPDIRECT3DDEVICE8 iface, DWORD Index,D3DLIGHT8* pLight);
342 extern HRESULT WINAPI IDirect3DDevice8Impl_LightEnable(LPDIRECT3DDEVICE8 iface, DWORD Index,BOOL Enable);
343 extern HRESULT WINAPI IDirect3DDevice8Impl_GetLightEnable(LPDIRECT3DDEVICE8 iface, DWORD Index,BOOL* pEnable);
344 extern HRESULT WINAPI IDirect3DDevice8Impl_SetClipPlane(LPDIRECT3DDEVICE8 iface, DWORD Index,CONST float* pPlane);
345 extern HRESULT WINAPI IDirect3DDevice8Impl_GetClipPlane(LPDIRECT3DDEVICE8 iface, DWORD Index,float* pPlane);
346 extern HRESULT WINAPI IDirect3DDevice8Impl_SetRenderState(LPDIRECT3DDEVICE8 iface, D3DRENDERSTATETYPE State,DWORD Value);
347 extern HRESULT WINAPI IDirect3DDevice8Impl_GetRenderState(LPDIRECT3DDEVICE8 iface, D3DRENDERSTATETYPE State,DWORD* pValue);
348 extern HRESULT WINAPI IDirect3DDevice8Impl_BeginStateBlock(LPDIRECT3DDEVICE8 iface);
349 extern HRESULT WINAPI IDirect3DDevice8Impl_EndStateBlock(LPDIRECT3DDEVICE8 iface, DWORD* pToken);
350 extern HRESULT WINAPI IDirect3DDevice8Impl_ApplyStateBlock(LPDIRECT3DDEVICE8 iface, DWORD Token);
351 extern HRESULT WINAPI IDirect3DDevice8Impl_CaptureStateBlock(LPDIRECT3DDEVICE8 iface, DWORD Token);
352 extern HRESULT WINAPI IDirect3DDevice8Impl_DeleteStateBlock(LPDIRECT3DDEVICE8 iface, DWORD Token);
353 extern HRESULT WINAPI IDirect3DDevice8Impl_CreateStateBlock(LPDIRECT3DDEVICE8 iface, D3DSTATEBLOCKTYPE Type,DWORD* pToken);
354 extern HRESULT WINAPI IDirect3DDevice8Impl_SetClipStatus(LPDIRECT3DDEVICE8 iface, CONST D3DCLIPSTATUS8* pClipStatus);
355 extern HRESULT WINAPI IDirect3DDevice8Impl_GetClipStatus(LPDIRECT3DDEVICE8 iface, D3DCLIPSTATUS8* pClipStatus);
356 extern HRESULT WINAPI IDirect3DDevice8Impl_GetTexture(LPDIRECT3DDEVICE8 iface, DWORD Stage,IDirect3DBaseTexture8** ppTexture);
357 extern HRESULT WINAPI IDirect3DDevice8Impl_SetTexture(LPDIRECT3DDEVICE8 iface, DWORD Stage,IDirect3DBaseTexture8* pTexture);
358 extern HRESULT WINAPI IDirect3DDevice8Impl_GetTextureStageState(LPDIRECT3DDEVICE8 iface, DWORD Stage,D3DTEXTURESTAGESTATETYPE Type,DWORD* pValue);
359 extern HRESULT WINAPI IDirect3DDevice8Impl_SetTextureStageState(LPDIRECT3DDEVICE8 iface, DWORD Stage,D3DTEXTURESTAGESTATETYPE Type,DWORD Value);
360 extern HRESULT WINAPI IDirect3DDevice8Impl_ValidateDevice(LPDIRECT3DDEVICE8 iface, DWORD* pNumPasses);
361 extern HRESULT WINAPI IDirect3DDevice8Impl_GetInfo(LPDIRECT3DDEVICE8 iface, DWORD DevInfoID,void* pDevInfoStruct,DWORD DevInfoStructSize);
362 extern HRESULT WINAPI IDirect3DDevice8Impl_SetPaletteEntries(LPDIRECT3DDEVICE8 iface, UINT PaletteNumber,CONST PALETTEENTRY* pEntries);
363 extern HRESULT WINAPI IDirect3DDevice8Impl_GetPaletteEntries(LPDIRECT3DDEVICE8 iface, UINT PaletteNumber,PALETTEENTRY* pEntries);
364 extern HRESULT WINAPI IDirect3DDevice8Impl_SetCurrentTexturePalette(LPDIRECT3DDEVICE8 iface, UINT PaletteNumber);
365 extern HRESULT WINAPI IDirect3DDevice8Impl_GetCurrentTexturePalette(LPDIRECT3DDEVICE8 iface, UINT *PaletteNumber);
366 extern HRESULT WINAPI IDirect3DDevice8Impl_DrawPrimitive(LPDIRECT3DDEVICE8 iface, D3DPRIMITIVETYPE PrimitiveType,UINT StartVertex,UINT PrimitiveCount);
367 extern HRESULT WINAPI IDirect3DDevice8Impl_DrawIndexedPrimitive(LPDIRECT3DDEVICE8 iface, D3DPRIMITIVETYPE PrimitiveType,UINT minIndex,UINT NumVertices,UINT startIndex,UINT primCount);
368 extern HRESULT WINAPI IDirect3DDevice8Impl_DrawPrimitiveUP(LPDIRECT3DDEVICE8 iface, D3DPRIMITIVETYPE PrimitiveType,UINT PrimitiveCount,CONST void* pVertexStreamZeroData,UINT VertexStreamZeroStride);
369 extern HRESULT WINAPI IDirect3DDevice8Impl_DrawIndexedPrimitiveUP(LPDIRECT3DDEVICE8 iface, D3DPRIMITIVETYPE PrimitiveType,UINT MinVertexIndex,UINT NumVertexIndices,UINT PrimitiveCount,CONST void* pIndexData,D3DFORMAT IndexDataFormat,CONST void* pVertexStreamZeroData,UINT VertexStreamZeroStride);
370 extern HRESULT WINAPI IDirect3DDevice8Impl_ProcessVertices(LPDIRECT3DDEVICE8 iface, UINT SrcStartIndex,UINT DestIndex,UINT VertexCount,IDirect3DVertexBuffer8* pDestBuffer,DWORD Flags);
371 extern HRESULT WINAPI IDirect3DDevice8Impl_CreateVertexShader(LPDIRECT3DDEVICE8 iface, CONST DWORD* pDeclaration,CONST DWORD* pFunction,DWORD* pHandle,DWORD Usage);
372 extern HRESULT WINAPI IDirect3DDevice8Impl_SetVertexShader(LPDIRECT3DDEVICE8 iface, DWORD Handle);
373 extern HRESULT WINAPI IDirect3DDevice8Impl_GetVertexShader(LPDIRECT3DDEVICE8 iface, DWORD* pHandle);
374 extern HRESULT WINAPI IDirect3DDevice8Impl_DeleteVertexShader(LPDIRECT3DDEVICE8 iface, DWORD Handle);
375 extern HRESULT WINAPI IDirect3DDevice8Impl_SetVertexShaderConstant(LPDIRECT3DDEVICE8 iface, DWORD Register,CONST void* pConstantData,DWORD ConstantCount);
376 extern HRESULT WINAPI IDirect3DDevice8Impl_GetVertexShaderConstant(LPDIRECT3DDEVICE8 iface, DWORD Register,void* pConstantData,DWORD ConstantCount);
377 extern HRESULT WINAPI IDirect3DDevice8Impl_GetVertexShaderDeclaration(LPDIRECT3DDEVICE8 iface, DWORD Handle,void* pData,DWORD* pSizeOfData);
378 extern HRESULT WINAPI IDirect3DDevice8Impl_GetVertexShaderFunction(LPDIRECT3DDEVICE8 iface, DWORD Handle,void* pData,DWORD* pSizeOfData);
379 extern HRESULT WINAPI IDirect3DDevice8Impl_SetStreamSource(LPDIRECT3DDEVICE8 iface, UINT StreamNumber,IDirect3DVertexBuffer8* pStreamData,UINT Stride);
380 extern HRESULT WINAPI IDirect3DDevice8Impl_GetStreamSource(LPDIRECT3DDEVICE8 iface, UINT StreamNumber,IDirect3DVertexBuffer8** ppStreamData,UINT* pStride);
381 extern HRESULT WINAPI IDirect3DDevice8Impl_SetIndices(LPDIRECT3DDEVICE8 iface, IDirect3DIndexBuffer8* pIndexData,UINT BaseVertexIndex);
382 extern HRESULT WINAPI IDirect3DDevice8Impl_GetIndices(LPDIRECT3DDEVICE8 iface, IDirect3DIndexBuffer8** ppIndexData,UINT* pBaseVertexIndex);
383 extern HRESULT WINAPI IDirect3DDevice8Impl_CreatePixelShader(LPDIRECT3DDEVICE8 iface, CONST DWORD* pFunction,DWORD* pHandle);
384 extern HRESULT WINAPI IDirect3DDevice8Impl_SetPixelShader(LPDIRECT3DDEVICE8 iface, DWORD Handle);
385 extern HRESULT WINAPI IDirect3DDevice8Impl_GetPixelShader(LPDIRECT3DDEVICE8 iface, DWORD* pHandle);
386 extern HRESULT WINAPI IDirect3DDevice8Impl_DeletePixelShader(LPDIRECT3DDEVICE8 iface, DWORD Handle);
387 extern HRESULT WINAPI IDirect3DDevice8Impl_SetPixelShaderConstant(LPDIRECT3DDEVICE8 iface, DWORD Register,CONST void* pConstantData,DWORD ConstantCount);
388 extern HRESULT WINAPI IDirect3DDevice8Impl_GetPixelShaderConstant(LPDIRECT3DDEVICE8 iface, DWORD Register,void* pConstantData,DWORD ConstantCount);
389 extern HRESULT WINAPI IDirect3DDevice8Impl_GetPixelShaderFunction(LPDIRECT3DDEVICE8 iface, DWORD Handle,void* pData,DWORD* pSizeOfData);
390 extern HRESULT WINAPI IDirect3DDevice8Impl_DrawRectPatch(LPDIRECT3DDEVICE8 iface, UINT Handle,CONST float* pNumSegs,CONST D3DRECTPATCH_INFO* pRectPatchInfo);
391 extern HRESULT WINAPI IDirect3DDevice8Impl_DrawTriPatch(LPDIRECT3DDEVICE8 iface, UINT Handle,CONST float* pNumSegs,CONST D3DTRIPATCH_INFO* pTriPatchInfo);
392 extern HRESULT WINAPI IDirect3DDevice8Impl_DeletePatch(LPDIRECT3DDEVICE8 iface, UINT Handle);
394 /* ---------------- */
395 /* IDirect3DVolume8 */
396 /* ---------------- */
398 /*****************************************************************************
399 * Predeclare the interface implementation structures
401 extern ICOM_VTABLE(IDirect3DVolume8) Direct3DVolume8_Vtbl;
403 /*****************************************************************************
404 * IDirect3DVolume8 implementation structure
406 struct IDirect3DVolume8Impl
408 /* IUnknown fields */
409 ICOM_VFIELD(IDirect3DVolume8);
410 DWORD ref;
412 /* IDirect3DVolume8 fields */
413 IDirect3DDevice8Impl *Device;
414 D3DRESOURCETYPE ResourceType;
416 void *Container;
417 D3DVOLUME_DESC myDesc;
418 BYTE *allocatedMemory;
419 UINT textureName;
420 UINT bytesPerPixel;
423 /* IUnknown: */
424 extern HRESULT WINAPI IDirect3DVolume8Impl_QueryInterface(LPDIRECT3DVOLUME8 iface,REFIID refiid,LPVOID *obj);
425 extern ULONG WINAPI IDirect3DVolume8Impl_AddRef(LPDIRECT3DVOLUME8 iface);
426 extern ULONG WINAPI IDirect3DVolume8Impl_Release(LPDIRECT3DVOLUME8 iface);
428 /* IDirect3DVolume8: */
429 extern HRESULT WINAPI IDirect3DVolume8Impl_GetDevice(LPDIRECT3DVOLUME8 iface, IDirect3DDevice8** ppDevice);
430 extern HRESULT WINAPI IDirect3DVolume8Impl_SetPrivateData(LPDIRECT3DVOLUME8 iface, REFGUID refguid, CONST void* pData, DWORD SizeOfData, DWORD Flags);
431 extern HRESULT WINAPI IDirect3DVolume8Impl_GetPrivateData(LPDIRECT3DVOLUME8 iface, REFGUID refguid, void* pData, DWORD* pSizeOfData);
432 extern HRESULT WINAPI IDirect3DVolume8Impl_FreePrivateData(LPDIRECT3DVOLUME8 iface, REFGUID refguid);
433 extern HRESULT WINAPI IDirect3DVolume8Impl_GetContainer(LPDIRECT3DVOLUME8 iface, REFIID riid, void** ppContainer);
434 extern HRESULT WINAPI IDirect3DVolume8Impl_GetDesc(LPDIRECT3DVOLUME8 iface, D3DVOLUME_DESC* pDesc);
435 extern HRESULT WINAPI IDirect3DVolume8Impl_LockBox(LPDIRECT3DVOLUME8 iface, D3DLOCKED_BOX* pLockedVolume,CONST D3DBOX* pBox, DWORD Flags);
436 extern HRESULT WINAPI IDirect3DVolume8Impl_UnlockBox(LPDIRECT3DVOLUME8 iface);
438 /* ------------------- */
439 /* IDirect3DSwapChain8 */
440 /* ------------------- */
442 /*****************************************************************************
443 * Predeclare the interface implementation structures
445 extern ICOM_VTABLE(IDirect3DSwapChain8) Direct3DSwapChain8_Vtbl;
447 /*****************************************************************************
448 * IDirect3DSwapChain8 implementation structure
450 struct IDirect3DSwapChain8Impl
452 /* IUnknown fields */
453 ICOM_VFIELD(IDirect3DSwapChain8);
454 DWORD ref;
456 /* IDirect3DSwapChain8 fields */
459 /* IUnknown: */
460 extern HRESULT WINAPI IDirect3DSwapChain8Impl_QueryInterface(LPDIRECT3DSWAPCHAIN8 iface,REFIID refiid,LPVOID *obj);
461 extern ULONG WINAPI IDirect3DSwapChain8Impl_AddRef(LPDIRECT3DSWAPCHAIN8 iface);
462 extern ULONG WINAPI IDirect3DSwapChain8Impl_Release(LPDIRECT3DSWAPCHAIN8 iface);
464 /* IDirect3DSwapChain8: */
465 extern HRESULT WINAPI IDirect3DSwapChain8Impl_Present(LPDIRECT3DSWAPCHAIN8 iface, CONST RECT* pSourceRect, CONST RECT* pDestRect, HWND hDestWindowOverride,CONST RGNDATA* pDirtyRegion);
466 extern HRESULT WINAPI IDirect3DSwapChain8Impl_GetBackBuffer(LPDIRECT3DSWAPCHAIN8 iface, UINT BackBuffer, D3DBACKBUFFER_TYPE Type,IDirect3DSurface8** ppBackBuffer);
468 /* ----------------- */
469 /* IDirect3DSurface8 */
470 /* ----------------- */
472 /*****************************************************************************
473 * Predeclare the interface implementation structures
475 extern ICOM_VTABLE(IDirect3DSurface8) Direct3DSurface8_Vtbl;
477 /*****************************************************************************
478 * IDirect3DSurface8 implementation structure
480 struct IDirect3DSurface8Impl
482 /* IUnknown fields */
483 ICOM_VFIELD(IDirect3DSurface8);
484 DWORD ref;
486 /* IDirect3DSurface8 fields */
487 IDirect3DDevice8Impl *Device;
488 D3DRESOURCETYPE ResourceType;
490 IUnknown *Container;
492 D3DSURFACE_DESC myDesc;
493 BYTE *allocatedMemory;
494 UINT textureName;
495 UINT bytesPerPixel;
498 /* IUnknown: */
499 extern HRESULT WINAPI IDirect3DSurface8Impl_QueryInterface(LPDIRECT3DSURFACE8 iface,REFIID refiid,LPVOID *obj);
500 extern ULONG WINAPI IDirect3DSurface8Impl_AddRef(LPDIRECT3DSURFACE8 iface);
501 extern ULONG WINAPI IDirect3DSurface8Impl_Release(LPDIRECT3DSURFACE8 iface);
503 /* IDirect3DSurface8: */
504 extern HRESULT WINAPI IDirect3DSurface8Impl_GetDevice(LPDIRECT3DSURFACE8 iface, IDirect3DDevice8** ppDevice);
505 extern HRESULT WINAPI IDirect3DSurface8Impl_SetPrivateData(LPDIRECT3DSURFACE8 iface, REFGUID refguid,CONST void* pData,DWORD SizeOfData,DWORD Flags);
506 extern HRESULT WINAPI IDirect3DSurface8Impl_GetPrivateData(LPDIRECT3DSURFACE8 iface, REFGUID refguid,void* pData,DWORD* pSizeOfData);
507 extern HRESULT WINAPI IDirect3DSurface8Impl_FreePrivateData(LPDIRECT3DSURFACE8 iface, REFGUID refguid);
508 extern HRESULT WINAPI IDirect3DSurface8Impl_GetContainer(LPDIRECT3DSURFACE8 iface, REFIID riid,void** ppContainer);
509 extern HRESULT WINAPI IDirect3DSurface8Impl_GetDesc(LPDIRECT3DSURFACE8 iface, D3DSURFACE_DESC *pDesc);
510 extern HRESULT WINAPI IDirect3DSurface8Impl_LockRect(LPDIRECT3DSURFACE8 iface, D3DLOCKED_RECT* pLockedRect, CONST RECT* pRect,DWORD Flags);
511 extern HRESULT WINAPI IDirect3DSurface8Impl_UnlockRect(LPDIRECT3DSURFACE8 iface);
513 /* ------------------ */
514 /* IDirect3DResource8 */
515 /* ------------------ */
517 /*****************************************************************************
518 * Predeclare the interface implementation structures
520 extern ICOM_VTABLE(IDirect3DResource8) Direct3DResource8_Vtbl;
522 /*****************************************************************************
523 * IDirect3DResource8 implementation structure
525 struct IDirect3DResource8Impl
527 /* IUnknown fields */
528 ICOM_VFIELD(IDirect3DResource8);
529 DWORD ref;
531 /* IDirect3DResource8 fields */
532 IDirect3DDevice8Impl *Device;
533 D3DRESOURCETYPE ResourceType;
536 /* IUnknown: */
537 extern HRESULT WINAPI IDirect3DResource8Impl_QueryInterface(LPDIRECT3DRESOURCE8 iface,REFIID refiid,LPVOID *obj);
538 extern ULONG WINAPI IDirect3DResource8Impl_AddRef(LPDIRECT3DRESOURCE8 iface);
539 extern ULONG WINAPI IDirect3DResource8Impl_Release(LPDIRECT3DRESOURCE8 iface);
541 /* IDirect3DResource8: */
542 extern HRESULT WINAPI IDirect3DResource8Impl_GetDevice(LPDIRECT3DRESOURCE8 iface, IDirect3DDevice8** ppDevice);
543 extern HRESULT WINAPI IDirect3DResource8Impl_SetPrivateData(LPDIRECT3DRESOURCE8 iface, REFGUID refguid, CONST void* pData, DWORD SizeOfData, DWORD Flags);
544 extern HRESULT WINAPI IDirect3DResource8Impl_GetPrivateData(LPDIRECT3DRESOURCE8 iface, REFGUID refguid, void* pData, DWORD* pSizeOfData);
545 extern HRESULT WINAPI IDirect3DResource8Impl_FreePrivateData(LPDIRECT3DRESOURCE8 iface, REFGUID refguid);
546 extern DWORD WINAPI IDirect3DResource8Impl_SetPriority(LPDIRECT3DRESOURCE8 iface, DWORD PriorityNew);
547 extern DWORD WINAPI IDirect3DResource8Impl_GetPriority(LPDIRECT3DRESOURCE8 iface);
548 extern void WINAPI IDirect3DResource8Impl_PreLoad(LPDIRECT3DRESOURCE8 iface);
549 extern D3DRESOURCETYPE WINAPI IDirect3DResource8Impl_GetType(LPDIRECT3DRESOURCE8 iface);
551 /* ---------------------- */
552 /* IDirect3DVertexBuffer8 */
553 /* ---------------------- */
555 /*****************************************************************************
556 * Predeclare the interface implementation structures
558 extern ICOM_VTABLE(IDirect3DVertexBuffer8) Direct3DVertexBuffer8_Vtbl;
560 /*****************************************************************************
561 * IDirect3DVertexBuffer8 implementation structure
563 struct IDirect3DVertexBuffer8Impl
565 /* IUnknown fields */
566 ICOM_VFIELD(IDirect3DVertexBuffer8);
567 DWORD ref;
569 /* IDirect3DResource8 fields */
570 IDirect3DDevice8Impl *Device;
571 D3DRESOURCETYPE ResourceType;
573 /* IDirect3DVertexBuffer8 fields */
574 BYTE *allocatedMemory;
575 D3DVERTEXBUFFER_DESC currentDesc;
578 /* IUnknown: */
579 extern HRESULT WINAPI IDirect3DVertexBuffer8Impl_QueryInterface(LPDIRECT3DVERTEXBUFFER8 iface,REFIID refiid,LPVOID *obj);
580 extern ULONG WINAPI IDirect3DVertexBuffer8Impl_AddRef(LPDIRECT3DVERTEXBUFFER8 iface);
581 extern ULONG WINAPI IDirect3DVertexBuffer8Impl_Release(LPDIRECT3DVERTEXBUFFER8 iface);
583 /* IDirect3DVertexBuffer8: (Inherited from IDirect3DResource8) */
584 extern HRESULT WINAPI IDirect3DVertexBuffer8Impl_GetDevice(LPDIRECT3DVERTEXBUFFER8 iface, IDirect3DDevice8** ppDevice);
585 extern HRESULT WINAPI IDirect3DVertexBuffer8Impl_SetPrivateData(LPDIRECT3DVERTEXBUFFER8 iface, REFGUID refguid, CONST void* pData, DWORD SizeOfData, DWORD Flags);
586 extern HRESULT WINAPI IDirect3DVertexBuffer8Impl_GetPrivateData(LPDIRECT3DVERTEXBUFFER8 iface, REFGUID refguid, void* pData, DWORD* pSizeOfData);
587 extern HRESULT WINAPI IDirect3DVertexBuffer8Impl_FreePrivateData(LPDIRECT3DVERTEXBUFFER8 iface, REFGUID refguid);
588 extern DWORD WINAPI IDirect3DVertexBuffer8Impl_SetPriority(LPDIRECT3DVERTEXBUFFER8 iface, DWORD PriorityNew);
589 extern DWORD WINAPI IDirect3DVertexBuffer8Impl_GetPriority(LPDIRECT3DVERTEXBUFFER8 iface);
590 extern void WINAPI IDirect3DVertexBuffer8Impl_PreLoad(LPDIRECT3DVERTEXBUFFER8 iface);
591 extern D3DRESOURCETYPE WINAPI IDirect3DVertexBuffer8Impl_GetType(LPDIRECT3DVERTEXBUFFER8 iface);
593 /* IDirect3DVertexBuffer8: */
594 extern HRESULT WINAPI IDirect3DVertexBuffer8Impl_Lock(LPDIRECT3DVERTEXBUFFER8 iface, UINT OffsetToLock, UINT SizeToLock, BYTE** ppbData, DWORD Flags);
595 extern HRESULT WINAPI IDirect3DVertexBuffer8Impl_Unlock(LPDIRECT3DVERTEXBUFFER8 iface);
596 extern HRESULT WINAPI IDirect3DVertexBuffer8Impl_GetDesc(LPDIRECT3DVERTEXBUFFER8 iface, D3DVERTEXBUFFER_DESC *pDesc);
598 /* --------------------- */
599 /* IDirect3DIndexBuffer8 */
600 /* --------------------- */
602 /*****************************************************************************
603 * Predeclare the interface implementation structures
605 extern ICOM_VTABLE(IDirect3DIndexBuffer8) Direct3DIndexBuffer8_Vtbl;
607 /*****************************************************************************
608 * IDirect3DIndexBuffer8 implementation structure
610 struct IDirect3DIndexBuffer8Impl
612 /* IUnknown fields */
613 ICOM_VFIELD(IDirect3DIndexBuffer8);
614 DWORD ref;
616 /* IDirect3DResource8 fields */
617 IDirect3DDevice8Impl *Device;
618 D3DRESOURCETYPE ResourceType;
620 /* IDirect3DIndexBuffer8 fields */
621 void *allocatedMemory;
622 D3DINDEXBUFFER_DESC currentDesc;
625 /* IUnknown: */
626 extern HRESULT WINAPI IDirect3DIndexBuffer8Impl_QueryInterface(LPDIRECT3DINDEXBUFFER8 iface,REFIID refiid,LPVOID *obj);
627 extern ULONG WINAPI IDirect3DIndexBuffer8Impl_AddRef(LPDIRECT3DINDEXBUFFER8 iface);
628 extern ULONG WINAPI IDirect3DIndexBuffer8Impl_Release(LPDIRECT3DINDEXBUFFER8 iface);
630 /* IDirect3DIndexBuffer8: (Inherited from IDirect3DResource8) */
631 extern HRESULT WINAPI IDirect3DIndexBuffer8Impl_GetDevice(LPDIRECT3DINDEXBUFFER8 iface, IDirect3DDevice8** ppDevice);
632 extern HRESULT WINAPI IDirect3DIndexBuffer8Impl_SetPrivateData(LPDIRECT3DINDEXBUFFER8 iface, REFGUID refguid, CONST void* pData, DWORD SizeOfData, DWORD Flags);
633 extern HRESULT WINAPI IDirect3DIndexBuffer8Impl_GetPrivateData(LPDIRECT3DINDEXBUFFER8 iface, REFGUID refguid, void* pData, DWORD* pSizeOfData);
634 extern HRESULT WINAPI IDirect3DIndexBuffer8Impl_FreePrivateData(LPDIRECT3DINDEXBUFFER8 iface, REFGUID refguid);
635 extern DWORD WINAPI IDirect3DIndexBuffer8Impl_SetPriority(LPDIRECT3DINDEXBUFFER8 iface, DWORD PriorityNew);
636 extern DWORD WINAPI IDirect3DIndexBuffer8Impl_GetPriority(LPDIRECT3DINDEXBUFFER8 iface);
637 extern void WINAPI IDirect3DIndexBuffer8Impl_PreLoad(LPDIRECT3DINDEXBUFFER8 iface);
638 extern D3DRESOURCETYPE WINAPI IDirect3DIndexBuffer8Impl_GetType(LPDIRECT3DINDEXBUFFER8 iface);
640 /* IDirect3DIndexBuffer8: */
641 extern HRESULT WINAPI IDirect3DIndexBuffer8Impl_Lock(LPDIRECT3DINDEXBUFFER8 iface, UINT OffsetToLock, UINT SizeToLock, BYTE** ppbData, DWORD Flags);
642 extern HRESULT WINAPI IDirect3DIndexBuffer8Impl_Unlock(LPDIRECT3DINDEXBUFFER8 iface);
643 extern HRESULT WINAPI IDirect3DIndexBuffer8Impl_GetDesc(LPDIRECT3DINDEXBUFFER8 iface, D3DINDEXBUFFER_DESC *pDesc);
645 /* --------------------- */
646 /* IDirect3DBaseTexture8 */
647 /* --------------------- */
649 /*****************************************************************************
650 * Predeclare the interface implementation structures
652 extern ICOM_VTABLE(IDirect3DBaseTexture8) Direct3DBaseTexture8_Vtbl;
654 /*****************************************************************************
655 * IDirect3DBaseTexture8 implementation structure
657 struct IDirect3DBaseTexture8Impl
659 /* IUnknown fields */
660 ICOM_VFIELD(IDirect3DBaseTexture8);
661 DWORD ref;
663 /* IDirect3DResource8 fields */
664 IDirect3DDevice8Impl *Device;
665 D3DRESOURCETYPE ResourceType;
667 /* IDirect3DBaseTexture8 fields */
669 *BOOL isManaged;
670 *DWORD lod;
674 /* IUnknown: */
675 extern HRESULT WINAPI IDirect3DBaseTexture8Impl_QueryInterface(LPDIRECT3DBASETEXTURE8 iface,REFIID refiid,LPVOID *obj);
676 extern ULONG WINAPI IDirect3DBaseTexture8Impl_AddRef(LPDIRECT3DBASETEXTURE8 iface);
677 extern ULONG WINAPI IDirect3DBaseTexture8Impl_Release(LPDIRECT3DBASETEXTURE8 iface);
679 /* IDirect3DBaseTexture8: (Inherited from IDirect3DResource8) */
680 extern HRESULT WINAPI IDirect3DBaseTexture8Impl_GetDevice(LPDIRECT3DBASETEXTURE8 iface, IDirect3DDevice8** ppDevice);
681 extern HRESULT WINAPI IDirect3DBaseTexture8Impl_SetPrivateData(LPDIRECT3DBASETEXTURE8 iface, REFGUID refguid, CONST void* pData, DWORD SizeOfData, DWORD Flags);
682 extern HRESULT WINAPI IDirect3DBaseTexture8Impl_GetPrivateData(LPDIRECT3DBASETEXTURE8 iface, REFGUID refguid, void* pData, DWORD* pSizeOfData);
683 extern HRESULT WINAPI IDirect3DBaseTexture8Impl_FreePrivateData(LPDIRECT3DBASETEXTURE8 iface, REFGUID refguid);
684 extern DWORD WINAPI IDirect3DBaseTexture8Impl_SetPriority(LPDIRECT3DBASETEXTURE8 iface, DWORD PriorityNew);
685 extern DWORD WINAPI IDirect3DBaseTexture8Impl_GetPriority(LPDIRECT3DBASETEXTURE8 iface);
686 extern void WINAPI IDirect3DBaseTexture8Impl_PreLoad(LPDIRECT3DBASETEXTURE8 iface);
687 extern D3DRESOURCETYPE WINAPI IDirect3DBaseTexture8Impl_GetType(LPDIRECT3DBASETEXTURE8 iface);
689 /* IDirect3DBaseTexture8: */
690 extern DWORD WINAPI IDirect3DBaseTexture8Impl_SetLOD(LPDIRECT3DBASETEXTURE8 iface, DWORD LODNew);
691 extern DWORD WINAPI IDirect3DBaseTexture8Impl_GetLOD(LPDIRECT3DBASETEXTURE8 iface);
692 extern DWORD WINAPI IDirect3DBaseTexture8Impl_GetLevelCount(LPDIRECT3DBASETEXTURE8 iface);
694 /* --------------------- */
695 /* IDirect3DCubeTexture8 */
696 /* --------------------- */
698 /*****************************************************************************
699 * Predeclare the interface implementation structures
701 extern ICOM_VTABLE(IDirect3DCubeTexture8) Direct3DCubeTexture8_Vtbl;
703 /*****************************************************************************
704 * IDirect3DCubeTexture8 implementation structure
706 struct IDirect3DCubeTexture8Impl
708 /* IUnknown fields */
709 ICOM_VFIELD(IDirect3DCubeTexture8);
710 DWORD ref;
712 /* IDirect3DResource8 fields */
713 IDirect3DDevice8Impl *Device;
714 D3DRESOURCETYPE ResourceType;
716 /* IDirect3DBaseTexture8 fields */
718 /* IDirect3DCubeTexture8 fields */
719 UINT edgeLength;
720 DWORD usage;
721 UINT levels;
722 D3DFORMAT format;
724 IDirect3DDevice8Impl *device;
725 IDirect3DSurface8Impl *surfaces[6][MAX_LEVELS];
726 BOOL Dirty;
729 /* IUnknown: */
730 extern HRESULT WINAPI IDirect3DCubeTexture8Impl_QueryInterface(LPDIRECT3DCUBETEXTURE8 iface,REFIID refiid,LPVOID *obj);
731 extern ULONG WINAPI IDirect3DCubeTexture8Impl_AddRef(LPDIRECT3DCUBETEXTURE8 iface);
732 extern ULONG WINAPI IDirect3DCubeTexture8Impl_Release(LPDIRECT3DCUBETEXTURE8 iface);
734 /* IDirect3DCubeTexture8: (Inherited from IDirect3DResource8) */
735 extern HRESULT WINAPI IDirect3DCubeTexture8Impl_GetDevice(LPDIRECT3DCUBETEXTURE8 iface, IDirect3DDevice8** ppDevice);
736 extern HRESULT WINAPI IDirect3DCubeTexture8Impl_SetPrivateData(LPDIRECT3DCUBETEXTURE8 iface, REFGUID refguid, CONST void* pData, DWORD SizeOfData, DWORD Flags);
737 extern HRESULT WINAPI IDirect3DCubeTexture8Impl_GetPrivateData(LPDIRECT3DCUBETEXTURE8 iface, REFGUID refguid, void* pData, DWORD* pSizeOfData);
738 extern HRESULT WINAPI IDirect3DCubeTexture8Impl_FreePrivateData(LPDIRECT3DCUBETEXTURE8 iface, REFGUID refguid);
739 extern DWORD WINAPI IDirect3DCubeTexture8Impl_SetPriority(LPDIRECT3DCUBETEXTURE8 iface, DWORD PriorityNew);
740 extern DWORD WINAPI IDirect3DCubeTexture8Impl_GetPriority(LPDIRECT3DCUBETEXTURE8 iface);
741 extern void WINAPI IDirect3DCubeTexture8Impl_PreLoad(LPDIRECT3DCUBETEXTURE8 iface);
742 extern D3DRESOURCETYPE WINAPI IDirect3DCubeTexture8Impl_GetType(LPDIRECT3DCUBETEXTURE8 iface);
744 /* IDirect3DCubeTexture8: (Inherited from IDirect3DBaseTexture8) */
745 extern DWORD WINAPI IDirect3DCubeTexture8Impl_SetLOD(LPDIRECT3DCUBETEXTURE8 iface, DWORD LODNew);
746 extern DWORD WINAPI IDirect3DCubeTexture8Impl_GetLOD(LPDIRECT3DCUBETEXTURE8 iface);
747 extern DWORD WINAPI IDirect3DCubeTexture8Impl_GetLevelCount(LPDIRECT3DCUBETEXTURE8 iface);
749 /* IDirect3DCubeTexture8 */
750 extern HRESULT WINAPI IDirect3DCubeTexture8Impl_GetLevelDesc(LPDIRECT3DCUBETEXTURE8 iface,UINT Level,D3DSURFACE_DESC *pDesc);
751 extern HRESULT WINAPI IDirect3DCubeTexture8Impl_GetCubeMapSurface(LPDIRECT3DCUBETEXTURE8 iface,D3DCUBEMAP_FACES FaceType,UINT Level,IDirect3DSurface8** ppCubeMapSurface);
752 extern HRESULT WINAPI IDirect3DCubeTexture8Impl_LockRect(LPDIRECT3DCUBETEXTURE8 iface,D3DCUBEMAP_FACES FaceType,UINT Level,D3DLOCKED_RECT* pLockedRect,CONST RECT* pRect,DWORD Flags);
753 extern HRESULT WINAPI IDirect3DCubeTexture8Impl_UnlockRect(LPDIRECT3DCUBETEXTURE8 iface,D3DCUBEMAP_FACES FaceType,UINT Level);
754 extern HRESULT WINAPI IDirect3DCubeTexture8Impl_AddDirtyRect(LPDIRECT3DCUBETEXTURE8 iface,D3DCUBEMAP_FACES FaceType,CONST RECT* pDirtyRect);
756 /* ----------------- */
757 /* IDirect3DTexture8 */
758 /* ----------------- */
760 /*****************************************************************************
761 * Predeclare the interface implementation structures
763 extern ICOM_VTABLE(IDirect3DTexture8) Direct3DTexture8_Vtbl;
765 /*****************************************************************************
766 * IDirect3DTexture8 implementation structure
768 struct IDirect3DTexture8Impl
770 /* IUnknown fields */
771 ICOM_VFIELD(IDirect3DTexture8);
772 DWORD ref;
774 /* IDirect3DResourc8 fields */
775 IDirect3DDevice8Impl *Device;
776 D3DRESOURCETYPE ResourceType;
778 /* IDirect3DBaseTexture8 fields */
780 /* IDirect3DTexture8 fields */
781 UINT width;
782 UINT height;
783 UINT levels;
784 DWORD usage;
785 D3DFORMAT format;
787 IDirect3DDevice8Impl *device;
788 IDirect3DSurface8Impl *surfaces[MAX_LEVELS];
789 BOOL Dirty;
792 /* IUnknown: */
793 extern HRESULT WINAPI IDirect3DTexture8Impl_QueryInterface(LPDIRECT3DTEXTURE8 iface,REFIID refiid,LPVOID *obj);
794 extern ULONG WINAPI IDirect3DTexture8Impl_AddRef(LPDIRECT3DTEXTURE8 iface);
795 extern ULONG WINAPI IDirect3DTexture8Impl_Release(LPDIRECT3DTEXTURE8 iface);
797 /* IDirect3DTexture8: (Inherited from IDirect3DResource8) */
798 extern HRESULT WINAPI IDirect3DTexture8Impl_GetDevice(LPDIRECT3DTEXTURE8 iface, IDirect3DDevice8** ppDevice);
799 extern HRESULT WINAPI IDirect3DTexture8Impl_SetPrivateData(LPDIRECT3DTEXTURE8 iface, REFGUID refguid, CONST void* pData, DWORD SizeOfData, DWORD Flags);
800 extern HRESULT WINAPI IDirect3DTexture8Impl_GetPrivateData(LPDIRECT3DTEXTURE8 iface, REFGUID refguid, void* pData, DWORD* pSizeOfData);
801 extern HRESULT WINAPI IDirect3DTexture8Impl_FreePrivateData(LPDIRECT3DTEXTURE8 iface, REFGUID refguid);
802 extern DWORD WINAPI IDirect3DTexture8Impl_SetPriority(LPDIRECT3DTEXTURE8 iface, DWORD PriorityNew);
803 extern DWORD WINAPI IDirect3DTexture8Impl_GetPriority(LPDIRECT3DTEXTURE8 iface);
804 extern void WINAPI IDirect3DTexture8Impl_PreLoad(LPDIRECT3DTEXTURE8 iface);
805 extern D3DRESOURCETYPE WINAPI IDirect3DTexture8Impl_GetType(LPDIRECT3DTEXTURE8 iface);
807 /* IDirect3DTexture8: (Inherited from IDirect3DBaseTexture8) */
808 extern DWORD WINAPI IDirect3DTexture8Impl_SetLOD(LPDIRECT3DTEXTURE8 iface, DWORD LODNew);
809 extern DWORD WINAPI IDirect3DTexture8Impl_GetLOD(LPDIRECT3DTEXTURE8 iface);
810 extern DWORD WINAPI IDirect3DTexture8Impl_GetLevelCount(LPDIRECT3DTEXTURE8 iface);
812 /* IDirect3DTexture8: */
813 extern HRESULT WINAPI IDirect3DTexture8Impl_GetLevelDesc(LPDIRECT3DTEXTURE8 iface, UINT Level,D3DSURFACE_DESC* pDesc);
814 extern HRESULT WINAPI IDirect3DTexture8Impl_GetSurfaceLevel(LPDIRECT3DTEXTURE8 iface, UINT Level,IDirect3DSurface8** ppSurfaceLevel);
815 extern HRESULT WINAPI IDirect3DTexture8Impl_LockRect(LPDIRECT3DTEXTURE8 iface, UINT Level,D3DLOCKED_RECT* pLockedRect,CONST RECT* pRect,DWORD Flags);
816 extern HRESULT WINAPI IDirect3DTexture8Impl_UnlockRect(LPDIRECT3DTEXTURE8 iface, UINT Level);
817 extern HRESULT WINAPI IDirect3DTexture8Impl_AddDirtyRect(LPDIRECT3DTEXTURE8 iface, CONST RECT* pDirtyRect);
819 /* ----------------------- */
820 /* IDirect3DVolumeTexture8 */
821 /* ----------------------- */
823 /*****************************************************************************
824 * Predeclare the interface implementation structures
826 extern ICOM_VTABLE(IDirect3DVolumeTexture8) Direct3DVolumeTexture8_Vtbl;
828 /*****************************************************************************
829 * IDirect3DVolumeTexture8 implementation structure
831 struct IDirect3DVolumeTexture8Impl
833 /* IUnknown fields */
834 ICOM_VFIELD(IDirect3DVolumeTexture8);
835 DWORD ref;
837 /* IDirect3DResource8 fields */
838 IDirect3DDevice8Impl *Device;
839 D3DRESOURCETYPE ResourceType;
841 /* IDirect3DBaseTexture8 fields */
843 /* IDirect3DVolumeTexture8 fields */
844 UINT width;
845 UINT height;
846 UINT depth;
847 UINT levels;
848 DWORD usage;
849 D3DFORMAT format;
851 IDirect3DDevice8Impl *device;
852 IDirect3DVolume8Impl *volumes[MAX_LEVELS];
853 BOOL Dirty;
856 /* IUnknown: */
857 extern HRESULT WINAPI IDirect3DVolumeTexture8Impl_QueryInterface(LPDIRECT3DVOLUMETEXTURE8 iface,REFIID refiid,LPVOID *obj);
858 extern ULONG WINAPI IDirect3DVolumeTexture8Impl_AddRef(LPDIRECT3DVOLUMETEXTURE8 iface);
859 extern ULONG WINAPI IDirect3DVolumeTexture8Impl_Release(LPDIRECT3DVOLUMETEXTURE8 iface);
861 /* IDirect3DVolumeTexture8: (Inherited from IDirect3DResource8) */
862 extern HRESULT WINAPI IDirect3DVolumeTexture8Impl_GetDevice(LPDIRECT3DVOLUMETEXTURE8 iface, IDirect3DDevice8** ppDevice);
863 extern HRESULT WINAPI IDirect3DVolumeTexture8Impl_SetPrivateData(LPDIRECT3DVOLUMETEXTURE8 iface, REFGUID refguid, CONST void* pData, DWORD SizeOfData, DWORD Flags);
864 extern HRESULT WINAPI IDirect3DVolumeTexture8Impl_GetPrivateData(LPDIRECT3DVOLUMETEXTURE8 iface, REFGUID refguid, void* pData, DWORD* pSizeOfData);
865 extern HRESULT WINAPI IDirect3DVolumeTexture8Impl_FreePrivateData(LPDIRECT3DVOLUMETEXTURE8 iface, REFGUID refguid);
866 extern DWORD WINAPI IDirect3DVolumeTexture8Impl_SetPriority(LPDIRECT3DVOLUMETEXTURE8 iface, DWORD PriorityNew);
867 extern DWORD WINAPI IDirect3DVolumeTexture8Impl_GetPriority(LPDIRECT3DVOLUMETEXTURE8 iface);
868 extern void WINAPI IDirect3DVolumeTexture8Impl_PreLoad(LPDIRECT3DVOLUMETEXTURE8 iface);
869 extern D3DRESOURCETYPE WINAPI IDirect3DVolumeTexture8Impl_GetType(LPDIRECT3DVOLUMETEXTURE8 iface);
871 /* IDirect3DVolumeTexture8: (Inherited from IDirect3DBaseTexture8) */
872 extern DWORD WINAPI IDirect3DVolumeTexture8Impl_SetLOD(LPDIRECT3DVOLUMETEXTURE8 iface, DWORD LODNew);
873 extern DWORD WINAPI IDirect3DVolumeTexture8Impl_GetLOD(LPDIRECT3DVOLUMETEXTURE8 iface);
874 extern DWORD WINAPI IDirect3DVolumeTexture8Impl_GetLevelCount(LPDIRECT3DVOLUMETEXTURE8 iface);
876 /* IDirect3DVolumeTexture8: */
877 extern HRESULT WINAPI IDirect3DVolumeTexture8Impl_GetLevelDesc(LPDIRECT3DVOLUMETEXTURE8 iface, UINT Level,D3DVOLUME_DESC *pDesc);
878 extern HRESULT WINAPI IDirect3DVolumeTexture8Impl_GetVolumeLevel(LPDIRECT3DVOLUMETEXTURE8 iface, UINT Level,IDirect3DVolume8** ppVolumeLevel);
879 extern HRESULT WINAPI IDirect3DVolumeTexture8Impl_LockBox(LPDIRECT3DVOLUMETEXTURE8 iface, UINT Level,D3DLOCKED_BOX* pLockedVolume,CONST D3DBOX* pBox,DWORD Flags);
880 extern HRESULT WINAPI IDirect3DVolumeTexture8Impl_UnlockBox(LPDIRECT3DVOLUMETEXTURE8 iface, UINT Level);
881 extern HRESULT WINAPI IDirect3DVolumeTexture8Impl_AddDirtyBox(LPDIRECT3DVOLUMETEXTURE8 iface, CONST D3DBOX* pDirtyBox);
883 /* ==============================================================================
884 Private interfactes: beginning of cleaning/splitting for HAL and d3d9 support
885 ============================================================================== */
887 /* State Block for Begin/End/Capture/Create/Apply State Block */
888 /* Note: Very long winded but I do not believe gl Lists will */
889 /* resolve everything we need, so doing it manually for now */
890 typedef struct SAVEDSTATES {
891 BOOL lightEnable[MAX_ACTIVE_LIGHTS];
892 BOOL Indices;
893 BOOL lights[MAX_ACTIVE_LIGHTS];
894 BOOL material;
895 BOOL stream_source[MAX_STREAMS];
896 BOOL textures[8];
897 BOOL transform[HIGHEST_TRANSFORMSTATE];
898 BOOL viewport;
899 BOOL vertexShader;
900 BOOL vertexShaderConstant;
901 BOOL vertexShaderDecl;
902 BOOL pixelShader;
903 BOOL renderstate[HIGHEST_RENDER_STATE];
904 BOOL texture_state[8][HIGHEST_TEXTURE_STATE];
905 BOOL clipplane[MAX_CLIPPLANES];
906 } SAVEDSTATES;
909 /* ----------------------- */
910 /* IDirect3DStateBlockImpl */
911 /* ----------------------- */
913 /*****************************************************************************
914 * Predeclare the interface implementation structures
916 /*extern ICOM_VTABLE(IDirect3DStateBlock9) Direct3DStateBlock9_Vtbl;*/
918 /*****************************************************************************
919 * IDirect3DStateBlock implementation structure
921 struct IDirect3DStateBlockImpl {
922 /* IUnknown fields */
923 /*ICOM_VFIELD(IDirect3DStateBlock9);*/
924 DWORD ref;
926 /* The device, to be replaced by a IDirect3DDeviceImpl */
927 IDirect3DDevice8Impl* device;
929 D3DSTATEBLOCKTYPE blockType;
931 SAVEDSTATES Changed;
932 SAVEDSTATES Set;
934 /* Light Enable */
935 BOOL lightEnable[MAX_ACTIVE_LIGHTS];
937 /* ClipPlane */
938 double clipplane[MAX_CLIPPLANES][4];
940 /* Stream Source */
941 UINT stream_stride[MAX_STREAMS];
942 IDirect3DVertexBuffer8 *stream_source[MAX_STREAMS];
944 /* Indices */
945 IDirect3DIndexBuffer8* pIndexData;
946 UINT baseVertexIndex;
948 /* Texture */
949 IDirect3DBaseTexture8 *textures[8];
950 int textureDimensions[8];
951 /* Texture State Stage */
952 DWORD texture_state[8][HIGHEST_TEXTURE_STATE];
954 /* Lights */
955 D3DLIGHT8 lights[MAX_ACTIVE_LIGHTS];
957 /* Material */
958 D3DMATERIAL8 material;
960 /* RenderState */
961 DWORD renderstate[HIGHEST_RENDER_STATE];
963 /* Transform */
964 D3DMATRIX transforms[HIGHEST_TRANSFORMSTATE];
966 /* ViewPort */
967 D3DVIEWPORT8 viewport;
969 /* Vertex Shader */
970 DWORD VertexShader;
972 /* Vertex Shader Declaration */
973 IDirect3DVertexShaderDeclarationImpl* vertexShaderDecl;
975 /* Pixel Shader */
976 DWORD PixelShader;
977 /* TODO: Pixel Shader Constant */
979 /* Indexed Vertex Blending */
980 D3DVERTEXBLENDFLAGS vertex_blend;
981 FLOAT tween_factor;
983 /* Vertex Shader Constant */
984 D3DSHADERVECTOR vertexShaderConstant[D3D8_VSHADER_MAX_CONSTANTS];
987 /* exported Interfaces */
988 /* internal Interfaces */
989 /* temporary internal Interfaces */
990 extern HRESULT WINAPI IDirect3DDeviceImpl_InitStartupStateBlock(IDirect3DDevice8Impl* This);
991 extern HRESULT WINAPI IDirect3DDeviceImpl_CreateStateBlock(IDirect3DDevice8Impl* This, D3DSTATEBLOCKTYPE Type, IDirect3DStateBlockImpl** ppStateBlock);
992 extern HRESULT WINAPI IDirect3DDeviceImpl_DeleteStateBlock(IDirect3DDevice8Impl* This, IDirect3DStateBlockImpl* pSB);
993 extern HRESULT WINAPI IDirect3DDeviceImpl_BeginStateBlock(IDirect3DDevice8Impl* This);
994 extern HRESULT WINAPI IDirect3DDeviceImpl_EndStateBlock(IDirect3DDevice8Impl* This, IDirect3DStateBlockImpl** ppStateBlock);
995 extern HRESULT WINAPI IDirect3DDeviceImpl_ApplyStateBlock(IDirect3DDevice8Impl* iface, IDirect3DStateBlockImpl* pSB);
996 extern HRESULT WINAPI IDirect3DDeviceImpl_CaptureStateBlock(IDirect3DDevice8Impl* This, IDirect3DStateBlockImpl* pSB);
998 /* ------------------------------------ */
999 /* IDirect3DVertexShaderDeclarationImpl */
1000 /* ------------------------------------ */
1002 /*****************************************************************************
1003 * Predeclare the interface implementation structures
1005 /*extern ICOM_VTABLE(IDirect3DVertexShaderDeclaration9) Direct3DVertexShaderDeclaration9_Vtbl;*/
1007 /*****************************************************************************
1008 * IDirect3DVertexShaderDeclaration implementation structure
1010 struct IDirect3DVertexShaderDeclarationImpl {
1011 /* IUnknown fields */
1012 /*ICOM_VFIELD(IDirect3DVertexShaderDeclaration9);*/
1013 DWORD ref;
1015 /* The device, to be replaced by a IDirect3DDeviceImpl */
1016 IDirect3DDevice8Impl* device;
1018 /** precomputed fvf if simple declaration */
1019 DWORD fvf;
1020 /** dx8 compatible Declaration fields */
1021 DWORD* pDeclaration8;
1022 DWORD declaration8Length;
1025 /* exported Interfaces */
1026 extern HRESULT WINAPI IDirect3DVertexShaderDeclarationImpl_GetDeclaration8(IDirect3DVertexShaderDeclarationImpl* This, DWORD* pData, UINT* pSizeOfData);
1027 /*extern HRESULT IDirect3DVertexShaderDeclarationImpl_GetDeclaration9(IDirect3DVertexShaderDeclarationImpl* This, D3DVERTEXELEMENT9* pData, UINT* pNumElements);*/
1028 /* internal Interfaces */
1029 /* temporary internal Interfaces */
1030 extern HRESULT WINAPI IDirect3DDeviceImpl_CreateVertexShaderDeclaration8(IDirect3DDevice8Impl* This, CONST DWORD* pDeclaration8, IDirect3DVertexShaderDeclarationImpl** ppVertexShaderDecl);
1033 /* ------------------------- */
1034 /* IDirect3DVertexShaderImpl */
1035 /* ------------------------- */
1037 /*****************************************************************************
1038 * Predeclare the interface implementation structures
1040 /*extern ICOM_VTABLE(IDirect3DVertexShader9) Direct3DVertexShader9_Vtbl;*/
1042 /*****************************************************************************
1043 * IDirect3DVertexShader implementation structure
1045 struct IDirect3DVertexShaderImpl {
1046 /*ICOM_VFIELD(IDirect3DVertexShader9);*/
1047 DWORD ref;
1049 /* The device, to be replaced by a IDirect3DDeviceImpl */
1050 IDirect3DDevice8Impl* device;
1052 DWORD* function;
1053 UINT functionLength;
1054 DWORD usage; /* 0 || D3DUSAGE_SOFTWAREPROCESSING */
1055 DWORD version;
1056 /* run time datas */
1057 SHADERDATA8* data;
1058 VSHADERINPUTDATA8 input;
1059 VSHADEROUTPUTDATA8 output;
1062 /* exported Interfaces */
1063 extern HRESULT WINAPI IDirect3DVertexShaderImpl_GetFunction(IDirect3DVertexShaderImpl* This, VOID* pData, UINT* pSizeOfData);
1064 /*extern HRESULT WINAPI IDirect3DVertexShaderImpl_SetConstantB(IDirect3DVertexShaderImpl* This, UINT StartRegister, CONST BOOL* pConstantData, UINT BoolCount);*/
1065 /*extern HRESULT WINAPI IDirect3DVertexShaderImpl_SetConstantI(IDirect3DVertexShaderImpl* This, UINT StartRegister, CONST INT* pConstantData, UINT Vector4iCount);*/
1066 extern HRESULT WINAPI IDirect3DVertexShaderImpl_SetConstantF(IDirect3DVertexShaderImpl* This, UINT StartRegister, CONST FLOAT* pConstantData, UINT Vector4fCount);
1067 /*extern HRESULT WINAPI IDirect3DVertexShaderImpl_GetConstantB(IDirect3DVertexShaderImpl* This, UINT StartRegister, BOOL* pConstantData, UINT BoolCount);*/
1068 /*extern HRESULT WINAPI IDirect3DVertexShaderImpl_GetConstantI(IDirect3DVertexShaderImpl* This, UINT StartRegister, INT* pConstantData, UINT Vector4iCount);*/
1069 extern HRESULT WINAPI IDirect3DVertexShaderImpl_GetConstantF(IDirect3DVertexShaderImpl* This, UINT StartRegister, FLOAT* pConstantData, UINT Vector4fCount);
1070 /* internal Interfaces */
1071 extern DWORD WINAPI IDirect3DVertexShaderImpl_GetVersion(IDirect3DVertexShaderImpl* This);
1072 extern HRESULT WINAPI IDirect3DVertexShaderImpl_ExecuteSW(IDirect3DVertexShaderImpl* This, VSHADERINPUTDATA8* input, VSHADEROUTPUTDATA8* output);
1073 /* temporary internal Interfaces */
1074 extern HRESULT WINAPI IDirect3DDeviceImpl_CreateVertexShader(IDirect3DDevice8Impl* This, CONST DWORD* pFunction, DWORD Usage, IDirect3DVertexShaderImpl** ppVertexShader);
1075 extern HRESULT WINAPI IDirect3DDeviceImpl_FillVertexShaderInput(IDirect3DDevice8Impl* This, IDirect3DVertexShaderImpl* vshader, const void* vertexFirstStream, DWORD StartVertexIndex, DWORD idxDecal);
1077 /* ------------------------ */
1078 /* IDirect3DPixelShaderImpl */
1079 /* ------------------------ */
1081 /*****************************************************************************
1082 * Predeclare the interface implementation structures
1084 /*extern ICOM_VTABLE(IDirect3DPixelShader9) Direct3DPixelShader9_Vtbl;*/
1086 /*****************************************************************************
1087 * IDirect3DPixelShader implementation structure
1089 struct IDirect3DPixelShaderImpl {
1090 /*ICOM_VFIELD(IDirect3DPixelShader9);*/
1091 DWORD ref;
1093 /* The device, to be replaced by a IDirect3DDeviceImpl */
1094 IDirect3DDevice8Impl* device;
1096 /* TODO: Pixel Shader */
1097 CONST DWORD* function;
1098 UINT functionLength;
1099 DWORD version;
1100 /* run time datas */
1101 SHADERDATA8* data;
1104 /* exported Interfaces */
1105 extern HRESULT WINAPI IDirect3DPixelShaderImpl_GetFunction(IDirect3DPixelShaderImpl* This, VOID* pData, UINT* pSizeOfData);
1106 /* internal Interfaces */
1107 extern DWORD WINAPI IDirect3DPixelShaderImpl_GetVersion(IDirect3DPixelShaderImpl* This);
1111 * Internals functions
1113 * to see how not defined it here
1115 void setupTextureStates(LPDIRECT3DDEVICE8 iface, DWORD Stage);
1116 SHORT bytesPerPixel(D3DFORMAT fmt);
1117 GLint fmt2glintFmt(D3DFORMAT fmt);
1118 GLenum fmt2glFmt(D3DFORMAT fmt);
1119 DWORD fmt2glType(D3DFORMAT fmt);
1121 #endif /* __WINE_D3DX8_PRIVATE_H */