1 /* Direct3D private include file
2 * Copyright (c) 1998-2004 Lionel ULMER
3 * Copyright (c) 2002-2004 Christian Costa
5 * This file contains all the structure that are not exported
6 * through d3d.h and all common macros.
8 * This library is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Lesser General Public
10 * License as published by the Free Software Foundation; either
11 * version 2.1 of the License, or (at your option) any later version.
13 * This library is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * Lesser General Public License for more details.
18 * You should have received a copy of the GNU Lesser General Public
19 * License along with this library; if not, write to the Free Software
20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
23 #ifndef __GRAPHICS_WINE_D3D_PRIVATE_H
24 #define __GRAPHICS_WINE_D3D_PRIVATE_H
26 /* THIS FILE MUST NOT CONTAIN X11 or MESA DEFINES */
35 #define MAX_TEXTURES 8
38 #define HIGHEST_RENDER_STATE 152
39 #define HIGHEST_TEXTURE_STAGE_STATE 24
41 /*****************************************************************************
42 * Predeclare the interface implementation structures
44 typedef struct IDirect3DLightImpl IDirect3DLightImpl;
45 typedef struct IDirect3DMaterialImpl IDirect3DMaterialImpl;
46 typedef struct IDirect3DViewportImpl IDirect3DViewportImpl;
47 typedef struct IDirect3DExecuteBufferImpl IDirect3DExecuteBufferImpl;
48 typedef struct IDirect3DVertexBufferImpl IDirect3DVertexBufferImpl;
50 #include "ddraw_private.h"
52 typedef struct STATEBLOCKFLAGS {
53 BOOL render_state[HIGHEST_RENDER_STATE];
54 BOOL texture_stage_state[MAX_TEXTURES][HIGHEST_TEXTURE_STAGE_STATE];
57 typedef struct STATEBLOCK {
58 STATEBLOCKFLAGS set_flags;
59 DWORD render_state[HIGHEST_RENDER_STATE];
60 DWORD texture_stage_state[MAX_TEXTURES][HIGHEST_TEXTURE_STAGE_STATE];
64 /*****************************************************************************
65 * IDirect3DLight implementation structure
67 struct IDirect3DLightImpl
69 ICOM_VFIELD_MULTI(IDirect3DLight);
71 /* IDirect3DLight fields */
73 /* If this light is active for one viewport, put the viewport here */
74 IDirect3DViewportImpl *active_viewport;
81 /* Chained list used for adding / removing from viewports */
82 IDirect3DLightImpl *next;
84 /* Activation function */
85 void (*activate)(IDirect3DLightImpl*);
86 void (*desactivate)(IDirect3DLightImpl*);
87 void (*update)(IDirect3DLightImpl*);
90 /*****************************************************************************
91 * IDirect3DMaterial implementation structure
93 struct IDirect3DMaterialImpl
95 ICOM_VFIELD_MULTI(IDirect3DMaterial3);
96 ICOM_VFIELD_MULTI(IDirect3DMaterial2);
97 ICOM_VFIELD_MULTI(IDirect3DMaterial);
99 /* IDirect3DMaterial2 fields */
100 IDirectDrawImpl *d3d;
101 IDirect3DDeviceImpl *active_device;
105 void (*activate)(IDirect3DMaterialImpl* this);
108 /*****************************************************************************
109 * IDirect3DViewport implementation structure
111 struct IDirect3DViewportImpl
113 ICOM_VFIELD_MULTI(IDirect3DViewport3);
115 /* IDirect3DViewport fields */
116 IDirectDrawImpl *d3d;
117 /* If this viewport is active for one device, put the device here */
118 IDirect3DDeviceImpl *active_device;
129 /* Activation function */
130 void (*activate)(IDirect3DViewportImpl*);
132 /* Field used to chain viewports together */
133 IDirect3DViewportImpl *next;
136 IDirect3DLightImpl *lights;
138 /* Background material */
139 IDirect3DMaterialImpl *background;
142 /*****************************************************************************
143 * IDirect3DExecuteBuffer implementation structure
145 struct IDirect3DExecuteBufferImpl
147 ICOM_VFIELD_MULTI(IDirect3DExecuteBuffer);
149 /* IDirect3DExecuteBuffer fields */
150 IDirectDrawImpl *d3d;
151 IDirect3DDeviceImpl* d3ddev;
153 D3DEXECUTEBUFFERDESC desc;
156 /* This buffer will store the transformed vertices */
161 /* This flags is set to TRUE if we allocated ourselves the
165 void (*execute)(IDirect3DExecuteBufferImpl* this,
166 IDirect3DDeviceImpl* dev,
167 IDirect3DViewportImpl* vp);
170 /* Internal structure to store the state of the clipping planes */
171 typedef struct d3d7clippingplane
176 /*****************************************************************************
177 * IDirect3DDevice implementation structure
180 #define WORLDMAT_CHANGED (0x00000001 << 0)
181 #define VIEWMAT_CHANGED (0x00000001 << 1)
182 #define PROJMAT_CHANGED (0x00000001 << 2)
183 #define TEXMAT0_CHANGED (0x00000001 << 3)
184 #define TEXMAT1_CHANGED (0x00000001 << 4)
185 #define TEXMAT2_CHANGED (0x00000001 << 5)
186 #define TEXMAT3_CHANGED (0x00000001 << 6)
187 #define TEXMAT4_CHANGED (0x00000001 << 7)
188 #define TEXMAT5_CHANGED (0x00000001 << 8)
189 #define TEXMAT6_CHANGED (0x00000001 << 9)
190 #define TEXMAT7_CHANGED (0x00000001 << 10)
192 struct IDirect3DDeviceImpl
194 ICOM_VFIELD_MULTI(IDirect3DDevice7);
195 ICOM_VFIELD_MULTI(IDirect3DDevice3);
196 ICOM_VFIELD_MULTI(IDirect3DDevice2);
197 ICOM_VFIELD_MULTI(IDirect3DDevice);
200 /* Version of the Direct3D object from which the device has been created */
203 /* IDirect3DDevice fields */
204 IDirectDrawImpl *d3d;
205 IDirectDrawSurfaceImpl *surface;
207 IDirect3DViewportImpl *viewport_list;
208 IDirect3DViewportImpl *current_viewport;
209 D3DVIEWPORT7 active_viewport;
211 IDirectDrawSurfaceImpl *current_texture[MAX_TEXTURES];
212 IDirectDrawSurfaceImpl *current_zbuffer;
214 /* Current transformation matrices */
215 D3DMATRIX *world_mat;
218 D3DMATRIX *tex_mat[MAX_TEXTURES];
219 BOOLEAN tex_mat_is_identity[MAX_TEXTURES];
221 /* Current material used in D3D7 mode */
222 D3DMATERIAL7 current_material;
227 /* Light parameters */
228 DWORD active_lights, set_lights;
229 D3DLIGHT7 light_parameters[MAX_LIGHTS];
231 /* clipping planes */
232 DWORD max_clipping_planes;
233 d3d7clippingplane *clipping_planes;
235 void (*set_context)(IDirect3DDeviceImpl*);
236 HRESULT (*clear)(IDirect3DDeviceImpl *This,
243 void (*matrices_updated)(IDirect3DDeviceImpl *This, DWORD matrices);
244 void (*set_matrices)(IDirect3DDeviceImpl *This, DWORD matrices,
245 D3DMATRIX *world_mat, D3DMATRIX *view_mat, D3DMATRIX *proj_mat);
246 void (*flush_to_framebuffer)(IDirect3DDeviceImpl *This, LPCRECT pRect, IDirectDrawSurfaceImpl *surf);
248 STATEBLOCK state_block;
250 /* Used to prevent locks and rendering to overlap */
251 CRITICAL_SECTION crit;
254 /*****************************************************************************
255 * IDirect3DVertexBuffer implementation structure
257 struct IDirect3DVertexBufferImpl
259 ICOM_VFIELD_MULTI(IDirect3DVertexBuffer7);
260 ICOM_VFIELD_MULTI(IDirect3DVertexBuffer);
262 IDirectDrawImpl *d3d;
263 D3DVERTEXBUFFERDESC desc;
265 DWORD vertex_buffer_size;
270 /* Various dump and helper functions */
271 extern const char *_get_renderstate(D3DRENDERSTATETYPE type);
272 extern void dump_D3DMATERIAL7(LPD3DMATERIAL7 lpMat);
273 extern void dump_D3DCOLORVALUE(D3DCOLORVALUE *lpCol);
274 extern void dump_D3DLIGHT7(LPD3DLIGHT7 lpLight);
275 extern void dump_DPFLAGS(DWORD dwFlags);
276 extern void dump_D3DMATRIX(D3DMATRIX *mat);
277 extern void dump_D3DVECTOR(D3DVECTOR *lpVec);
278 extern void dump_flexible_vertex(DWORD d3dvtVertexType);
279 extern DWORD get_flexible_vertex_size(DWORD d3dvtVertexType);
280 extern void convert_FVF_to_strided_data(DWORD d3dvtVertexType, LPVOID lpvVertices, D3DDRAWPRIMITIVESTRIDEDDATA *strided, DWORD dwStartVertex);
281 extern void dump_D3DVOP(DWORD dwVertexOp);
282 extern void dump_D3DPV(DWORD dwFlags);
283 extern void multiply_matrix(LPD3DMATRIX,LPD3DMATRIX,LPD3DMATRIX);
284 extern void InitDefaultStateBlock(STATEBLOCK* lpStateBlock, int version);
286 extern const float id_mat[16];
288 /*****************************************************************************
289 * IDirect3D object methods
292 Main_IDirect3DImpl_7_EnumDevices(LPDIRECT3D7 iface,
293 LPD3DENUMDEVICESCALLBACK7 lpEnumDevicesCallback,
297 Main_IDirect3DImpl_7_CreateDevice(LPDIRECT3D7 iface,
299 LPDIRECTDRAWSURFACE7 lpDDS,
300 LPDIRECT3DDEVICE7* lplpD3DDevice);
303 Main_IDirect3DImpl_7_3T_CreateVertexBuffer(LPDIRECT3D7 iface,
304 LPD3DVERTEXBUFFERDESC lpD3DVertBufDesc,
305 LPDIRECT3DVERTEXBUFFER7* lplpD3DVertBuf,
309 Main_IDirect3DImpl_7_3T_EnumZBufferFormats(LPDIRECT3D7 iface,
311 LPD3DENUMPIXELFORMATSCALLBACK lpEnumCallback,
315 Main_IDirect3DImpl_7_3T_EvictManagedTextures(LPDIRECT3D7 iface);
318 Main_IDirect3DImpl_3_2T_1T_EnumDevices(LPDIRECT3D3 iface,
319 LPD3DENUMDEVICESCALLBACK lpEnumDevicesCallback,
323 Main_IDirect3DImpl_3_2T_1T_CreateLight(LPDIRECT3D3 iface,
324 LPDIRECT3DLIGHT* lplpDirect3DLight,
325 IUnknown* pUnkOuter);
328 Main_IDirect3DImpl_3_2T_1T_CreateMaterial(LPDIRECT3D3 iface,
329 LPDIRECT3DMATERIAL3* lplpDirect3DMaterial3,
330 IUnknown* pUnkOuter);
333 Main_IDirect3DImpl_3_2T_1T_CreateViewport(LPDIRECT3D3 iface,
334 LPDIRECT3DVIEWPORT3* lplpD3DViewport3,
335 IUnknown* pUnkOuter);
338 Main_IDirect3DImpl_3_2T_1T_FindDevice(LPDIRECT3D3 iface,
339 LPD3DFINDDEVICESEARCH lpD3DDFS,
340 LPD3DFINDDEVICERESULT lpD3DFDR);
343 Main_IDirect3DImpl_3_CreateDevice(LPDIRECT3D3 iface,
345 LPDIRECTDRAWSURFACE4 lpDDS,
346 LPDIRECT3DDEVICE3* lplpD3DDevice3,
350 Thunk_IDirect3DImpl_3_CreateVertexBuffer(LPDIRECT3D3 iface,
351 LPD3DVERTEXBUFFERDESC lpD3DVertBufDesc,
352 LPDIRECT3DVERTEXBUFFER* lplpD3DVertBuf,
357 Thunk_IDirect3DImpl_2_CreateMaterial(LPDIRECT3D2 iface,
358 LPDIRECT3DMATERIAL2* lplpDirect3DMaterial2,
359 IUnknown* pUnkOuter);
362 Thunk_IDirect3DImpl_2_CreateViewport(LPDIRECT3D2 iface,
363 LPDIRECT3DVIEWPORT2* lplpD3DViewport2,
364 IUnknown* pUnkOuter);
367 Main_IDirect3DImpl_2_CreateDevice(LPDIRECT3D2 iface,
369 LPDIRECTDRAWSURFACE lpDDS,
370 LPDIRECT3DDEVICE2* lplpD3DDevice2);
373 Main_IDirect3DImpl_1_Initialize(LPDIRECT3D iface,
377 Thunk_IDirect3DImpl_1_CreateMaterial(LPDIRECT3D iface,
378 LPDIRECT3DMATERIAL* lplpDirect3DMaterial,
379 IUnknown* pUnkOuter);
382 Thunk_IDirect3DImpl_1_CreateViewport(LPDIRECT3D iface,
383 LPDIRECT3DVIEWPORT* lplpD3DViewport,
384 IUnknown* pUnkOuter);
387 Main_IDirect3DImpl_1_FindDevice(LPDIRECT3D iface,
388 LPD3DFINDDEVICESEARCH lpD3DDFS,
389 LPD3DFINDDEVICERESULT lplpD3DDevice);
392 Thunk_IDirect3DImpl_7_QueryInterface(LPDIRECT3D7 iface,
397 Thunk_IDirect3DImpl_3_QueryInterface(LPDIRECT3D3 iface,
402 Thunk_IDirect3DImpl_2_QueryInterface(LPDIRECT3D2 iface,
407 Thunk_IDirect3DImpl_1_QueryInterface(LPDIRECT3D iface,
412 Thunk_IDirect3DImpl_7_AddRef(LPDIRECT3D7 iface);
415 Thunk_IDirect3DImpl_3_AddRef(LPDIRECT3D3 iface);
418 Thunk_IDirect3DImpl_2_AddRef(LPDIRECT3D2 iface);
421 Thunk_IDirect3DImpl_1_AddRef(LPDIRECT3D iface);
424 Thunk_IDirect3DImpl_7_Release(LPDIRECT3D7 iface);
427 Thunk_IDirect3DImpl_3_Release(LPDIRECT3D3 iface);
430 Thunk_IDirect3DImpl_2_Release(LPDIRECT3D2 iface);
433 Thunk_IDirect3DImpl_1_Release(LPDIRECT3D iface);
436 Thunk_IDirect3DImpl_3_EnumZBufferFormats(LPDIRECT3D3 iface,
438 LPD3DENUMPIXELFORMATSCALLBACK lpEnumCallback,
442 Thunk_IDirect3DImpl_3_EvictManagedTextures(LPDIRECT3D3 iface);
445 Thunk_IDirect3DImpl_2_EnumDevices(LPDIRECT3D2 iface,
446 LPD3DENUMDEVICESCALLBACK lpEnumDevicesCallback,
450 Thunk_IDirect3DImpl_1_EnumDevices(LPDIRECT3D iface,
451 LPD3DENUMDEVICESCALLBACK lpEnumDevicesCallback,
455 Thunk_IDirect3DImpl_2_CreateLight(LPDIRECT3D2 iface,
456 LPDIRECT3DLIGHT* lplpDirect3DLight,
457 IUnknown* pUnkOuter);
460 Thunk_IDirect3DImpl_1_CreateLight(LPDIRECT3D iface,
461 LPDIRECT3DLIGHT* lplpDirect3DLight,
462 IUnknown* pUnkOuter);
465 Thunk_IDirect3DImpl_1_FindDevice(LPDIRECT3D iface,
466 LPD3DFINDDEVICESEARCH lpD3DDFS,
467 LPD3DFINDDEVICERESULT lplpD3DDevice);
470 Thunk_IDirect3DImpl_2_FindDevice(LPDIRECT3D2 iface,
471 LPD3DFINDDEVICESEARCH lpD3DDFS,
472 LPD3DFINDDEVICERESULT lpD3DFDR);
474 /*****************************************************************************
475 * IDirect3DDevice object methods
478 Main_IDirect3DDeviceImpl_7_3T_2T_1T_QueryInterface(LPDIRECT3DDEVICE7 iface,
483 Main_IDirect3DDeviceImpl_7_3T_2T_1T_AddRef(LPDIRECT3DDEVICE7 iface);
486 Main_IDirect3DDeviceImpl_7_3T_2T_1T_Release(LPDIRECT3DDEVICE7 iface);
489 Main_IDirect3DDeviceImpl_7_GetCaps(LPDIRECT3DDEVICE7 iface,
490 LPD3DDEVICEDESC7 lpD3DHELDevDesc);
493 Main_IDirect3DDeviceImpl_7_3T_EnumTextureFormats(LPDIRECT3DDEVICE7 iface,
494 LPD3DENUMPIXELFORMATSCALLBACK lpD3DEnumPixelProc,
498 Main_IDirect3DDeviceImpl_7_3T_2T_1T_BeginScene(LPDIRECT3DDEVICE7 iface);
501 Main_IDirect3DDeviceImpl_7_3T_2T_1T_EndScene(LPDIRECT3DDEVICE7 iface);
504 Main_IDirect3DDeviceImpl_7_3T_2T_1T_GetDirect3D(LPDIRECT3DDEVICE7 iface,
505 LPDIRECT3D7* lplpDirect3D3);
508 Main_IDirect3DDeviceImpl_7_3T_2T_SetRenderTarget(LPDIRECT3DDEVICE7 iface,
509 LPDIRECTDRAWSURFACE7 lpNewRenderTarget,
513 Main_IDirect3DDeviceImpl_7_3T_2T_GetRenderTarget(LPDIRECT3DDEVICE7 iface,
514 LPDIRECTDRAWSURFACE7* lplpRenderTarget);
517 Main_IDirect3DDeviceImpl_7_Clear(LPDIRECT3DDEVICE7 iface,
526 Main_IDirect3DDeviceImpl_7_3T_2T_SetTransform(LPDIRECT3DDEVICE7 iface,
527 D3DTRANSFORMSTATETYPE dtstTransformStateType,
528 LPD3DMATRIX lpD3DMatrix);
531 Main_IDirect3DDeviceImpl_7_3T_2T_GetTransform(LPDIRECT3DDEVICE7 iface,
532 D3DTRANSFORMSTATETYPE dtstTransformStateType,
533 LPD3DMATRIX lpD3DMatrix);
536 Main_IDirect3DDeviceImpl_7_SetViewport(LPDIRECT3DDEVICE7 iface,
537 LPD3DVIEWPORT7 lpData);
540 Main_IDirect3DDeviceImpl_7_3T_2T_MultiplyTransform(LPDIRECT3DDEVICE7 iface,
541 D3DTRANSFORMSTATETYPE dtstTransformStateType,
542 LPD3DMATRIX lpD3DMatrix);
545 Main_IDirect3DDeviceImpl_7_GetViewport(LPDIRECT3DDEVICE7 iface,
546 LPD3DVIEWPORT7 lpData);
549 Main_IDirect3DDeviceImpl_7_SetMaterial(LPDIRECT3DDEVICE7 iface,
550 LPD3DMATERIAL7 lpMat);
553 Main_IDirect3DDeviceImpl_7_GetMaterial(LPDIRECT3DDEVICE7 iface,
554 LPD3DMATERIAL7 lpMat);
557 Main_IDirect3DDeviceImpl_7_SetLight(LPDIRECT3DDEVICE7 iface,
559 LPD3DLIGHT7 lpLight);
562 Main_IDirect3DDeviceImpl_7_GetLight(LPDIRECT3DDEVICE7 iface,
564 LPD3DLIGHT7 lpLight);
567 Main_IDirect3DDeviceImpl_7_3T_2T_SetRenderState(LPDIRECT3DDEVICE7 iface,
568 D3DRENDERSTATETYPE dwRenderStateType,
569 DWORD dwRenderState);
572 Main_IDirect3DDeviceImpl_7_3T_2T_GetRenderState(LPDIRECT3DDEVICE7 iface,
573 D3DRENDERSTATETYPE dwRenderStateType,
574 LPDWORD lpdwRenderState);
577 Main_IDirect3DDeviceImpl_7_BeginStateBlock(LPDIRECT3DDEVICE7 iface);
580 Main_IDirect3DDeviceImpl_7_EndStateBlock(LPDIRECT3DDEVICE7 iface,
581 LPDWORD lpdwBlockHandle);
584 Main_IDirect3DDeviceImpl_7_PreLoad(LPDIRECT3DDEVICE7 iface,
585 LPDIRECTDRAWSURFACE7 lpddsTexture);
588 Main_IDirect3DDeviceImpl_7_3T_DrawPrimitive(LPDIRECT3DDEVICE7 iface,
589 D3DPRIMITIVETYPE d3dptPrimitiveType,
590 DWORD d3dvtVertexType,
596 Main_IDirect3DDeviceImpl_7_3T_DrawIndexedPrimitive(LPDIRECT3DDEVICE7 iface,
597 D3DPRIMITIVETYPE d3dptPrimitiveType,
598 DWORD d3dvtVertexType,
606 Main_IDirect3DDeviceImpl_7_3T_2T_SetClipStatus(LPDIRECT3DDEVICE7 iface,
607 LPD3DCLIPSTATUS lpD3DClipStatus);
610 Main_IDirect3DDeviceImpl_7_3T_2T_GetClipStatus(LPDIRECT3DDEVICE7 iface,
611 LPD3DCLIPSTATUS lpD3DClipStatus);
614 Main_IDirect3DDeviceImpl_7_3T_DrawPrimitiveStrided(LPDIRECT3DDEVICE7 iface,
615 D3DPRIMITIVETYPE d3dptPrimitiveType,
617 LPD3DDRAWPRIMITIVESTRIDEDDATA lpD3DDrawPrimStrideData,
622 Main_IDirect3DDeviceImpl_7_3T_DrawIndexedPrimitiveStrided(LPDIRECT3DDEVICE7 iface,
623 D3DPRIMITIVETYPE d3dptPrimitiveType,
625 LPD3DDRAWPRIMITIVESTRIDEDDATA lpD3DDrawPrimStrideData,
632 Main_IDirect3DDeviceImpl_7_3T_DrawPrimitiveVB(LPDIRECT3DDEVICE7 iface,
633 D3DPRIMITIVETYPE d3dptPrimitiveType,
634 LPDIRECT3DVERTEXBUFFER7 lpD3DVertexBuf,
640 Main_IDirect3DDeviceImpl_7_3T_DrawIndexedPrimitiveVB(LPDIRECT3DDEVICE7 iface,
641 D3DPRIMITIVETYPE d3dptPrimitiveType,
642 LPDIRECT3DVERTEXBUFFER7 lpD3DVertexBuf,
650 Main_IDirect3DDeviceImpl_7_3T_ComputeSphereVisibility(LPDIRECT3DDEVICE7 iface,
651 LPD3DVECTOR lpCenters,
655 LPDWORD lpdwReturnValues);
658 Main_IDirect3DDeviceImpl_7_3T_GetTexture(LPDIRECT3DDEVICE7 iface,
660 LPDIRECTDRAWSURFACE7* lpTexture);
663 Main_IDirect3DDeviceImpl_7_3T_SetTexture(LPDIRECT3DDEVICE7 iface,
665 LPDIRECTDRAWSURFACE7 lpTexture);
668 Main_IDirect3DDeviceImpl_7_3T_GetTextureStageState(LPDIRECT3DDEVICE7 iface,
670 D3DTEXTURESTAGESTATETYPE d3dTexStageStateType,
674 Main_IDirect3DDeviceImpl_7_3T_SetTextureStageState(LPDIRECT3DDEVICE7 iface,
676 D3DTEXTURESTAGESTATETYPE d3dTexStageStateType,
680 Main_IDirect3DDeviceImpl_7_3T_ValidateDevice(LPDIRECT3DDEVICE7 iface,
684 Main_IDirect3DDeviceImpl_7_ApplyStateBlock(LPDIRECT3DDEVICE7 iface,
685 DWORD dwBlockHandle);
688 Main_IDirect3DDeviceImpl_7_CaptureStateBlock(LPDIRECT3DDEVICE7 iface,
689 DWORD dwBlockHandle);
692 Main_IDirect3DDeviceImpl_7_DeleteStateBlock(LPDIRECT3DDEVICE7 iface,
693 DWORD dwBlockHandle);
696 Main_IDirect3DDeviceImpl_7_CreateStateBlock(LPDIRECT3DDEVICE7 iface,
697 D3DSTATEBLOCKTYPE d3dsbType,
698 LPDWORD lpdwBlockHandle);
701 Main_IDirect3DDeviceImpl_7_Load(LPDIRECT3DDEVICE7 iface,
702 LPDIRECTDRAWSURFACE7 lpDestTex,
704 LPDIRECTDRAWSURFACE7 lpSrcTex,
709 Main_IDirect3DDeviceImpl_7_LightEnable(LPDIRECT3DDEVICE7 iface,
714 Main_IDirect3DDeviceImpl_7_GetLightEnable(LPDIRECT3DDEVICE7 iface,
719 Main_IDirect3DDeviceImpl_7_SetClipPlane(LPDIRECT3DDEVICE7 iface,
721 D3DVALUE* pPlaneEquation);
724 Main_IDirect3DDeviceImpl_7_GetClipPlane(LPDIRECT3DDEVICE7 iface,
726 D3DVALUE* pPlaneEquation);
729 Main_IDirect3DDeviceImpl_7_GetInfo(LPDIRECT3DDEVICE7 iface,
731 LPVOID pDevInfoStruct,
735 Main_IDirect3DDeviceImpl_3_2T_1T_GetCaps(LPDIRECT3DDEVICE3 iface,
736 LPD3DDEVICEDESC lpD3DHWDevDesc,
737 LPD3DDEVICEDESC lpD3DHELDevDesc);
740 Main_IDirect3DDeviceImpl_3_2T_1T_GetStats(LPDIRECT3DDEVICE3 iface,
741 LPD3DSTATS lpD3DStats);
744 Main_IDirect3DDeviceImpl_3_2T_1T_AddViewport(LPDIRECT3DDEVICE3 iface,
745 LPDIRECT3DVIEWPORT3 lpDirect3DViewport3);
748 Main_IDirect3DDeviceImpl_3_2T_1T_DeleteViewport(LPDIRECT3DDEVICE3 iface,
749 LPDIRECT3DVIEWPORT3 lpDirect3DViewport3);
752 Main_IDirect3DDeviceImpl_3_2T_1T_NextViewport(LPDIRECT3DDEVICE3 iface,
753 LPDIRECT3DVIEWPORT3 lpDirect3DViewport3,
754 LPDIRECT3DVIEWPORT3* lplpDirect3DViewport3,
758 Main_IDirect3DDeviceImpl_3_2T_SetCurrentViewport(LPDIRECT3DDEVICE3 iface,
759 LPDIRECT3DVIEWPORT3 lpDirect3DViewport3);
762 Main_IDirect3DDeviceImpl_3_2T_GetCurrentViewport(LPDIRECT3DDEVICE3 iface,
763 LPDIRECT3DVIEWPORT3* lplpDirect3DViewport3);
766 Main_IDirect3DDeviceImpl_3_Begin(LPDIRECT3DDEVICE3 iface,
767 D3DPRIMITIVETYPE d3dptPrimitiveType,
768 DWORD dwVertexTypeDesc,
772 Main_IDirect3DDeviceImpl_3_BeginIndexed(LPDIRECT3DDEVICE3 iface,
773 D3DPRIMITIVETYPE d3dptPrimitiveType,
774 DWORD d3dvtVertexType,
780 Main_IDirect3DDeviceImpl_3_2T_Vertex(LPDIRECT3DDEVICE3 iface,
781 LPVOID lpVertexType);
784 Main_IDirect3DDeviceImpl_3_2T_Index(LPDIRECT3DDEVICE3 iface,
788 Main_IDirect3DDeviceImpl_3_2T_End(LPDIRECT3DDEVICE3 iface,
792 Main_IDirect3DDeviceImpl_3_2T_GetLightState(LPDIRECT3DDEVICE3 iface,
793 D3DLIGHTSTATETYPE dwLightStateType,
794 LPDWORD lpdwLightState);
797 Main_IDirect3DDeviceImpl_3_2T_SetLightState(LPDIRECT3DDEVICE3 iface,
798 D3DLIGHTSTATETYPE dwLightStateType,
802 Main_IDirect3DDeviceImpl_2_1T_SwapTextureHandles(LPDIRECT3DDEVICE2 iface,
803 LPDIRECT3DTEXTURE2 lpD3DTex1,
804 LPDIRECT3DTEXTURE2 lpD3DTex2);
807 Main_IDirect3DDeviceImpl_2_1T_EnumTextureFormats(LPDIRECT3DDEVICE2 iface,
808 LPD3DENUMTEXTUREFORMATSCALLBACK lpD3DEnumTextureProc,
812 Main_IDirect3DDeviceImpl_2_Begin(LPDIRECT3DDEVICE2 iface,
813 D3DPRIMITIVETYPE d3dpt,
814 D3DVERTEXTYPE dwVertexTypeDesc,
818 Main_IDirect3DDeviceImpl_2_BeginIndexed(LPDIRECT3DDEVICE2 iface,
819 D3DPRIMITIVETYPE d3dptPrimitiveType,
820 D3DVERTEXTYPE d3dvtVertexType,
826 Main_IDirect3DDeviceImpl_2_DrawPrimitive(LPDIRECT3DDEVICE2 iface,
827 D3DPRIMITIVETYPE d3dptPrimitiveType,
828 D3DVERTEXTYPE d3dvtVertexType,
834 Main_IDirect3DDeviceImpl_2_DrawIndexedPrimitive(LPDIRECT3DDEVICE2 iface,
835 D3DPRIMITIVETYPE d3dptPrimitiveType,
836 D3DVERTEXTYPE d3dvtVertexType,
844 Main_IDirect3DDeviceImpl_1_Initialize(LPDIRECT3DDEVICE iface,
845 LPDIRECT3D lpDirect3D,
847 LPD3DDEVICEDESC lpD3DDVDesc);
850 Main_IDirect3DDeviceImpl_1_CreateExecuteBuffer(LPDIRECT3DDEVICE iface,
851 LPD3DEXECUTEBUFFERDESC lpDesc,
852 LPDIRECT3DEXECUTEBUFFER* lplpDirect3DExecuteBuffer,
853 IUnknown* pUnkOuter);
856 Main_IDirect3DDeviceImpl_1_Execute(LPDIRECT3DDEVICE iface,
857 LPDIRECT3DEXECUTEBUFFER lpDirect3DExecuteBuffer,
858 LPDIRECT3DVIEWPORT lpDirect3DViewport,
862 Main_IDirect3DDeviceImpl_1_Pick(LPDIRECT3DDEVICE iface,
863 LPDIRECT3DEXECUTEBUFFER lpDirect3DExecuteBuffer,
864 LPDIRECT3DVIEWPORT lpDirect3DViewport,
869 Main_IDirect3DDeviceImpl_1_GetPickRecords(LPDIRECT3DDEVICE iface,
871 LPD3DPICKRECORD lpD3DPickRec);
874 Main_IDirect3DDeviceImpl_1_CreateMatrix(LPDIRECT3DDEVICE iface,
875 LPD3DMATRIXHANDLE lpD3DMatHandle);
878 Main_IDirect3DDeviceImpl_1_SetMatrix(LPDIRECT3DDEVICE iface,
879 D3DMATRIXHANDLE D3DMatHandle,
880 LPD3DMATRIX lpD3DMatrix);
883 Main_IDirect3DDeviceImpl_1_GetMatrix(LPDIRECT3DDEVICE iface,
884 D3DMATRIXHANDLE D3DMatHandle,
885 LPD3DMATRIX lpD3DMatrix);
888 Main_IDirect3DDeviceImpl_1_DeleteMatrix(LPDIRECT3DDEVICE iface,
889 D3DMATRIXHANDLE D3DMatHandle);
892 Thunk_IDirect3DDeviceImpl_3_QueryInterface(LPDIRECT3DDEVICE3 iface,
897 Thunk_IDirect3DDeviceImpl_2_QueryInterface(LPDIRECT3DDEVICE2 iface,
902 Thunk_IDirect3DDeviceImpl_1_QueryInterface(LPDIRECT3DDEVICE iface,
907 Thunk_IDirect3DDeviceImpl_3_AddRef(LPDIRECT3DDEVICE3 iface);
910 Thunk_IDirect3DDeviceImpl_2_AddRef(LPDIRECT3DDEVICE2 iface);
913 Thunk_IDirect3DDeviceImpl_1_AddRef(LPDIRECT3DDEVICE iface);
916 Thunk_IDirect3DDeviceImpl_3_Release(LPDIRECT3DDEVICE3 iface);
919 Thunk_IDirect3DDeviceImpl_2_Release(LPDIRECT3DDEVICE2 iface);
922 Thunk_IDirect3DDeviceImpl_1_Release(LPDIRECT3DDEVICE iface);
925 Thunk_IDirect3DDeviceImpl_2_AddViewport(LPDIRECT3DDEVICE2 iface,
926 LPDIRECT3DVIEWPORT2 lpDirect3DViewport2);
929 Thunk_IDirect3DDeviceImpl_1_AddViewport(LPDIRECT3DDEVICE iface,
930 LPDIRECT3DVIEWPORT lpDirect3DViewport);
933 Thunk_IDirect3DDeviceImpl_2_DeleteViewport(LPDIRECT3DDEVICE2 iface,
934 LPDIRECT3DVIEWPORT2 lpDirect3DViewport2);
937 Thunk_IDirect3DDeviceImpl_1_DeleteViewport(LPDIRECT3DDEVICE iface,
938 LPDIRECT3DVIEWPORT lpDirect3DViewport);
941 Thunk_IDirect3DDeviceImpl_2_NextViewport(LPDIRECT3DDEVICE3 iface,
942 LPDIRECT3DVIEWPORT2 lpDirect3DViewport2,
943 LPDIRECT3DVIEWPORT2* lplpDirect3DViewport2,
947 Thunk_IDirect3DDeviceImpl_1_NextViewport(LPDIRECT3DDEVICE3 iface,
948 LPDIRECT3DVIEWPORT lpDirect3DViewport,
949 LPDIRECT3DVIEWPORT* lplpDirect3DViewport,
953 Thunk_IDirect3DDeviceImpl_3_GetDirect3D(LPDIRECT3DDEVICE3 iface,
954 LPDIRECT3D3* lplpDirect3D3);
957 Thunk_IDirect3DDeviceImpl_2_GetDirect3D(LPDIRECT3DDEVICE2 iface,
958 LPDIRECT3D2* lplpDirect3D2);
961 Thunk_IDirect3DDeviceImpl_1_GetDirect3D(LPDIRECT3DDEVICE iface,
962 LPDIRECT3D* lplpDirect3D);
965 Thunk_IDirect3DDeviceImpl_2_SetCurrentViewport(LPDIRECT3DDEVICE2 iface,
966 LPDIRECT3DVIEWPORT2 lpDirect3DViewport2);
969 Thunk_IDirect3DDeviceImpl_2_GetCurrentViewport(LPDIRECT3DDEVICE2 iface,
970 LPDIRECT3DVIEWPORT2* lpDirect3DViewport2);
973 Thunk_IDirect3DDeviceImpl_3_EnumTextureFormats(LPDIRECT3DDEVICE3 iface,
974 LPD3DENUMPIXELFORMATSCALLBACK lpD3DEnumPixelProc,
978 Thunk_IDirect3DDeviceImpl_3_BeginScene(LPDIRECT3DDEVICE3 iface);
981 Thunk_IDirect3DDeviceImpl_2_BeginScene(LPDIRECT3DDEVICE2 iface);
984 Thunk_IDirect3DDeviceImpl_1_BeginScene(LPDIRECT3DDEVICE iface);
987 Thunk_IDirect3DDeviceImpl_3_EndScene(LPDIRECT3DDEVICE3 iface);
990 Thunk_IDirect3DDeviceImpl_2_EndScene(LPDIRECT3DDEVICE2 iface);
993 Thunk_IDirect3DDeviceImpl_1_EndScene(LPDIRECT3DDEVICE iface);
996 Thunk_IDirect3DDeviceImpl_3_SetTransform(LPDIRECT3DDEVICE3 iface,
997 D3DTRANSFORMSTATETYPE dtstTransformStateType,
998 LPD3DMATRIX lpD3DMatrix);
1001 Thunk_IDirect3DDeviceImpl_2_SetTransform(LPDIRECT3DDEVICE2 iface,
1002 D3DTRANSFORMSTATETYPE dtstTransformStateType,
1003 LPD3DMATRIX lpD3DMatrix);
1006 Thunk_IDirect3DDeviceImpl_3_GetTransform(LPDIRECT3DDEVICE3 iface,
1007 D3DTRANSFORMSTATETYPE dtstTransformStateType,
1008 LPD3DMATRIX lpD3DMatrix);
1011 Thunk_IDirect3DDeviceImpl_2_GetTransform(LPDIRECT3DDEVICE2 iface,
1012 D3DTRANSFORMSTATETYPE dtstTransformStateType,
1013 LPD3DMATRIX lpD3DMatrix);
1016 Thunk_IDirect3DDeviceImpl_3_MultiplyTransform(LPDIRECT3DDEVICE3 iface,
1017 D3DTRANSFORMSTATETYPE dtstTransformStateType,
1018 LPD3DMATRIX lpD3DMatrix);
1021 Thunk_IDirect3DDeviceImpl_2_MultiplyTransform(LPDIRECT3DDEVICE2 iface,
1022 D3DTRANSFORMSTATETYPE dtstTransformStateType,
1023 LPD3DMATRIX lpD3DMatrix);
1026 Thunk_IDirect3DDeviceImpl_3_SetRenderState(LPDIRECT3DDEVICE3 iface,
1027 D3DRENDERSTATETYPE dwRenderStateType,
1028 DWORD dwRenderState);
1031 Thunk_IDirect3DDeviceImpl_2_SetRenderState(LPDIRECT3DDEVICE2 iface,
1032 D3DRENDERSTATETYPE dwRenderStateType,
1033 DWORD dwRenderState);
1036 Thunk_IDirect3DDeviceImpl_3_GetRenderState(LPDIRECT3DDEVICE3 iface,
1037 D3DRENDERSTATETYPE dwRenderStateType,
1038 LPDWORD lpdwRenderState);
1041 Thunk_IDirect3DDeviceImpl_2_GetRenderState(LPDIRECT3DDEVICE2 iface,
1042 D3DRENDERSTATETYPE dwRenderStateType,
1043 LPDWORD lpdwRenderState);
1046 Thunk_IDirect3DDeviceImpl_3_DrawPrimitive(LPDIRECT3DDEVICE3 iface,
1047 D3DPRIMITIVETYPE d3dptPrimitiveType,
1048 DWORD d3dvtVertexType,
1050 DWORD dwVertexCount,
1054 Thunk_IDirect3DDeviceImpl_3_DrawIndexedPrimitive(LPDIRECT3DDEVICE3 iface,
1055 D3DPRIMITIVETYPE d3dptPrimitiveType,
1056 DWORD d3dvtVertexType,
1058 DWORD dwVertexCount,
1064 Thunk_IDirect3DDeviceImpl_3_SetClipStatus(LPDIRECT3DDEVICE3 iface,
1065 LPD3DCLIPSTATUS lpD3DClipStatus);
1068 Thunk_IDirect3DDeviceImpl_2_SetClipStatus(LPDIRECT3DDEVICE2 iface,
1069 LPD3DCLIPSTATUS lpD3DClipStatus);
1072 Thunk_IDirect3DDeviceImpl_3_GetClipStatus(LPDIRECT3DDEVICE3 iface,
1073 LPD3DCLIPSTATUS lpD3DClipStatus);
1076 Thunk_IDirect3DDeviceImpl_2_GetClipStatus(LPDIRECT3DDEVICE2 iface,
1077 LPD3DCLIPSTATUS lpD3DClipStatus);
1080 Thunk_IDirect3DDeviceImpl_3_DrawPrimitiveStrided(LPDIRECT3DDEVICE3 iface,
1081 D3DPRIMITIVETYPE d3dptPrimitiveType,
1083 LPD3DDRAWPRIMITIVESTRIDEDDATA lpD3DDrawPrimStrideData,
1084 DWORD dwVertexCount,
1088 Thunk_IDirect3DDeviceImpl_3_DrawIndexedPrimitiveStrided(LPDIRECT3DDEVICE3 iface,
1089 D3DPRIMITIVETYPE d3dptPrimitiveType,
1091 LPD3DDRAWPRIMITIVESTRIDEDDATA lpD3DDrawPrimStrideData,
1092 DWORD dwVertexCount,
1098 Thunk_IDirect3DDeviceImpl_3_ComputeSphereVisibility(LPDIRECT3DDEVICE3 iface,
1099 LPD3DVECTOR lpCenters,
1103 LPDWORD lpdwReturnValues);
1106 Thunk_IDirect3DDeviceImpl_3_GetTextureStageState(LPDIRECT3DDEVICE3 iface,
1108 D3DTEXTURESTAGESTATETYPE d3dTexStageStateType,
1112 Thunk_IDirect3DDeviceImpl_3_SetTextureStageState(LPDIRECT3DDEVICE3 iface,
1114 D3DTEXTURESTAGESTATETYPE d3dTexStageStateType,
1118 Thunk_IDirect3DDeviceImpl_3_ValidateDevice(LPDIRECT3DDEVICE3 iface,
1119 LPDWORD lpdwPasses);
1122 Thunk_IDirect3DDeviceImpl_2_GetCaps(LPDIRECT3DDEVICE2 iface,
1123 LPD3DDEVICEDESC lpD3DHWDevDesc,
1124 LPD3DDEVICEDESC lpD3DHELDevDesc);
1127 Thunk_IDirect3DDeviceImpl_1_GetCaps(LPDIRECT3DDEVICE iface,
1128 LPD3DDEVICEDESC lpD3DHWDevDesc,
1129 LPD3DDEVICEDESC lpD3DHELDevDesc);
1132 Thunk_IDirect3DDeviceImpl_1_SwapTextureHandles(LPDIRECT3DDEVICE iface,
1133 LPDIRECT3DTEXTURE lpD3Dtex1,
1134 LPDIRECT3DTEXTURE lpD3DTex2);
1137 Thunk_IDirect3DDeviceImpl_2_GetStats(LPDIRECT3DDEVICE2 iface,
1138 LPD3DSTATS lpD3DStats);
1141 Thunk_IDirect3DDeviceImpl_1_GetStats(LPDIRECT3DDEVICE iface,
1142 LPD3DSTATS lpD3DStats);
1145 Thunk_IDirect3DDeviceImpl_3_SetRenderTarget(LPDIRECT3DDEVICE3 iface,
1146 LPDIRECTDRAWSURFACE4 lpNewRenderTarget,
1150 Thunk_IDirect3DDeviceImpl_3_GetRenderTarget(LPDIRECT3DDEVICE3 iface,
1151 LPDIRECTDRAWSURFACE4* lplpRenderTarget);
1154 Thunk_IDirect3DDeviceImpl_2_SetRenderTarget(LPDIRECT3DDEVICE2 iface,
1155 LPDIRECTDRAWSURFACE lpNewRenderTarget,
1159 Thunk_IDirect3DDeviceImpl_2_GetRenderTarget(LPDIRECT3DDEVICE2 iface,
1160 LPDIRECTDRAWSURFACE* lplpRenderTarget);
1163 Thunk_IDirect3DDeviceImpl_2_Vertex(LPDIRECT3DDEVICE2 iface,
1164 LPVOID lpVertexType);
1167 Thunk_IDirect3DDeviceImpl_2_Index(LPDIRECT3DDEVICE2 iface,
1171 Thunk_IDirect3DDeviceImpl_2_End(LPDIRECT3DDEVICE2 iface,
1175 Thunk_IDirect3DDeviceImpl_2_GetLightState(LPDIRECT3DDEVICE2 iface,
1176 D3DLIGHTSTATETYPE dwLightStateType,
1177 LPDWORD lpdwLightState);
1180 Thunk_IDirect3DDeviceImpl_2_SetLightState(LPDIRECT3DDEVICE2 iface,
1181 D3DLIGHTSTATETYPE dwLightStateType,
1182 DWORD dwLightState);
1185 Thunk_IDirect3DDeviceImpl_1_EnumTextureFormats(LPDIRECT3DDEVICE iface,
1186 LPD3DENUMTEXTUREFORMATSCALLBACK lpD3DEnumTextureProc,
1190 Thunk_IDirect3DDeviceImpl_3_SetTexture(LPDIRECT3DDEVICE3 iface,
1192 LPDIRECT3DTEXTURE2 lpTexture2);
1195 Thunk_IDirect3DDeviceImpl_3_DrawPrimitiveVB(LPDIRECT3DDEVICE3 iface,
1196 D3DPRIMITIVETYPE d3dptPrimitiveType,
1197 LPDIRECT3DVERTEXBUFFER lpD3DVertexBuf,
1198 DWORD dwStartVertex,
1199 DWORD dwNumVertices,
1203 Thunk_IDirect3DDeviceImpl_3_DrawIndexedPrimitiveVB(LPDIRECT3DDEVICE3 iface,
1204 D3DPRIMITIVETYPE d3dptPrimitiveType,
1205 LPDIRECT3DVERTEXBUFFER lpD3DVertexBuf,
1211 Thunk_IDirect3DDeviceImpl_3_GetTexture(LPDIRECT3DDEVICE3 iface,
1213 LPDIRECT3DTEXTURE2* lplpTexture2);
1215 #endif /* __GRAPHICS_WINE_D3D_PRIVATE_H */