2 * Copyright (c) 1998 Lionel ULMER
4 * This file contains all the common stuff for D3D devices.
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
30 #include "wine/debug.h"
32 #include "d3d_private.h"
35 WINE_DEFAULT_DEBUG_CHANNEL(ddraw
);
37 DWORD InitRenderStateTab
[] = {
38 D3DRENDERSTATE_TEXTUREHANDLE
, (DWORD
)NULL
,
39 D3DRENDERSTATE_ANTIALIAS
, D3DANTIALIAS_NONE
,
40 /* FIXME: D3DRENDERSTATE_TEXTUREADDRESS */
41 D3DRENDERSTATE_TEXTUREPERSPECTIVE
, TRUE
,
42 /* FIXME: D3DRENDERSTATE_WRAPU */
43 /* FIXME: D3DRENDERSTATE_WRAPV */
44 D3DRENDERSTATE_ZENABLE
, D3DZB_TRUE
, /* This needs to be set differently according to the Z buffer status */
45 D3DRENDERSTATE_FILLMODE
, D3DFILL_SOLID
,
46 D3DRENDERSTATE_SHADEMODE
, D3DSHADE_GOURAUD
,
47 D3DRENDERSTATE_LINEPATTERN
, 0,
48 D3DRENDERSTATE_MONOENABLE
, FALSE
,
49 D3DRENDERSTATE_ROP2
, R2_COPYPEN
,
50 D3DRENDERSTATE_PLANEMASK
, 0xFFFFFFFF,
51 D3DRENDERSTATE_ZWRITEENABLE
, TRUE
,
52 D3DRENDERSTATE_ALPHATESTENABLE
, FALSE
,
53 D3DRENDERSTATE_LASTPIXEL
, TRUE
,
54 D3DRENDERSTATE_TEXTUREMAG
, D3DFILTER_NEAREST
,
55 D3DRENDERSTATE_TEXTUREMIN
, D3DFILTER_NEAREST
,
56 D3DRENDERSTATE_SRCBLEND
, D3DBLEND_ONE
,
57 D3DRENDERSTATE_DESTBLEND
, D3DBLEND_ZERO
,
58 D3DRENDERSTATE_TEXTUREMAPBLEND
, D3DTBLEND_MODULATE
,
59 D3DRENDERSTATE_CULLMODE
, D3DCULL_CCW
,
60 D3DRENDERSTATE_ZFUNC
, D3DCMP_LESSEQUAL
,
61 D3DRENDERSTATE_ALPHAREF
, 0,
62 D3DRENDERSTATE_ALPHAFUNC
, D3DCMP_ALWAYS
,
63 D3DRENDERSTATE_DITHERENABLE
, FALSE
,
64 D3DRENDERSTATE_ALPHABLENDENABLE
, FALSE
,
65 D3DRENDERSTATE_FOGENABLE
, FALSE
,
66 D3DRENDERSTATE_SPECULARENABLE
, FALSE
,
67 D3DRENDERSTATE_ZVISIBLE
, FALSE
,
68 D3DRENDERSTATE_SUBPIXEL
, FALSE
,
69 D3DRENDERSTATE_SUBPIXELX
, FALSE
,
70 D3DRENDERSTATE_STIPPLEDALPHA
, FALSE
,
71 D3DRENDERSTATE_FOGCOLOR
, D3DRGBA(0,0,0,0),
72 D3DRENDERSTATE_FOGTABLEMODE
, D3DFOG_NONE
,
73 /* FIXME: D3DRENDERSTATE_FOGTABLESTART (same as D3DRENDERSTATE_FOGSTART) */
74 /* FIXME: D3DRENDERSTATE_FOGTABLEEND (same as D3DRENDERSTATE_FOGEND) */
75 D3DRENDERSTATE_FOGTABLEDENSITY
, 0x3F80000, /* 1.0f (same as D3DRENDERSTATE_FOGDENSITY) */
76 /* FIXME: D3DRENDERSTATE_STIPPLEENABLE */
77 D3DRENDERSTATE_EDGEANTIALIAS
, FALSE
,
78 D3DRENDERSTATE_COLORKEYENABLE
, FALSE
,
79 /* FIXME: D3DRENDERSTATE_BORDERCOLOR */
80 D3DRENDERSTATE_TEXTUREADDRESSU
, D3DTADDRESS_WRAP
,
81 D3DRENDERSTATE_TEXTUREADDRESSV
, D3DTADDRESS_WRAP
,
82 D3DRENDERSTATE_MIPMAPLODBIAS
, 0x00000000, /* 0.0f */
83 D3DRENDERSTATE_ZBIAS
, 0,
84 D3DRENDERSTATE_RANGEFOGENABLE
, FALSE
,
85 /* FIXME: D3DRENDERSTATE_ANISOTROPY */
86 /* FIXME: D3DRENDERSTATE_FLUSHBATCH */
87 /* FIXME: D3DRENDERSTATE_TRANSLUCENTSORTINDEPENDENT */
88 D3DRENDERSTATE_STENCILENABLE
, FALSE
,
89 D3DRENDERSTATE_STENCILFAIL
, D3DSTENCILOP_KEEP
,
90 D3DRENDERSTATE_STENCILZFAIL
, D3DSTENCILOP_KEEP
,
91 D3DRENDERSTATE_STENCILPASS
, D3DSTENCILOP_KEEP
,
92 D3DRENDERSTATE_STENCILFUNC
, D3DCMP_ALWAYS
,
93 D3DRENDERSTATE_STENCILREF
, 0,
94 D3DRENDERSTATE_STENCILMASK
, 0xFFFFFFFF,
95 D3DRENDERSTATE_STENCILWRITEMASK
, 0xFFFFFFFF,
96 /* FIXME: D3DRENDERSTATE_TEXTUREFACTOR */
97 /* FIXME: D3DRENDERSTATE_STIPPLEPATTERN00..31 */
98 D3DRENDERSTATE_WRAP0
, 0,
99 D3DRENDERSTATE_WRAP1
, 0,
100 D3DRENDERSTATE_WRAP2
, 0,
101 D3DRENDERSTATE_WRAP3
, 0,
102 D3DRENDERSTATE_WRAP4
, 0,
103 D3DRENDERSTATE_WRAP5
, 0,
104 D3DRENDERSTATE_WRAP6
, 0,
105 D3DRENDERSTATE_WRAP7
, 0,
106 D3DRENDERSTATE_CLIPPING
, FALSE
,
107 D3DRENDERSTATE_LIGHTING
, TRUE
,
108 D3DRENDERSTATE_EXTENTS
, FALSE
,
109 D3DRENDERSTATE_AMBIENT
, D3DRGBA(0,0,0,0),
110 D3DRENDERSTATE_FOGVERTEXMODE
, D3DFOG_NONE
,
111 D3DRENDERSTATE_COLORVERTEX
, TRUE
,
112 D3DRENDERSTATE_LOCALVIEWER
, TRUE
,
113 D3DRENDERSTATE_NORMALIZENORMALS
, FALSE
,
114 /* FIXME: D3DRENDER_STATE_COLORKEYBLENDENABLE */
115 D3DRENDERSTATE_DIFFUSEMATERIALSOURCE
, D3DMCS_COLOR1
,
116 D3DRENDERSTATE_SPECULARMATERIALSOURCE
, D3DMCS_COLOR2
,
117 D3DRENDERSTATE_AMBIENTMATERIALSOURCE
, D3DMCS_COLOR2
,
118 D3DRENDERSTATE_EMISSIVEMATERIALSOURCE
, D3DMCS_MATERIAL
,
119 D3DRENDERSTATE_VERTEXBLEND
, D3DVBLEND_DISABLE
,
120 D3DRENDERSTATE_CLIPPLANEENABLE
, 0
123 DWORD InitLightStateTab
[] = {
124 D3DLIGHTSTATE_MATERIAL
, (DWORD
)NULL
,
125 D3DLIGHTSTATE_AMBIENT
, D3DRGBA(0,0,0,0),
126 D3DLIGHTSTATE_COLORMODEL
, D3DCOLOR_RGB
,
127 D3DLIGHTSTATE_FOGMODE
, D3DFOG_NONE
,
128 D3DLIGHTSTATE_FOGSTART
, 0x3F80000, /* 1.0f */
129 D3DLIGHTSTATE_FOGEND
, 0x42C8000, /* 100.0f */
130 D3DLIGHTSTATE_FOGDENSITY
, 0x3F80000 /* 1.0f */
131 /* FIXME: D3DLIGHTSTATE_COLORVERTEX */
134 DWORD InitTextureStageStateTab
[] = {
135 D3DTSS_COLOROP
, D3DTOP_DISABLE
, /* Note, it's manually set for stage 0 */
136 D3DTSS_COLORARG1
, D3DTA_TEXTURE
,
137 D3DTSS_COLORARG2
, D3DTA_CURRENT
,
138 D3DTSS_ALPHAOP
, D3DTOP_DISABLE
, /* Note, it's manually set for stage 0 */
139 D3DTSS_ALPHAARG1
, D3DTA_TEXTURE
,
140 D3DTSS_ALPHAARG2
, D3DTA_CURRENT
,
141 /* FIXME: D3DTSS_BUMPENVMAT00,01,10,11 */
142 /* D3DTSS_TEXCOORDINDEX is set manually */
143 D3DTSS_ADDRESS
, D3DTADDRESS_WRAP
,
144 D3DTSS_ADDRESSU
, D3DTADDRESS_WRAP
,
145 D3DTSS_ADDRESSV
, D3DTADDRESS_WRAP
,
146 D3DTSS_BORDERCOLOR
, 0x00000000,
147 D3DTSS_MAGFILTER
, D3DTFG_POINT
,
148 D3DTSS_MINFILTER
, D3DTFN_POINT
,
149 D3DTSS_MIPFILTER
, D3DTFP_NONE
,
150 D3DTSS_MIPMAPLODBIAS
, 0x00000000, /* 0.0f */
151 D3DTSS_MAXMIPLEVEL
, 0,
152 /* D3DTSS_MAXANISOTROPY, 1, */ /* This is to prevent warnings :-) */
153 /* FIXME: D3DTSS_BUMPENVLSCALE */
154 /* FIXME: D3DTSS_NUMPENVLOFFSET */
155 /* FIXME: D3DTSS_TEXTURETRANSFORMFLAGS */
159 void InitDefaultStateBlock(STATEBLOCK
* lpStateBlock
, int version
)
162 TRACE("(%p,%d)\n", lpStateBlock
, version
);
163 memset(lpStateBlock
, 0, sizeof(STATEBLOCK
));
165 /* Initialize render states */
166 for (i
= 0; i
< sizeof(InitRenderStateTab
) / sizeof(InitRenderStateTab
[0]); i
+= 2)
168 lpStateBlock
->render_state
[InitRenderStateTab
[i
] - 1] = InitRenderStateTab
[i
+ 1];
169 lpStateBlock
->set_flags
.render_state
[InitRenderStateTab
[i
] - 1] = TRUE
;
172 /* Initialize texture stages states */
173 for (i
= 0; i
< MAX_TEXTURES
; i
++)
175 for (j
= 0; j
< sizeof(InitTextureStageStateTab
) / sizeof(InitTextureStageStateTab
[0]); j
+= 2)
177 lpStateBlock
->texture_stage_state
[i
][InitTextureStageStateTab
[j
] - 1] = InitTextureStageStateTab
[j
+ 1];
178 lpStateBlock
->set_flags
.texture_stage_state
[i
][InitTextureStageStateTab
[j
] - 1] = TRUE
;
180 /* Map texture coords 0 to stage 0, 1 to stage 1, etc... */
181 lpStateBlock
->texture_stage_state
[i
][D3DTSS_TEXCOORDINDEX
- 1] = i
;
182 lpStateBlock
->set_flags
.texture_stage_state
[i
][D3DTSS_TEXCOORDINDEX
- 1] = TRUE
;
185 /* The first texture is particular, update it consequently */
186 lpStateBlock
->texture_stage_state
[0][D3DTSS_COLOROP
- 1] = D3DTOP_MODULATE
;
187 lpStateBlock
->texture_stage_state
[0][D3DTSS_ALPHAOP
- 1] = D3DTOP_SELECTARG1
;
188 lpStateBlock
->texture_stage_state
[0][D3DTSS_COLORARG2
- 1] = D3DTA_DIFFUSE
;
189 lpStateBlock
->texture_stage_state
[0][D3DTSS_ALPHAARG2
- 1] = D3DTA_DIFFUSE
;
191 /* Updates for particular versions */
192 if ((version
== 1) || (version
==2))
193 lpStateBlock
->render_state
[D3DRENDERSTATE_SPECULARENABLE
- 1] = TRUE
;
197 Main_IDirect3DDeviceImpl_7_3T_2T_1T_QueryInterface(LPDIRECT3DDEVICE7 iface
,
201 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
202 TRACE("(%p/%p)->(%s,%p)\n", This
, iface
, debugstr_guid(riid
), obp
);
206 if ( IsEqualGUID( &IID_IUnknown
, riid
) ) {
207 IDirect3DDevice7_AddRef(ICOM_INTERFACE(This
, IDirect3DDevice7
));
209 TRACE(" Creating IUnknown interface at %p.\n", *obp
);
212 if ( IsEqualGUID( &IID_IDirect3DDevice
, riid
) ) {
213 IDirect3DDevice7_AddRef(ICOM_INTERFACE(This
, IDirect3DDevice7
));
214 *obp
= ICOM_INTERFACE(This
, IDirect3DDevice
);
215 TRACE(" Creating IDirect3DDevice interface %p\n", *obp
);
218 if ( IsEqualGUID( &IID_IDirect3DDevice2
, riid
) ) {
219 IDirect3DDevice7_AddRef(ICOM_INTERFACE(This
, IDirect3DDevice7
));
220 *obp
= ICOM_INTERFACE(This
, IDirect3DDevice2
);
221 TRACE(" Creating IDirect3DDevice2 interface %p\n", *obp
);
224 if ( IsEqualGUID( &IID_IDirect3DDevice3
, riid
) ) {
225 IDirect3DDevice7_AddRef(ICOM_INTERFACE(This
, IDirect3DDevice7
));
226 *obp
= ICOM_INTERFACE(This
, IDirect3DDevice3
);
227 TRACE(" Creating IDirect3DDevice3 interface %p\n", *obp
);
230 if ( IsEqualGUID( &IID_IDirect3DDevice7
, riid
) ) {
231 IDirect3DDevice7_AddRef(ICOM_INTERFACE(This
, IDirect3DDevice7
));
232 *obp
= ICOM_INTERFACE(This
, IDirect3DDevice7
);
233 TRACE(" Creating IDirect3DDevice7 interface %p\n", *obp
);
236 if ( IsEqualGUID( &IID_IDirectDrawSurface
, riid
) ||
237 IsEqualGUID( &IID_IDirectDrawSurface2
, riid
) ||
238 IsEqualGUID( &IID_IDirectDrawSurface3
, riid
) ) {
239 IDirectDrawSurface7_AddRef(ICOM_INTERFACE(This
->surface
, IDirectDrawSurface7
));
240 *obp
= ICOM_INTERFACE(This
->surface
, IDirectDrawSurface3
);
241 TRACE(" Return IDirectDrawSurface3 interface %p\n", *obp
);
244 if ( IsEqualGUID( &IID_IDirectDrawSurface4
, riid
) ||
245 IsEqualGUID( &IID_IDirectDrawSurface7
, riid
) ) {
246 IDirectDrawSurface7_AddRef(ICOM_INTERFACE(This
->surface
, IDirectDrawSurface7
));
247 *obp
= ICOM_INTERFACE(This
->surface
, IDirectDrawSurface7
);
248 TRACE(" Return IDirectDrawSurface7 interface %p\n", *obp
);
251 FIXME("(%p): interface for IID %s NOT found!\n", This
, debugstr_guid(riid
));
252 return OLE_E_ENUM_NOMORE
;
256 Main_IDirect3DDeviceImpl_7_3T_2T_1T_AddRef(LPDIRECT3DDEVICE7 iface
)
258 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
259 TRACE("(%p/%p)->() incrementing from %lu.\n", This
, iface
, This
->ref
);
260 return ++(This
->ref
);
264 Main_IDirect3DDeviceImpl_7_3T_2T_1T_Release(LPDIRECT3DDEVICE7 iface
)
266 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
267 TRACE("(%p/%p)->() decrementing from %lu.\n", This
, iface
, This
->ref
);
268 if (!--(This
->ref
)) {
270 /* Release texture associated with the device */
271 for (i
= 0; i
< MAX_TEXTURES
; i
++) {
272 if (This
->current_texture
[i
] != NULL
)
273 IDirect3DTexture2_Release(ICOM_INTERFACE(This
->current_texture
[i
], IDirect3DTexture2
));
276 HeapFree(GetProcessHeap(), 0, This
);
283 Main_IDirect3DDeviceImpl_7_GetCaps(LPDIRECT3DDEVICE7 iface
,
284 LPD3DDEVICEDESC7 lpD3DHELDevDesc
)
286 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
287 FIXME("(%p/%p)->(%p): stub!\n", This
, iface
, lpD3DHELDevDesc
);
292 Main_IDirect3DDeviceImpl_7_3T_EnumTextureFormats(LPDIRECT3DDEVICE7 iface
,
293 LPD3DENUMPIXELFORMATSCALLBACK lpD3DEnumPixelProc
,
296 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
297 FIXME("(%p/%p)->(%p,%p): stub!\n", This
, iface
, lpD3DEnumPixelProc
, lpArg
);
302 Main_IDirect3DDeviceImpl_7_3T_2T_1T_BeginScene(LPDIRECT3DDEVICE7 iface
)
304 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
305 TRACE("(%p/%p)->()\n", This
, iface
);
311 Main_IDirect3DDeviceImpl_7_3T_2T_1T_EndScene(LPDIRECT3DDEVICE7 iface
)
313 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
314 TRACE("(%p/%p)->()\n", This
, iface
);
320 Main_IDirect3DDeviceImpl_7_3T_2T_1T_GetDirect3D(LPDIRECT3DDEVICE7 iface
,
321 LPDIRECT3D7
* lplpDirect3D7
)
323 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
324 TRACE("(%p/%p)->(%p)\n", This
, iface
, lplpDirect3D7
);
326 *lplpDirect3D7
= ICOM_INTERFACE(This
->d3d
, IDirect3D7
);
327 IDirect3D7_AddRef(ICOM_INTERFACE(This
->d3d
, IDirect3D7
));
329 TRACE(" returning interface %p\n", *lplpDirect3D7
);
334 Main_IDirect3DDeviceImpl_7_3T_2T_SetRenderTarget(LPDIRECT3DDEVICE7 iface
,
335 LPDIRECTDRAWSURFACE7 lpNewRenderTarget
,
338 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
339 IDirectDrawSurfaceImpl
*target_impl
= ICOM_OBJECT(IDirectDrawSurfaceImpl
, IDirectDrawSurface7
, lpNewRenderTarget
);
341 TRACE("(%p/%p)->(%p,%08lx)\n", This
, iface
, lpNewRenderTarget
, dwFlags
);
342 if (target_impl
!= This
->surface
) {
343 WARN(" Change of rendering target not handled yet !\n");
349 Main_IDirect3DDeviceImpl_7_3T_2T_GetRenderTarget(LPDIRECT3DDEVICE7 iface
,
350 LPDIRECTDRAWSURFACE7
* lplpRenderTarget
)
352 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
353 TRACE("(%p/%p)->(%p)\n", This
, iface
, lplpRenderTarget
);
355 *lplpRenderTarget
= ICOM_INTERFACE(This
->surface
, IDirectDrawSurface7
);
356 IDirectDrawSurface7_AddRef(ICOM_INTERFACE(This
->surface
, IDirectDrawSurface7
));
358 TRACE(" returning surface at %p.\n", *lplpRenderTarget
);
364 Main_IDirect3DDeviceImpl_7_Clear(LPDIRECT3DDEVICE7 iface
,
372 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
373 TRACE("(%p/%p)->(%08lx,%p,%08lx,%08lx,%f,%08lx)\n", This
, iface
, dwCount
, lpRects
, dwFlags
, (DWORD
) dwColor
, dvZ
, dwStencil
);
374 return This
->clear(This
, dwCount
, lpRects
, dwFlags
, dwColor
, dvZ
, dwStencil
);
378 Main_IDirect3DDeviceImpl_7_3T_2T_SetTransform(LPDIRECT3DDEVICE7 iface
,
379 D3DTRANSFORMSTATETYPE dtstTransformStateType
,
380 LPD3DMATRIX lpD3DMatrix
)
382 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
383 DWORD matrix_changed
= 0x00000000;
385 TRACE("(%p/%p)->(%08x,%p)\n", This
, iface
, dtstTransformStateType
, lpD3DMatrix
);
387 switch (dtstTransformStateType
) {
388 case D3DTRANSFORMSTATE_WORLD
: {
389 if (TRACE_ON(ddraw
)) {
390 TRACE(" D3DTRANSFORMSTATE_WORLD :\n"); dump_D3DMATRIX(lpD3DMatrix
);
392 memcpy(This
->world_mat
, lpD3DMatrix
, 16 * sizeof(float));
393 matrix_changed
= WORLDMAT_CHANGED
;
396 case D3DTRANSFORMSTATE_VIEW
: {
397 if (TRACE_ON(ddraw
)) {
398 TRACE(" D3DTRANSFORMSTATE_VIEW :\n"); dump_D3DMATRIX(lpD3DMatrix
);
400 memcpy(This
->view_mat
, lpD3DMatrix
, 16 * sizeof(float));
401 matrix_changed
= VIEWMAT_CHANGED
;
404 case D3DTRANSFORMSTATE_PROJECTION
: {
405 if (TRACE_ON(ddraw
)) {
406 TRACE(" D3DTRANSFORMSTATE_PROJECTION :\n"); dump_D3DMATRIX(lpD3DMatrix
);
408 memcpy(This
->proj_mat
, lpD3DMatrix
, 16 * sizeof(float));
409 matrix_changed
= PROJMAT_CHANGED
;
412 case D3DTRANSFORMSTATE_TEXTURE0
:
413 case D3DTRANSFORMSTATE_TEXTURE1
:
414 case D3DTRANSFORMSTATE_TEXTURE2
:
415 case D3DTRANSFORMSTATE_TEXTURE3
:
416 case D3DTRANSFORMSTATE_TEXTURE4
:
417 case D3DTRANSFORMSTATE_TEXTURE5
:
418 case D3DTRANSFORMSTATE_TEXTURE6
:
419 case D3DTRANSFORMSTATE_TEXTURE7
: {
420 DWORD mat_num
= dtstTransformStateType
- D3DTRANSFORMSTATE_TEXTURE0
;
421 if (TRACE_ON(ddraw
)) {
422 TRACE(" D3DTRANSFORMSTATE_TEXTURE%ld :\n", mat_num
); dump_D3DMATRIX(lpD3DMatrix
);
424 memcpy(This
->tex_mat
[mat_num
], lpD3DMatrix
, 16 * sizeof(float));
425 matrix_changed
= TEXMAT0_CHANGED
<< mat_num
;
429 ERR("Unknown transform type %08x !!!\n", dtstTransformStateType
);
433 if (matrix_changed
!= 0x00000000) This
->matrices_updated(This
, matrix_changed
);
439 Main_IDirect3DDeviceImpl_7_3T_2T_GetTransform(LPDIRECT3DDEVICE7 iface
,
440 D3DTRANSFORMSTATETYPE dtstTransformStateType
,
441 LPD3DMATRIX lpD3DMatrix
)
443 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
444 TRACE("(%p/%p)->(%08x,%p)\n", This
, iface
, dtstTransformStateType
, lpD3DMatrix
);
446 switch (dtstTransformStateType
) {
447 case D3DTRANSFORMSTATE_WORLD
: {
448 memcpy(lpD3DMatrix
, This
->world_mat
, 16 * sizeof(D3DVALUE
));
449 if (TRACE_ON(ddraw
)) {
450 TRACE(" returning D3DTRANSFORMSTATE_WORLD :\n");
451 dump_D3DMATRIX(lpD3DMatrix
);
455 case D3DTRANSFORMSTATE_VIEW
: {
456 memcpy(lpD3DMatrix
, This
->view_mat
, 16 * sizeof(D3DVALUE
));
457 if (TRACE_ON(ddraw
)) {
458 TRACE(" returning D3DTRANSFORMSTATE_VIEW :\n");
459 dump_D3DMATRIX(lpD3DMatrix
);
463 case D3DTRANSFORMSTATE_PROJECTION
: {
464 memcpy(lpD3DMatrix
, This
->proj_mat
, 16 * sizeof(D3DVALUE
));
465 if (TRACE_ON(ddraw
)) {
466 TRACE(" returning D3DTRANSFORMSTATE_PROJECTION :\n");
467 dump_D3DMATRIX(lpD3DMatrix
);
471 case D3DTRANSFORMSTATE_TEXTURE0
:
472 case D3DTRANSFORMSTATE_TEXTURE1
:
473 case D3DTRANSFORMSTATE_TEXTURE2
:
474 case D3DTRANSFORMSTATE_TEXTURE3
:
475 case D3DTRANSFORMSTATE_TEXTURE4
:
476 case D3DTRANSFORMSTATE_TEXTURE5
:
477 case D3DTRANSFORMSTATE_TEXTURE6
:
478 case D3DTRANSFORMSTATE_TEXTURE7
: {
479 DWORD mat_num
= dtstTransformStateType
- D3DTRANSFORMSTATE_TEXTURE0
;
480 memcpy(lpD3DMatrix
, This
->tex_mat
[mat_num
], 16 * sizeof(D3DVALUE
));
481 if (TRACE_ON(ddraw
)) {
482 TRACE(" returning D3DTRANSFORMSTATE_TEXTURE%ld :\n", mat_num
);
483 dump_D3DMATRIX(lpD3DMatrix
);
488 ERR("Unknown transform type %08x !!!\n", dtstTransformStateType
);
489 return DDERR_INVALIDPARAMS
;
496 Main_IDirect3DDeviceImpl_7_3T_2T_MultiplyTransform(LPDIRECT3DDEVICE7 iface
,
497 D3DTRANSFORMSTATETYPE dtstTransformStateType
,
498 LPD3DMATRIX lpD3DMatrix
)
500 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
502 DWORD matrix_changed
= 0x00000000;
504 TRACE("(%p/%p)->(%08x,%p)\n", This
, iface
, dtstTransformStateType
, lpD3DMatrix
);
506 if (TRACE_ON(ddraw
)) {
507 TRACE(" Multiplying by :\n"); dump_D3DMATRIX(lpD3DMatrix
);
510 switch (dtstTransformStateType
) {
511 case D3DTRANSFORMSTATE_WORLD
: {
512 if (TRACE_ON(ddraw
)) {
513 TRACE(" Resulting D3DTRANSFORMSTATE_WORLD matrix is :\n");
515 mat
= This
->world_mat
;
516 matrix_changed
= WORLDMAT_CHANGED
;
519 case D3DTRANSFORMSTATE_VIEW
: {
520 if (TRACE_ON(ddraw
)) {
521 TRACE(" Resulting D3DTRANSFORMSTATE_VIEW matrix is :\n");
523 mat
= This
->view_mat
;
524 matrix_changed
= VIEWMAT_CHANGED
;
527 case D3DTRANSFORMSTATE_PROJECTION
: {
528 if (TRACE_ON(ddraw
)) {
529 TRACE(" Resulting D3DTRANSFORMSTATE_PROJECTION matrix is :\n");
531 mat
= This
->proj_mat
;
532 matrix_changed
= PROJMAT_CHANGED
;
535 case D3DTRANSFORMSTATE_TEXTURE0
:
536 case D3DTRANSFORMSTATE_TEXTURE1
:
537 case D3DTRANSFORMSTATE_TEXTURE2
:
538 case D3DTRANSFORMSTATE_TEXTURE3
:
539 case D3DTRANSFORMSTATE_TEXTURE4
:
540 case D3DTRANSFORMSTATE_TEXTURE5
:
541 case D3DTRANSFORMSTATE_TEXTURE6
:
542 case D3DTRANSFORMSTATE_TEXTURE7
: {
543 DWORD mat_num
= dtstTransformStateType
- D3DTRANSFORMSTATE_TEXTURE0
;
544 if (TRACE_ON(ddraw
)) {
545 TRACE(" Resulting D3DTRANSFORMSTATE_TEXTURE%ld matrix is :\n", mat_num
);
547 mat
= This
->tex_mat
[mat_num
];
548 matrix_changed
= TEXMAT0_CHANGED
<< mat_num
;
552 ERR("Unknown transform type %08x !!!\n", dtstTransformStateType
);
553 return DDERR_INVALIDPARAMS
;
556 multiply_matrix(mat
,mat
,lpD3DMatrix
);
558 if (TRACE_ON(ddraw
)) {
562 if (matrix_changed
!= 0x00000000) This
->matrices_updated(This
, matrix_changed
);
568 Main_IDirect3DDeviceImpl_7_GetViewport(LPDIRECT3DDEVICE7 iface
,
569 LPD3DVIEWPORT7 lpData
)
571 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
572 TRACE("(%p/%p)->(%p)\n", This
, iface
, lpData
);
574 *lpData
= This
->active_viewport
;
576 if (TRACE_ON(ddraw
)) {
577 TRACE(" returning viewport : \n");
578 TRACE(" - dwX = %ld dwY = %ld\n",
579 lpData
->dwX
, lpData
->dwY
);
580 TRACE(" - dwWidth = %ld dwHeight = %ld\n",
581 lpData
->dwWidth
, lpData
->dwHeight
);
582 TRACE(" - dvMinZ = %f dvMaxZ = %f\n",
583 lpData
->dvMinZ
, lpData
->dvMaxZ
);
590 Main_IDirect3DDeviceImpl_7_SetMaterial(LPDIRECT3DDEVICE7 iface
,
591 LPD3DMATERIAL7 lpMat
)
593 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
594 FIXME("(%p/%p)->(%p): stub!\n", This
, iface
, lpMat
);
599 Main_IDirect3DDeviceImpl_7_GetMaterial(LPDIRECT3DDEVICE7 iface
,
600 LPD3DMATERIAL7 lpMat
)
602 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
603 TRACE("(%p/%p)->(%p)\n", This
, iface
, lpMat
);
605 *lpMat
= This
->current_material
;
607 if (TRACE_ON(ddraw
)) {
608 TRACE(" returning material : \n");
609 dump_D3DMATERIAL7(lpMat
);
616 Main_IDirect3DDeviceImpl_7_SetLight(LPDIRECT3DDEVICE7 iface
,
620 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
621 FIXME("(%p/%p)->(%08lx,%p): stub!\n", This
, iface
, dwLightIndex
, lpLight
);
626 Main_IDirect3DDeviceImpl_7_GetLight(LPDIRECT3DDEVICE7 iface
,
630 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
631 TRACE("(%p/%p)->(%08lx,%p)\n", This
, iface
, dwLightIndex
, lpLight
);
633 if (dwLightIndex
> MAX_LIGHTS
) return DDERR_INVALIDPARAMS
;
634 *lpLight
= This
->light_parameters
[dwLightIndex
];
636 if (TRACE_ON(ddraw
)) {
637 TRACE(" returning light : \n");
638 dump_D3DLIGHT7(lpLight
);
645 Main_IDirect3DDeviceImpl_7_3T_2T_SetRenderState(LPDIRECT3DDEVICE7 iface
,
646 D3DRENDERSTATETYPE dwRenderStateType
,
649 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
650 FIXME("(%p/%p)->(%08x,%08lx): stub!\n", This
, iface
, dwRenderStateType
, dwRenderState
);
655 Main_IDirect3DDeviceImpl_7_3T_2T_GetRenderState(LPDIRECT3DDEVICE7 iface
,
656 D3DRENDERSTATETYPE dwRenderStateType
,
657 LPDWORD lpdwRenderState
)
659 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
660 FIXME("(%p/%p)->(%08x,%p): stub!\n", This
, iface
, dwRenderStateType
, lpdwRenderState
);
665 Main_IDirect3DDeviceImpl_7_BeginStateBlock(LPDIRECT3DDEVICE7 iface
)
667 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
668 FIXME("(%p/%p)->(): stub!\n", This
, iface
);
673 Main_IDirect3DDeviceImpl_7_EndStateBlock(LPDIRECT3DDEVICE7 iface
,
674 LPDWORD lpdwBlockHandle
)
676 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
677 FIXME("(%p/%p)->(%p): stub!\n", This
, iface
, lpdwBlockHandle
);
682 Main_IDirect3DDeviceImpl_7_PreLoad(LPDIRECT3DDEVICE7 iface
,
683 LPDIRECTDRAWSURFACE7 lpddsTexture
)
685 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
686 FIXME("(%p/%p)->(%p): stub!\n", This
, iface
, lpddsTexture
);
691 Main_IDirect3DDeviceImpl_7_3T_DrawPrimitive(LPDIRECT3DDEVICE7 iface
,
692 D3DPRIMITIVETYPE d3dptPrimitiveType
,
693 DWORD d3dvtVertexType
,
698 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
699 FIXME("(%p/%p)->(%08x,%08lx,%p,%08lx,%08lx): stub!\n", This
, iface
, d3dptPrimitiveType
, d3dvtVertexType
, lpvVertices
, dwVertexCount
, dwFlags
);
704 Main_IDirect3DDeviceImpl_7_3T_DrawIndexedPrimitive(LPDIRECT3DDEVICE7 iface
,
705 D3DPRIMITIVETYPE d3dptPrimitiveType
,
706 DWORD d3dvtVertexType
,
713 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
714 FIXME("(%p/%p)->(%08x,%08lx,%p,%08lx,%p,%08lx,%08lx): stub!\n", This
, iface
, d3dptPrimitiveType
, d3dvtVertexType
, lpvVertices
, dwVertexCount
, dwIndices
, dwIndexCount
, dwFlags
);
719 Main_IDirect3DDeviceImpl_7_3T_2T_SetClipStatus(LPDIRECT3DDEVICE7 iface
,
720 LPD3DCLIPSTATUS lpD3DClipStatus
)
722 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
723 FIXME("(%p/%p)->(%p): stub!\n", This
, iface
, lpD3DClipStatus
);
728 Main_IDirect3DDeviceImpl_7_3T_2T_GetClipStatus(LPDIRECT3DDEVICE7 iface
,
729 LPD3DCLIPSTATUS lpD3DClipStatus
)
731 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
732 FIXME("(%p/%p)->(%p): stub!\n", This
, iface
, lpD3DClipStatus
);
737 Main_IDirect3DDeviceImpl_7_3T_DrawPrimitiveStrided(LPDIRECT3DDEVICE7 iface
,
738 D3DPRIMITIVETYPE d3dptPrimitiveType
,
740 LPD3DDRAWPRIMITIVESTRIDEDDATA lpD3DDrawPrimStrideData
,
744 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
745 FIXME("(%p/%p)->(%08x,%08lx,%p,%08lx,%08lx): stub!\n", This
, iface
, d3dptPrimitiveType
, dwVertexType
, lpD3DDrawPrimStrideData
, dwVertexCount
, dwFlags
);
750 Main_IDirect3DDeviceImpl_7_3T_DrawIndexedPrimitiveStrided(LPDIRECT3DDEVICE7 iface
,
751 D3DPRIMITIVETYPE d3dptPrimitiveType
,
753 LPD3DDRAWPRIMITIVESTRIDEDDATA lpD3DDrawPrimStrideData
,
759 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
760 FIXME("(%p/%p)->(%08x,%08lx,%p,%08lx,%p,%08lx,%08lx): stub!\n", This
, iface
, d3dptPrimitiveType
, dwVertexType
, lpD3DDrawPrimStrideData
, dwVertexCount
, lpIndex
, dwIndexCount
, dwFlags
);
765 Main_IDirect3DDeviceImpl_7_3T_DrawPrimitiveVB(LPDIRECT3DDEVICE7 iface
,
766 D3DPRIMITIVETYPE d3dptPrimitiveType
,
767 LPDIRECT3DVERTEXBUFFER7 lpD3DVertexBuf
,
772 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
773 FIXME("(%p/%p)->(%08x,%p,%08lx,%08lx,%08lx): stub!\n", This
, iface
, d3dptPrimitiveType
, lpD3DVertexBuf
, dwStartVertex
, dwNumVertices
, dwFlags
);
778 Main_IDirect3DDeviceImpl_7_3T_DrawIndexedPrimitiveVB(LPDIRECT3DDEVICE7 iface
,
779 D3DPRIMITIVETYPE d3dptPrimitiveType
,
780 LPDIRECT3DVERTEXBUFFER7 lpD3DVertexBuf
,
787 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
788 FIXME("(%p/%p)->(%08x,%p,%08lx,%08lx,%p,%08lx,%08lx): stub!\n", This
, iface
, d3dptPrimitiveType
, lpD3DVertexBuf
, dwStartVertex
, dwNumVertices
, lpwIndices
, dwIndexCount
, dwFlags
);
793 Main_IDirect3DDeviceImpl_7_3T_ComputeSphereVisibility(LPDIRECT3DDEVICE7 iface
,
794 LPD3DVECTOR lpCenters
,
798 LPDWORD lpdwReturnValues
)
800 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
801 FIXME("(%p/%p)->(%p,%p,%08lx,%08lx,%p): stub!\n", This
, iface
, lpCenters
, lpRadii
, dwNumSpheres
, dwFlags
, lpdwReturnValues
);
806 Main_IDirect3DDeviceImpl_7_3T_GetTexture(LPDIRECT3DDEVICE7 iface
,
808 LPDIRECTDRAWSURFACE7
* lpTexture
)
810 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
811 TRACE("(%p/%p)->(%08lx,%p)\n", This
, iface
, dwStage
, lpTexture
);
813 if (This
->current_texture
[dwStage
] != NULL
) {
814 *lpTexture
= ICOM_INTERFACE(This
->current_texture
[dwStage
], IDirectDrawSurface7
);
815 IDirectDrawSurface7_AddRef(*lpTexture
);
820 TRACE(" returning interface at %p (for implementation at %p).\n", *lpTexture
, This
->current_texture
[dwStage
]);
826 Main_IDirect3DDeviceImpl_7_3T_SetTexture(LPDIRECT3DDEVICE7 iface
,
828 LPDIRECTDRAWSURFACE7 lpTexture
)
830 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
831 FIXME("(%p/%p)->(%08lx,%p): stub!\n", This
, iface
, dwStage
, lpTexture
);
836 Main_IDirect3DDeviceImpl_7_3T_GetTextureStageState(LPDIRECT3DDEVICE7 iface
,
838 D3DTEXTURESTAGESTATETYPE d3dTexStageStateType
,
841 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
842 TRACE("(%p/%p)->(%08lx,%08x,%p)\n", This
, iface
, dwStage
, d3dTexStageStateType
, lpdwState
);
843 if (lpdwState
&& (dwStage
< 8) && d3dTexStageStateType
&& (d3dTexStageStateType
< HIGHEST_TEXTURE_STAGE_STATE
) ) {
844 *lpdwState
= This
->state_block
.texture_stage_state
[dwStage
][d3dTexStageStateType
-1];
847 return DDERR_INVALIDPARAMS
;
851 Main_IDirect3DDeviceImpl_7_3T_SetTextureStageState(LPDIRECT3DDEVICE7 iface
,
853 D3DTEXTURESTAGESTATETYPE d3dTexStageStateType
,
856 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
857 FIXME("(%p/%p)->(%08lx,%08x,%08lx): stub!\n", This
, iface
, dwStage
, d3dTexStageStateType
, dwState
);
862 Main_IDirect3DDeviceImpl_7_3T_ValidateDevice(LPDIRECT3DDEVICE7 iface
,
865 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
866 FIXME("(%p/%p)->(%p): semi-stub!\n", This
, iface
, lpdwPasses
);
868 /* For the moment, we have a VERY good hardware which does everything in one pass :-) */
875 Main_IDirect3DDeviceImpl_7_ApplyStateBlock(LPDIRECT3DDEVICE7 iface
,
878 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
879 FIXME("(%p/%p)->(%08lx): stub!\n", This
, iface
, dwBlockHandle
);
884 Main_IDirect3DDeviceImpl_7_CaptureStateBlock(LPDIRECT3DDEVICE7 iface
,
887 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
888 FIXME("(%p/%p)->(%08lx): stub!\n", This
, iface
, dwBlockHandle
);
893 Main_IDirect3DDeviceImpl_7_DeleteStateBlock(LPDIRECT3DDEVICE7 iface
,
896 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
897 FIXME("(%p/%p)->(%08lx): stub!\n", This
, iface
, dwBlockHandle
);
902 Main_IDirect3DDeviceImpl_7_CreateStateBlock(LPDIRECT3DDEVICE7 iface
,
903 D3DSTATEBLOCKTYPE d3dsbType
,
904 LPDWORD lpdwBlockHandle
)
906 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
907 FIXME("(%p/%p)->(%08x,%p): stub!\n", This
, iface
, d3dsbType
, lpdwBlockHandle
);
912 Main_IDirect3DDeviceImpl_7_Load(LPDIRECT3DDEVICE7 iface
,
913 LPDIRECTDRAWSURFACE7 lpDestTex
,
915 LPDIRECTDRAWSURFACE7 lpSrcTex
,
919 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
920 FIXME("(%p/%p)->(%p,%p,%p,%p,%08lx): Partially Implemented!\n", This
, iface
, lpDestTex
, lpDestPoint
, lpSrcTex
, lprcSrcRect
, dwFlags
);
921 IDirect3DTexture2_Load(COM_INTERFACE_CAST(IDirectDrawSurfaceImpl
, IDirectDrawSurface7
, IDirect3DTexture2
, lpDestTex
),
922 COM_INTERFACE_CAST(IDirectDrawSurfaceImpl
, IDirectDrawSurface7
, IDirect3DTexture2
, lpSrcTex
));
927 Main_IDirect3DDeviceImpl_7_LightEnable(LPDIRECT3DDEVICE7 iface
,
931 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
932 FIXME("(%p/%p)->(%08lx,%d): stub!\n", This
, iface
, dwLightIndex
, bEnable
);
937 Main_IDirect3DDeviceImpl_7_GetLightEnable(LPDIRECT3DDEVICE7 iface
,
941 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
942 TRACE("(%p/%p)->(%08lx,%p)\n", This
, iface
, dwLightIndex
, pbEnable
);
944 if (dwLightIndex
> MAX_LIGHTS
) *pbEnable
= 0;
945 else *pbEnable
= ((0x00000001 << dwLightIndex
) & This
->active_lights
) != 0;
947 TRACE(" returning %d.\n", *pbEnable
);
953 Main_IDirect3DDeviceImpl_7_SetClipPlane(LPDIRECT3DDEVICE7 iface
,
955 D3DVALUE
* pPlaneEquation
)
957 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
958 FIXME("(%p/%p)->(%08lx,%p): stub!\n", This
, iface
, dwIndex
, pPlaneEquation
);
963 Main_IDirect3DDeviceImpl_7_GetClipPlane(LPDIRECT3DDEVICE7 iface
, DWORD dwIndex
, D3DVALUE
* pPlaneEquation
)
965 ICOM_THIS(IDirect3DDeviceImpl
,iface
);
967 TRACE("(%p)->(%ld,%p)\n", This
, dwIndex
, pPlaneEquation
);
969 if (dwIndex
>=This
->max_clipping_planes
) {
970 return DDERR_INVALIDPARAMS
;
973 memcpy( pPlaneEquation
, This
->clipping_planes
[dwIndex
].plane
, sizeof(D3DVALUE
[4]));
979 Main_IDirect3DDeviceImpl_7_GetInfo(LPDIRECT3DDEVICE7 iface
,
981 LPVOID pDevInfoStruct
,
984 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
985 TRACE("(%p/%p)->(%08lx,%p,%08lx)\n", This
, iface
, dwDevInfoID
, pDevInfoStruct
, dwSize
);
987 if (TRACE_ON(ddraw
)) {
988 TRACE(" info requested : ");
989 switch (dwDevInfoID
) {
990 case D3DDEVINFOID_TEXTUREMANAGER
: TRACE("D3DDEVINFOID_TEXTUREMANAGER\n"); break;
991 case D3DDEVINFOID_D3DTEXTUREMANAGER
: TRACE("D3DDEVINFOID_D3DTEXTUREMANAGER\n"); break;
992 case D3DDEVINFOID_TEXTURING
: TRACE("D3DDEVINFOID_TEXTURING\n"); break;
993 default: ERR(" invalid flag !!!\n"); return DDERR_INVALIDPARAMS
;
997 return S_FALSE
; /* According to MSDN, this is valid for a non-debug driver */
1001 Main_IDirect3DDeviceImpl_3_2T_1T_GetCaps(LPDIRECT3DDEVICE3 iface
,
1002 LPD3DDEVICEDESC lpD3DHWDevDesc
,
1003 LPD3DDEVICEDESC lpD3DHELDevDesc
)
1005 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice3
, iface
);
1006 FIXME("(%p/%p)->(%p,%p): stub!\n", This
, iface
, lpD3DHWDevDesc
, lpD3DHELDevDesc
);
1011 Main_IDirect3DDeviceImpl_3_2T_1T_GetStats(LPDIRECT3DDEVICE3 iface
,
1012 LPD3DSTATS lpD3DStats
)
1014 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice3
, iface
);
1015 FIXME("(%p/%p)->(%p): stub!\n", This
, iface
, lpD3DStats
);
1020 Main_IDirect3DDeviceImpl_3_2T_1T_AddViewport(LPDIRECT3DDEVICE3 iface
,
1021 LPDIRECT3DVIEWPORT3 lpDirect3DViewport3
)
1023 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice3
, iface
);
1024 IDirect3DViewportImpl
*lpDirect3DViewportImpl
= ICOM_OBJECT(IDirect3DViewportImpl
, IDirect3DViewport3
, lpDirect3DViewport3
);
1026 TRACE("(%p/%p)->(%p)\n", This
, iface
, lpDirect3DViewport3
);
1028 lpDirect3DViewportImpl
->next
= This
->viewport_list
;
1029 This
->viewport_list
= lpDirect3DViewportImpl
;
1035 Main_IDirect3DDeviceImpl_3_2T_1T_DeleteViewport(LPDIRECT3DDEVICE3 iface
,
1036 LPDIRECT3DVIEWPORT3 lpDirect3DViewport3
)
1038 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice3
, iface
);
1039 IDirect3DViewportImpl
*lpDirect3DViewportImpl
= ICOM_OBJECT(IDirect3DViewportImpl
, IDirect3DViewport3
, lpDirect3DViewport3
);
1040 IDirect3DViewportImpl
*cur_viewport
, *prev_viewport
= NULL
;
1042 TRACE("(%p/%p)->(%p)\n", This
, iface
, lpDirect3DViewport3
);
1044 cur_viewport
= This
->viewport_list
;
1045 while (cur_viewport
!= NULL
) {
1046 if (cur_viewport
== lpDirect3DViewportImpl
) {
1047 if (prev_viewport
== NULL
) This
->viewport_list
= cur_viewport
->next
;
1048 else prev_viewport
->next
= cur_viewport
->next
;
1049 /* TODO : add desactivate of the viewport and all associated lights... */
1052 prev_viewport
= cur_viewport
;
1053 cur_viewport
= cur_viewport
->next
;
1056 return DDERR_INVALIDPARAMS
;
1060 Main_IDirect3DDeviceImpl_3_2T_1T_NextViewport(LPDIRECT3DDEVICE3 iface
,
1061 LPDIRECT3DVIEWPORT3 lpDirect3DViewport3
,
1062 LPDIRECT3DVIEWPORT3
* lplpDirect3DViewport3
,
1065 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice3
, iface
);
1066 IDirect3DViewportImpl
*res
= NULL
;
1068 TRACE("(%p/%p)->(%p,%p,%08lx)\n", This
, iface
, lpDirect3DViewport3
, lplpDirect3DViewport3
, dwFlags
);
1071 case D3DNEXT_NEXT
: {
1072 IDirect3DViewportImpl
*lpDirect3DViewportImpl
= ICOM_OBJECT(IDirect3DViewportImpl
, IDirect3DViewport3
, lpDirect3DViewport3
);
1073 res
= lpDirect3DViewportImpl
->next
;
1075 case D3DNEXT_HEAD
: {
1076 res
= This
->viewport_list
;
1078 case D3DNEXT_TAIL
: {
1079 IDirect3DViewportImpl
*cur_viewport
= This
->viewport_list
;
1080 if (cur_viewport
!= NULL
) {
1081 while (cur_viewport
->next
!= NULL
) cur_viewport
= cur_viewport
->next
;
1086 *lplpDirect3DViewport3
= NULL
;
1087 return DDERR_INVALIDPARAMS
;
1089 *lplpDirect3DViewport3
= ICOM_INTERFACE(res
, IDirect3DViewport3
);
1094 Main_IDirect3DDeviceImpl_3_2T_SetCurrentViewport(LPDIRECT3DDEVICE3 iface
,
1095 LPDIRECT3DVIEWPORT3 lpDirect3DViewport3
)
1097 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice3
, iface
);
1098 TRACE("(%p/%p)->(%p)\n", This
, iface
, lpDirect3DViewport3
);
1100 /* Should check if the viewport was added or not */
1102 /* Set this viewport as the current viewport */
1103 This
->current_viewport
= ICOM_OBJECT(IDirect3DViewportImpl
, IDirect3DViewport3
, lpDirect3DViewport3
);
1105 /* Activate this viewport */
1106 This
->current_viewport
->active_device
= This
;
1107 This
->current_viewport
->activate(This
->current_viewport
);
1113 Main_IDirect3DDeviceImpl_3_2T_GetCurrentViewport(LPDIRECT3DDEVICE3 iface
,
1114 LPDIRECT3DVIEWPORT3
* lplpDirect3DViewport3
)
1116 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice3
, iface
);
1117 TRACE("(%p/%p)->(%p)\n", This
, iface
, lplpDirect3DViewport3
);
1119 *lplpDirect3DViewport3
= ICOM_INTERFACE(This
->current_viewport
, IDirect3DViewport3
);
1120 TRACE(" returning interface %p\n", *lplpDirect3DViewport3
);
1126 Main_IDirect3DDeviceImpl_3_Begin(LPDIRECT3DDEVICE3 iface
,
1127 D3DPRIMITIVETYPE d3dptPrimitiveType
,
1128 DWORD dwVertexTypeDesc
,
1131 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice3
, iface
);
1132 FIXME("(%p/%p)->(%08x,%08lx,%08lx): stub!\n", This
, iface
, d3dptPrimitiveType
, dwVertexTypeDesc
, dwFlags
);
1137 Main_IDirect3DDeviceImpl_3_BeginIndexed(LPDIRECT3DDEVICE3 iface
,
1138 D3DPRIMITIVETYPE d3dptPrimitiveType
,
1139 DWORD d3dvtVertexType
,
1141 DWORD dwNumVertices
,
1144 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice3
, iface
);
1145 FIXME("(%p/%p)->(%08x,%08lx,%p,%08lx,%08lx): stub!\n", This
, iface
, d3dptPrimitiveType
, d3dvtVertexType
, lpvVertices
, dwNumVertices
, dwFlags
);
1150 Main_IDirect3DDeviceImpl_3_2T_Vertex(LPDIRECT3DDEVICE3 iface
,
1151 LPVOID lpVertexType
)
1153 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice3
, iface
);
1154 FIXME("(%p/%p)->(%p): stub!\n", This
, iface
, lpVertexType
);
1159 Main_IDirect3DDeviceImpl_3_2T_Index(LPDIRECT3DDEVICE3 iface
,
1162 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice3
, iface
);
1163 FIXME("(%p/%p)->(%04x): stub!\n", This
, iface
, wVertexIndex
);
1168 Main_IDirect3DDeviceImpl_3_2T_End(LPDIRECT3DDEVICE3 iface
,
1171 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice3
, iface
);
1172 FIXME("(%p/%p)->(%08lx): stub!\n", This
, iface
, dwFlags
);
1177 Main_IDirect3DDeviceImpl_3_2T_GetLightState(LPDIRECT3DDEVICE3 iface
,
1178 D3DLIGHTSTATETYPE dwLightStateType
,
1179 LPDWORD lpdwLightState
)
1181 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice3
, iface
);
1182 FIXME("(%p/%p)->(%08x,%p): stub !\n", This
, iface
, dwLightStateType
, lpdwLightState
);
1187 Main_IDirect3DDeviceImpl_3_2T_SetLightState(LPDIRECT3DDEVICE3 iface
,
1188 D3DLIGHTSTATETYPE dwLightStateType
,
1191 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice3
, iface
);
1192 FIXME("(%p/%p)->(%08x,%08lx): stub!\n", This
, iface
, dwLightStateType
, dwLightState
);
1197 Main_IDirect3DDeviceImpl_2_1T_SwapTextureHandles(LPDIRECT3DDEVICE2 iface
,
1198 LPDIRECT3DTEXTURE2 lpD3DTex1
,
1199 LPDIRECT3DTEXTURE2 lpD3DTex2
)
1201 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice2
, iface
);
1202 IDirectDrawSurfaceImpl tmp
,*surf1
,*surf2
;
1203 TRACE("(%p/%p)->(%p,%p):\n", This
, iface
, lpD3DTex1
, lpD3DTex2
);
1205 surf1
= ICOM_OBJECT(IDirectDrawSurfaceImpl
,IDirect3DTexture2
,lpD3DTex1
);
1206 surf2
= ICOM_OBJECT(IDirectDrawSurfaceImpl
,IDirect3DTexture2
,lpD3DTex2
);
1215 Main_IDirect3DDeviceImpl_2_NextViewport(LPDIRECT3DDEVICE2 iface
,
1216 LPDIRECT3DVIEWPORT2 lpDirect3DViewport2
,
1217 LPDIRECT3DVIEWPORT2
* lplpDirect3DViewport2
,
1220 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice2
, iface
);
1221 FIXME("(%p/%p)->(%p,%p,%08lx): stub!\n", This
, iface
, lpDirect3DViewport2
, lplpDirect3DViewport2
, dwFlags
);
1226 Main_IDirect3DDeviceImpl_2_1T_EnumTextureFormats(LPDIRECT3DDEVICE2 iface
,
1227 LPD3DENUMTEXTUREFORMATSCALLBACK lpD3DEnumTextureProc
,
1230 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice2
, iface
);
1231 FIXME("(%p/%p)->(%p,%p): stub!\n", This
, iface
, lpD3DEnumTextureProc
, lpArg
);
1236 Main_IDirect3DDeviceImpl_2_Begin(LPDIRECT3DDEVICE2 iface
,
1237 D3DPRIMITIVETYPE d3dpt
,
1238 D3DVERTEXTYPE dwVertexTypeDesc
,
1241 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice2
, iface
);
1242 FIXME("(%p/%p)->(%08x,%08x,%08lx): stub!\n", This
, iface
, d3dpt
, dwVertexTypeDesc
, dwFlags
);
1247 Main_IDirect3DDeviceImpl_2_BeginIndexed(LPDIRECT3DDEVICE2 iface
,
1248 D3DPRIMITIVETYPE d3dptPrimitiveType
,
1249 D3DVERTEXTYPE d3dvtVertexType
,
1251 DWORD dwNumVertices
,
1254 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice2
, iface
);
1255 FIXME("(%p/%p)->(%08x,%08x,%p,%08lx,%08lx): stub!\n", This
, iface
, d3dptPrimitiveType
, d3dvtVertexType
, lpvVertices
, dwNumVertices
, dwFlags
);
1260 Main_IDirect3DDeviceImpl_2_DrawPrimitive(LPDIRECT3DDEVICE2 iface
,
1261 D3DPRIMITIVETYPE d3dptPrimitiveType
,
1262 D3DVERTEXTYPE d3dvtVertexType
,
1264 DWORD dwVertexCount
,
1267 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice2
, iface
);
1268 FIXME("(%p/%p)->(%08x,%08x,%p,%08lx,%08lx): stub!\n", This
, iface
, d3dptPrimitiveType
, d3dvtVertexType
, lpvVertices
, dwVertexCount
, dwFlags
);
1273 Main_IDirect3DDeviceImpl_2_DrawIndexedPrimitive(LPDIRECT3DDEVICE2 iface
,
1274 D3DPRIMITIVETYPE d3dptPrimitiveType
,
1275 D3DVERTEXTYPE d3dvtVertexType
,
1277 DWORD dwVertexCount
,
1282 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice2
, iface
);
1283 FIXME("(%p/%p)->(%08x,%08x,%p,%08lx,%p,%08lx,%08lx): stub!\n", This
, iface
, d3dptPrimitiveType
, d3dvtVertexType
, lpvVertices
, dwVertexCount
, dwIndices
, dwIndexCount
, dwFlags
);
1288 Main_IDirect3DDeviceImpl_1_Initialize(LPDIRECT3DDEVICE iface
,
1289 LPDIRECT3D lpDirect3D
,
1291 LPD3DDEVICEDESC lpD3DDVDesc
)
1293 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice
, iface
);
1294 FIXME("(%p/%p)->(%p,%p,%p): stub!\n", This
, iface
, lpDirect3D
, lpGUID
, lpD3DDVDesc
);
1299 Main_IDirect3DDeviceImpl_1_CreateExecuteBuffer(LPDIRECT3DDEVICE iface
,
1300 LPD3DEXECUTEBUFFERDESC lpDesc
,
1301 LPDIRECT3DEXECUTEBUFFER
* lplpDirect3DExecuteBuffer
,
1302 IUnknown
* pUnkOuter
)
1304 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice
, iface
);
1305 FIXME("(%p/%p)->(%p,%p,%p): stub!\n", This
, iface
, lpDesc
, lplpDirect3DExecuteBuffer
, pUnkOuter
);
1310 Main_IDirect3DDeviceImpl_1_Execute(LPDIRECT3DDEVICE iface
,
1311 LPDIRECT3DEXECUTEBUFFER lpDirect3DExecuteBuffer
,
1312 LPDIRECT3DVIEWPORT lpDirect3DViewport
,
1315 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice
, iface
);
1316 IDirect3DExecuteBufferImpl
*lpDirect3DExecuteBufferImpl
= ICOM_OBJECT(IDirect3DExecuteBufferImpl
, IDirect3DExecuteBuffer
, lpDirect3DExecuteBuffer
);
1317 IDirect3DViewportImpl
*lpDirect3DViewportImpl
= ICOM_OBJECT(IDirect3DViewportImpl
, IDirect3DViewport3
, lpDirect3DViewport
);
1319 TRACE("(%p/%p)->(%p,%p,%08lx)\n", This
, iface
, lpDirect3DExecuteBuffer
, lpDirect3DViewport
, dwFlags
);
1321 /* Put this as the default context */
1324 lpDirect3DExecuteBufferImpl
->execute(lpDirect3DExecuteBufferImpl
, This
, lpDirect3DViewportImpl
);
1330 Main_IDirect3DDeviceImpl_1_NextViewport(LPDIRECT3DDEVICE iface
,
1331 LPDIRECT3DVIEWPORT lpDirect3DViewport
,
1332 LPDIRECT3DVIEWPORT
* lplpDirect3DViewport
,
1335 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice
, iface
);
1336 FIXME("(%p/%p)->(%p,%p,%08lx): stub!\n", This
, iface
, lpDirect3DViewport
, lplpDirect3DViewport
, dwFlags
);
1341 Main_IDirect3DDeviceImpl_1_Pick(LPDIRECT3DDEVICE iface
,
1342 LPDIRECT3DEXECUTEBUFFER lpDirect3DExecuteBuffer
,
1343 LPDIRECT3DVIEWPORT lpDirect3DViewport
,
1347 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice
, iface
);
1348 FIXME("(%p/%p)->(%p,%p,%08lx,%p): stub!\n", This
, iface
, lpDirect3DExecuteBuffer
, lpDirect3DViewport
, dwFlags
, lpRect
);
1353 Main_IDirect3DDeviceImpl_1_GetPickRecords(LPDIRECT3DDEVICE iface
,
1355 LPD3DPICKRECORD lpD3DPickRec
)
1357 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice
, iface
);
1358 FIXME("(%p/%p)->(%p,%p): stub!\n", This
, iface
, lpCount
, lpD3DPickRec
);
1363 Main_IDirect3DDeviceImpl_1_CreateMatrix(LPDIRECT3DDEVICE iface
,
1364 LPD3DMATRIXHANDLE lpD3DMatHandle
)
1366 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice
, iface
);
1367 TRACE("(%p/%p)->(%p)\n", This
, iface
, lpD3DMatHandle
);
1369 *lpD3DMatHandle
= (D3DMATRIXHANDLE
) HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY
, sizeof(D3DMATRIX
));
1370 TRACE(" returning matrix handle %p\n", (void *) *lpD3DMatHandle
);
1376 Main_IDirect3DDeviceImpl_1_SetMatrix(LPDIRECT3DDEVICE iface
,
1377 D3DMATRIXHANDLE D3DMatHandle
,
1378 LPD3DMATRIX lpD3DMatrix
)
1380 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice
, iface
);
1381 TRACE("(%p/%p)->(%08lx,%p)\n", This
, iface
, (DWORD
) D3DMatHandle
, lpD3DMatrix
);
1383 if (TRACE_ON(ddraw
)) {
1384 dump_D3DMATRIX(lpD3DMatrix
);
1386 *((D3DMATRIX
*) D3DMatHandle
) = *lpD3DMatrix
;
1392 Main_IDirect3DDeviceImpl_1_GetMatrix(LPDIRECT3DDEVICE iface
,
1393 D3DMATRIXHANDLE D3DMatHandle
,
1394 LPD3DMATRIX lpD3DMatrix
)
1396 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice
, iface
);
1397 TRACE("(%p/%p)->(%08lx,%p)\n", This
, iface
, (DWORD
) D3DMatHandle
, lpD3DMatrix
);
1399 *lpD3DMatrix
= *((D3DMATRIX
*) D3DMatHandle
);
1405 Main_IDirect3DDeviceImpl_1_DeleteMatrix(LPDIRECT3DDEVICE iface
,
1406 D3DMATRIXHANDLE D3DMatHandle
)
1408 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice
, iface
);
1409 TRACE("(%p/%p)->(%08lx)\n", This
, iface
, (DWORD
) D3DMatHandle
);
1411 HeapFree(GetProcessHeap(), 0, (void *) D3DMatHandle
);
1417 Thunk_IDirect3DDeviceImpl_3_QueryInterface(LPDIRECT3DDEVICE3 iface
,
1421 TRACE("(%p)->(%s,%p) thunking to IDirect3DDevice7 interface.\n", iface
, debugstr_guid(riid
), obp
);
1422 return IDirect3DDevice7_QueryInterface(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice3
, IDirect3DDevice7
, iface
),
1428 Thunk_IDirect3DDeviceImpl_2_QueryInterface(LPDIRECT3DDEVICE2 iface
,
1432 TRACE("(%p)->(%s,%p) thunking to IDirect3DDevice7 interface.\n", iface
, debugstr_guid(riid
), obp
);
1433 return IDirect3DDevice7_QueryInterface(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice2
, IDirect3DDevice7
, iface
),
1439 Thunk_IDirect3DDeviceImpl_1_QueryInterface(LPDIRECT3DDEVICE iface
,
1443 TRACE("(%p)->(%s,%p) thunking to IDirect3DDevice7 interface.\n", iface
, debugstr_guid(riid
), obp
);
1444 return IDirect3DDevice7_QueryInterface(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice
, IDirect3DDevice7
, iface
),
1450 Thunk_IDirect3DDeviceImpl_3_AddRef(LPDIRECT3DDEVICE3 iface
)
1452 TRACE("(%p)->() thunking to IDirect3DDevice7 interface.\n", iface
);
1453 return IDirect3DDevice7_AddRef(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice3
, IDirect3DDevice7
, iface
));
1457 Thunk_IDirect3DDeviceImpl_2_AddRef(LPDIRECT3DDEVICE2 iface
)
1459 TRACE("(%p)->() thunking to IDirect3DDevice7 interface.\n", iface
);
1460 return IDirect3DDevice7_AddRef(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice2
, IDirect3DDevice7
, iface
));
1464 Thunk_IDirect3DDeviceImpl_1_AddRef(LPDIRECT3DDEVICE iface
)
1466 TRACE("(%p)->() thunking to IDirect3DDevice7 interface.\n", iface
);
1467 return IDirect3DDevice7_AddRef(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice
, IDirect3DDevice7
, iface
));
1471 Thunk_IDirect3DDeviceImpl_3_Release(LPDIRECT3DDEVICE3 iface
)
1473 TRACE("(%p)->() thunking to IDirect3DDevice7 interface.\n", iface
);
1474 return IDirect3DDevice7_Release(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice3
, IDirect3DDevice7
, iface
));
1478 Thunk_IDirect3DDeviceImpl_2_Release(LPDIRECT3DDEVICE2 iface
)
1480 TRACE("(%p)->() thunking to IDirect3DDevice7 interface.\n", iface
);
1481 return IDirect3DDevice7_Release(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice2
, IDirect3DDevice7
, iface
));
1485 Thunk_IDirect3DDeviceImpl_1_Release(LPDIRECT3DDEVICE iface
)
1487 TRACE("(%p)->() thunking to IDirect3DDevice7 interface.\n", iface
);
1488 return IDirect3DDevice7_Release(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice
, IDirect3DDevice7
, iface
));
1492 Thunk_IDirect3DDeviceImpl_2_AddViewport(LPDIRECT3DDEVICE2 iface
,
1493 LPDIRECT3DVIEWPORT2 lpDirect3DViewport2
)
1495 TRACE("(%p)->(%p) thunking to IDirect3DDevice3 interface.\n", iface
, lpDirect3DViewport2
);
1496 return IDirect3DDevice3_AddViewport(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice2
, IDirect3DDevice3
, iface
),
1497 (LPDIRECT3DVIEWPORT3
) lpDirect3DViewport2
/* No need to cast here as all interfaces are equivalent */);
1501 Thunk_IDirect3DDeviceImpl_1_AddViewport(LPDIRECT3DDEVICE iface
,
1502 LPDIRECT3DVIEWPORT lpDirect3DViewport
)
1504 TRACE("(%p)->(%p) thunking to IDirect3DDevice3 interface.\n", iface
, lpDirect3DViewport
);
1505 return IDirect3DDevice3_AddViewport(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice
, IDirect3DDevice3
, iface
),
1506 (LPDIRECT3DVIEWPORT3
) lpDirect3DViewport
/* No need to cast here as all interfaces are equivalent */);
1510 Thunk_IDirect3DDeviceImpl_2_DeleteViewport(LPDIRECT3DDEVICE2 iface
,
1511 LPDIRECT3DVIEWPORT2 lpDirect3DViewport2
)
1513 TRACE("(%p)->(%p) thunking to IDirect3DDevice3 interface.\n", iface
, lpDirect3DViewport2
);
1514 return IDirect3DDevice3_DeleteViewport(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice2
, IDirect3DDevice3
, iface
),
1515 (LPDIRECT3DVIEWPORT3
) lpDirect3DViewport2
/* No need to cast here as all interfaces are equivalent */);
1519 Thunk_IDirect3DDeviceImpl_1_DeleteViewport(LPDIRECT3DDEVICE iface
,
1520 LPDIRECT3DVIEWPORT lpDirect3DViewport
)
1522 TRACE("(%p)->(%p) thunking to IDirect3DDevice3 interface.\n", iface
, lpDirect3DViewport
);
1523 return IDirect3DDevice3_DeleteViewport(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice
, IDirect3DDevice3
, iface
),
1524 (LPDIRECT3DVIEWPORT3
) lpDirect3DViewport
/* No need to cast here as all interfaces are equivalent */);
1528 Thunk_IDirect3DDeviceImpl_2_NextViewport(LPDIRECT3DDEVICE3 iface
,
1529 LPDIRECT3DVIEWPORT2 lpDirect3DViewport2
,
1530 LPDIRECT3DVIEWPORT2
* lplpDirect3DViewport2
,
1533 TRACE("(%p)->(%p,%p,%08lx) thunking to IDirect3DDevice3 interface.\n", iface
, lpDirect3DViewport2
, lplpDirect3DViewport2
, dwFlags
);
1534 return IDirect3DDevice3_NextViewport(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice2
, IDirect3DDevice3
, iface
),
1535 (LPDIRECT3DVIEWPORT3
) lpDirect3DViewport2
/* No need to cast here as all interfaces are equivalent */,
1536 (LPDIRECT3DVIEWPORT3
*) lplpDirect3DViewport2
,
1541 Thunk_IDirect3DDeviceImpl_1_NextViewport(LPDIRECT3DDEVICE3 iface
,
1542 LPDIRECT3DVIEWPORT lpDirect3DViewport
,
1543 LPDIRECT3DVIEWPORT
* lplpDirect3DViewport
,
1546 TRACE("(%p)->(%p,%p,%08lx) thunking to IDirect3DDevice3 interface.\n", iface
, lpDirect3DViewport
, lplpDirect3DViewport
, dwFlags
);
1547 return IDirect3DDevice3_NextViewport(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice
, IDirect3DDevice3
, iface
),
1548 (LPDIRECT3DVIEWPORT3
) lpDirect3DViewport
/* No need to cast here as all interfaces are equivalent */,
1549 (LPDIRECT3DVIEWPORT3
*) lplpDirect3DViewport
,
1554 Thunk_IDirect3DDeviceImpl_3_GetDirect3D(LPDIRECT3DDEVICE3 iface
,
1555 LPDIRECT3D3
* lplpDirect3D3
)
1558 LPDIRECT3D7 ret_ptr
;
1560 TRACE("(%p)->(%p) thunking to IDirect3DDevice7 interface.\n", iface
, lplpDirect3D3
);
1561 ret
= IDirect3DDevice7_GetDirect3D(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice3
, IDirect3DDevice7
, iface
),
1563 *lplpDirect3D3
= COM_INTERFACE_CAST(IDirectDrawImpl
, IDirect3D7
, IDirect3D3
, ret_ptr
);
1564 TRACE(" returning interface %p\n", *lplpDirect3D3
);
1569 Thunk_IDirect3DDeviceImpl_2_GetDirect3D(LPDIRECT3DDEVICE2 iface
,
1570 LPDIRECT3D2
* lplpDirect3D2
)
1573 LPDIRECT3D7 ret_ptr
;
1575 TRACE("(%p)->(%p) thunking to IDirect3DDevice7 interface.\n", iface
, lplpDirect3D2
);
1576 ret
= IDirect3DDevice7_GetDirect3D(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice2
, IDirect3DDevice7
, iface
),
1578 *lplpDirect3D2
= COM_INTERFACE_CAST(IDirectDrawImpl
, IDirect3D7
, IDirect3D2
, ret_ptr
);
1579 TRACE(" returning interface %p\n", *lplpDirect3D2
);
1584 Thunk_IDirect3DDeviceImpl_1_GetDirect3D(LPDIRECT3DDEVICE iface
,
1585 LPDIRECT3D
* lplpDirect3D
)
1588 LPDIRECT3D7 ret_ptr
;
1590 TRACE("(%p)->(%p) thunking to IDirect3DDevice7 interface.\n", iface
, lplpDirect3D
);
1591 ret
= IDirect3DDevice7_GetDirect3D(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice
, IDirect3DDevice7
, iface
),
1593 *lplpDirect3D
= COM_INTERFACE_CAST(IDirectDrawImpl
, IDirect3D7
, IDirect3D
, ret_ptr
);
1594 TRACE(" returning interface %p\n", *lplpDirect3D
);
1599 Thunk_IDirect3DDeviceImpl_2_SetCurrentViewport(LPDIRECT3DDEVICE2 iface
,
1600 LPDIRECT3DVIEWPORT2 lpDirect3DViewport2
)
1602 TRACE("(%p)->(%p) thunking to IDirect3DDevice3 interface.\n", iface
, lpDirect3DViewport2
);
1603 return IDirect3DDevice3_SetCurrentViewport(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice2
, IDirect3DDevice3
, iface
),
1604 (LPDIRECT3DVIEWPORT3
) lpDirect3DViewport2
/* No need to cast here as all interfaces are equivalent */);
1608 Thunk_IDirect3DDeviceImpl_2_GetCurrentViewport(LPDIRECT3DDEVICE2 iface
,
1609 LPDIRECT3DVIEWPORT2
* lplpDirect3DViewport2
)
1611 TRACE("(%p)->(%p) thunking to IDirect3DDevice3 interface.\n", iface
, lplpDirect3DViewport2
);
1612 return IDirect3DDevice3_GetCurrentViewport(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice2
, IDirect3DDevice3
, iface
),
1613 (LPDIRECT3DVIEWPORT3
*) lplpDirect3DViewport2
/* No need to cast here as all interfaces are equivalent */);
1617 Thunk_IDirect3DDeviceImpl_3_EnumTextureFormats(LPDIRECT3DDEVICE3 iface
,
1618 LPD3DENUMPIXELFORMATSCALLBACK lpD3DEnumPixelProc
,
1621 TRACE("(%p)->(%p,%p) thunking to IDirect3DDevice7 interface.\n", iface
, lpD3DEnumPixelProc
, lpArg
);
1622 return IDirect3DDevice7_EnumTextureFormats(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice3
, IDirect3DDevice7
, iface
),
1628 Thunk_IDirect3DDeviceImpl_3_BeginScene(LPDIRECT3DDEVICE3 iface
)
1630 TRACE("(%p)->() thunking to IDirect3DDevice7 interface.\n", iface
);
1631 return IDirect3DDevice7_BeginScene(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice3
, IDirect3DDevice7
, iface
));
1635 Thunk_IDirect3DDeviceImpl_2_BeginScene(LPDIRECT3DDEVICE2 iface
)
1637 TRACE("(%p)->() thunking to IDirect3DDevice7 interface.\n", iface
);
1638 return IDirect3DDevice7_BeginScene(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice2
, IDirect3DDevice7
, iface
));
1642 Thunk_IDirect3DDeviceImpl_1_BeginScene(LPDIRECT3DDEVICE iface
)
1644 TRACE("(%p)->() thunking to IDirect3DDevice7 interface.\n", iface
);
1645 return IDirect3DDevice7_BeginScene(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice
, IDirect3DDevice7
, iface
));
1649 Thunk_IDirect3DDeviceImpl_3_EndScene(LPDIRECT3DDEVICE3 iface
)
1651 TRACE("(%p)->() thunking to IDirect3DDevice7 interface.\n", iface
);
1652 return IDirect3DDevice7_EndScene(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice3
, IDirect3DDevice7
, iface
));
1656 Thunk_IDirect3DDeviceImpl_2_EndScene(LPDIRECT3DDEVICE2 iface
)
1658 TRACE("(%p)->() thunking to IDirect3DDevice7 interface.\n", iface
);
1659 return IDirect3DDevice7_EndScene(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice2
, IDirect3DDevice7
, iface
));
1663 Thunk_IDirect3DDeviceImpl_1_EndScene(LPDIRECT3DDEVICE iface
)
1665 TRACE("(%p)->() thunking to IDirect3DDevice7 interface.\n", iface
);
1666 return IDirect3DDevice7_EndScene(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice
, IDirect3DDevice7
, iface
));
1670 Thunk_IDirect3DDeviceImpl_3_SetTransform(LPDIRECT3DDEVICE3 iface
,
1671 D3DTRANSFORMSTATETYPE dtstTransformStateType
,
1672 LPD3DMATRIX lpD3DMatrix
)
1674 TRACE("(%p)->(%08x,%p) thunking to IDirect3DDevice7 interface.\n", iface
, dtstTransformStateType
, lpD3DMatrix
);
1675 return IDirect3DDevice7_SetTransform(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice3
, IDirect3DDevice7
, iface
),
1676 dtstTransformStateType
,
1681 Thunk_IDirect3DDeviceImpl_2_SetTransform(LPDIRECT3DDEVICE2 iface
,
1682 D3DTRANSFORMSTATETYPE dtstTransformStateType
,
1683 LPD3DMATRIX lpD3DMatrix
)
1685 TRACE("(%p)->(%08x,%p) thunking to IDirect3DDevice7 interface.\n", iface
, dtstTransformStateType
, lpD3DMatrix
);
1686 return IDirect3DDevice7_SetTransform(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice2
, IDirect3DDevice7
, iface
),
1687 dtstTransformStateType
,
1692 Thunk_IDirect3DDeviceImpl_3_GetTransform(LPDIRECT3DDEVICE3 iface
,
1693 D3DTRANSFORMSTATETYPE dtstTransformStateType
,
1694 LPD3DMATRIX lpD3DMatrix
)
1696 TRACE("(%p)->(%08x,%p) thunking to IDirect3DDevice7 interface.\n", iface
, dtstTransformStateType
, lpD3DMatrix
);
1697 return IDirect3DDevice7_GetTransform(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice3
, IDirect3DDevice7
, iface
),
1698 dtstTransformStateType
,
1703 Thunk_IDirect3DDeviceImpl_2_GetTransform(LPDIRECT3DDEVICE2 iface
,
1704 D3DTRANSFORMSTATETYPE dtstTransformStateType
,
1705 LPD3DMATRIX lpD3DMatrix
)
1707 TRACE("(%p)->(%08x,%p) thunking to IDirect3DDevice7 interface.\n", iface
, dtstTransformStateType
, lpD3DMatrix
);
1708 return IDirect3DDevice7_GetTransform(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice2
, IDirect3DDevice7
, iface
),
1709 dtstTransformStateType
,
1714 Thunk_IDirect3DDeviceImpl_3_MultiplyTransform(LPDIRECT3DDEVICE3 iface
,
1715 D3DTRANSFORMSTATETYPE dtstTransformStateType
,
1716 LPD3DMATRIX lpD3DMatrix
)
1718 TRACE("(%p)->(%08x,%p) thunking to IDirect3DDevice7 interface.\n", iface
, dtstTransformStateType
, lpD3DMatrix
);
1719 return IDirect3DDevice7_MultiplyTransform(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice3
, IDirect3DDevice7
, iface
),
1720 dtstTransformStateType
,
1725 Thunk_IDirect3DDeviceImpl_2_MultiplyTransform(LPDIRECT3DDEVICE2 iface
,
1726 D3DTRANSFORMSTATETYPE dtstTransformStateType
,
1727 LPD3DMATRIX lpD3DMatrix
)
1729 TRACE("(%p)->(%08x,%p) thunking to IDirect3DDevice7 interface.\n", iface
, dtstTransformStateType
, lpD3DMatrix
);
1730 return IDirect3DDevice7_MultiplyTransform(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice2
, IDirect3DDevice7
, iface
),
1731 dtstTransformStateType
,
1736 Thunk_IDirect3DDeviceImpl_3_SetRenderState(LPDIRECT3DDEVICE3 iface
,
1737 D3DRENDERSTATETYPE dwRenderStateType
,
1738 DWORD dwRenderState
)
1740 TRACE("(%p)->(%08x,%08lx) thunking to IDirect3DDevice7 interface.\n", iface
, dwRenderStateType
, dwRenderState
);
1741 return IDirect3DDevice7_SetRenderState(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice3
, IDirect3DDevice7
, iface
),
1747 Thunk_IDirect3DDeviceImpl_2_SetRenderState(LPDIRECT3DDEVICE2 iface
,
1748 D3DRENDERSTATETYPE dwRenderStateType
,
1749 DWORD dwRenderState
)
1751 TRACE("(%p)->(%08x,%08lx) thunking to IDirect3DDevice7 interface.\n", iface
, dwRenderStateType
, dwRenderState
);
1752 return IDirect3DDevice7_SetRenderState(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice2
, IDirect3DDevice7
, iface
),
1758 Thunk_IDirect3DDeviceImpl_3_GetRenderState(LPDIRECT3DDEVICE3 iface
,
1759 D3DRENDERSTATETYPE dwRenderStateType
,
1760 LPDWORD lpdwRenderState
)
1762 TRACE("(%p)->(%08x,%p) thunking to IDirect3DDevice7 interface.\n", iface
, dwRenderStateType
, lpdwRenderState
);
1763 return IDirect3DDevice7_GetRenderState(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice3
, IDirect3DDevice7
, iface
),
1769 Thunk_IDirect3DDeviceImpl_2_GetRenderState(LPDIRECT3DDEVICE2 iface
,
1770 D3DRENDERSTATETYPE dwRenderStateType
,
1771 LPDWORD lpdwRenderState
)
1773 TRACE("(%p)->(%08x,%p) thunking to IDirect3DDevice7 interface.\n", iface
, dwRenderStateType
, lpdwRenderState
);
1774 return IDirect3DDevice7_GetRenderState(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice2
, IDirect3DDevice7
, iface
),
1780 Thunk_IDirect3DDeviceImpl_3_DrawPrimitive(LPDIRECT3DDEVICE3 iface
,
1781 D3DPRIMITIVETYPE d3dptPrimitiveType
,
1782 DWORD d3dvtVertexType
,
1784 DWORD dwVertexCount
,
1787 TRACE("(%p)->(%08x,%08lx,%p,%08lx,%08lx) thunking to IDirect3DDevice7 interface.\n", iface
, d3dptPrimitiveType
, d3dvtVertexType
, lpvVertices
, dwVertexCount
, dwFlags
);
1788 return IDirect3DDevice7_DrawPrimitive(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice3
, IDirect3DDevice7
, iface
),
1797 Thunk_IDirect3DDeviceImpl_3_DrawIndexedPrimitive(LPDIRECT3DDEVICE3 iface
,
1798 D3DPRIMITIVETYPE d3dptPrimitiveType
,
1799 DWORD d3dvtVertexType
,
1801 DWORD dwVertexCount
,
1806 TRACE("(%p)->(%08x,%08lx,%p,%08lx,%p,%08lx,%08lx) thunking to IDirect3DDevice7 interface.\n", iface
, d3dptPrimitiveType
, d3dvtVertexType
, lpvVertices
, dwVertexCount
, dwIndices
, dwIndexCount
, dwFlags
);
1807 return IDirect3DDevice7_DrawIndexedPrimitive(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice3
, IDirect3DDevice7
, iface
),
1818 Thunk_IDirect3DDeviceImpl_3_SetClipStatus(LPDIRECT3DDEVICE3 iface
,
1819 LPD3DCLIPSTATUS lpD3DClipStatus
)
1821 TRACE("(%p)->(%p) thunking to IDirect3DDevice7 interface.\n", iface
, lpD3DClipStatus
);
1822 return IDirect3DDevice7_SetClipStatus(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice3
, IDirect3DDevice7
, iface
),
1827 Thunk_IDirect3DDeviceImpl_2_SetClipStatus(LPDIRECT3DDEVICE2 iface
,
1828 LPD3DCLIPSTATUS lpD3DClipStatus
)
1830 TRACE("(%p)->(%p) thunking to IDirect3DDevice7 interface.\n", iface
, lpD3DClipStatus
);
1831 return IDirect3DDevice7_SetClipStatus(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice2
, IDirect3DDevice7
, iface
),
1836 Thunk_IDirect3DDeviceImpl_3_GetClipStatus(LPDIRECT3DDEVICE3 iface
,
1837 LPD3DCLIPSTATUS lpD3DClipStatus
)
1839 TRACE("(%p)->(%p) thunking to IDirect3DDevice7 interface.\n", iface
, lpD3DClipStatus
);
1840 return IDirect3DDevice7_GetClipStatus(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice3
, IDirect3DDevice7
, iface
),
1845 Thunk_IDirect3DDeviceImpl_2_GetClipStatus(LPDIRECT3DDEVICE2 iface
,
1846 LPD3DCLIPSTATUS lpD3DClipStatus
)
1848 TRACE("(%p)->(%p) thunking to IDirect3DDevice7 interface.\n", iface
, lpD3DClipStatus
);
1849 return IDirect3DDevice7_GetClipStatus(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice2
, IDirect3DDevice7
, iface
),
1854 Thunk_IDirect3DDeviceImpl_3_DrawPrimitiveStrided(LPDIRECT3DDEVICE3 iface
,
1855 D3DPRIMITIVETYPE d3dptPrimitiveType
,
1857 LPD3DDRAWPRIMITIVESTRIDEDDATA lpD3DDrawPrimStrideData
,
1858 DWORD dwVertexCount
,
1861 TRACE("(%p)->(%08x,%08lx,%p,%08lx,%08lx) thunking to IDirect3DDevice7 interface.\n", iface
, d3dptPrimitiveType
, dwVertexType
, lpD3DDrawPrimStrideData
, dwVertexCount
, dwFlags
);
1862 return IDirect3DDevice7_DrawPrimitiveStrided(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice3
, IDirect3DDevice7
, iface
),
1865 lpD3DDrawPrimStrideData
,
1871 Thunk_IDirect3DDeviceImpl_3_DrawIndexedPrimitiveStrided(LPDIRECT3DDEVICE3 iface
,
1872 D3DPRIMITIVETYPE d3dptPrimitiveType
,
1874 LPD3DDRAWPRIMITIVESTRIDEDDATA lpD3DDrawPrimStrideData
,
1875 DWORD dwVertexCount
,
1880 TRACE("(%p)->(%08x,%08lx,%p,%08lx,%p,%08lx,%08lx) thunking to IDirect3DDevice7 interface.\n", iface
, d3dptPrimitiveType
, dwVertexType
, lpD3DDrawPrimStrideData
, dwVertexCount
, lpIndex
, dwIndexCount
, dwFlags
);
1881 return IDirect3DDevice7_DrawIndexedPrimitiveStrided(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice3
, IDirect3DDevice7
, iface
),
1884 lpD3DDrawPrimStrideData
,
1892 Thunk_IDirect3DDeviceImpl_3_ComputeSphereVisibility(LPDIRECT3DDEVICE3 iface
,
1893 LPD3DVECTOR lpCenters
,
1897 LPDWORD lpdwReturnValues
)
1899 TRACE("(%p)->(%p,%p,%08lx,%08lx,%p) thunking to IDirect3DDevice7 interface.\n", iface
, lpCenters
, lpRadii
, dwNumSpheres
, dwFlags
, lpdwReturnValues
);
1900 return IDirect3DDevice7_ComputeSphereVisibility(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice3
, IDirect3DDevice7
, iface
),
1909 Thunk_IDirect3DDeviceImpl_3_GetTextureStageState(LPDIRECT3DDEVICE3 iface
,
1911 D3DTEXTURESTAGESTATETYPE d3dTexStageStateType
,
1914 TRACE("(%p)->(%08lx,%08x,%p) thunking to IDirect3DDevice7 interface.\n", iface
, dwStage
, d3dTexStageStateType
, lpdwState
);
1915 return IDirect3DDevice7_GetTextureStageState(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice3
, IDirect3DDevice7
, iface
),
1917 d3dTexStageStateType
,
1922 Thunk_IDirect3DDeviceImpl_3_SetTextureStageState(LPDIRECT3DDEVICE3 iface
,
1924 D3DTEXTURESTAGESTATETYPE d3dTexStageStateType
,
1927 TRACE("(%p)->(%08lx,%08x,%08lx) thunking to IDirect3DDevice7 interface.\n", iface
, dwStage
, d3dTexStageStateType
, dwState
);
1928 return IDirect3DDevice7_SetTextureStageState(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice3
, IDirect3DDevice7
, iface
),
1930 d3dTexStageStateType
,
1935 Thunk_IDirect3DDeviceImpl_3_ValidateDevice(LPDIRECT3DDEVICE3 iface
,
1938 TRACE("(%p)->(%p) thunking to IDirect3DDevice7 interface.\n", iface
, lpdwPasses
);
1939 return IDirect3DDevice7_ValidateDevice(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice3
, IDirect3DDevice7
, iface
),
1944 Thunk_IDirect3DDeviceImpl_2_GetCaps(LPDIRECT3DDEVICE2 iface
,
1945 LPD3DDEVICEDESC lpD3DHWDevDesc
,
1946 LPD3DDEVICEDESC lpD3DHELDevDesc
)
1948 TRACE("(%p)->(%p,%p) thunking to IDirect3DDevice3 interface.\n", iface
, lpD3DHWDevDesc
, lpD3DHELDevDesc
);
1949 return IDirect3DDevice3_GetCaps(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice2
, IDirect3DDevice3
, iface
),
1955 Thunk_IDirect3DDeviceImpl_1_GetCaps(LPDIRECT3DDEVICE iface
,
1956 LPD3DDEVICEDESC lpD3DHWDevDesc
,
1957 LPD3DDEVICEDESC lpD3DHELDevDesc
)
1959 TRACE("(%p)->(%p,%p) thunking to IDirect3DDevice3 interface.\n", iface
, lpD3DHWDevDesc
, lpD3DHELDevDesc
);
1960 return IDirect3DDevice3_GetCaps(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice
, IDirect3DDevice3
, iface
),
1966 Thunk_IDirect3DDeviceImpl_1_SwapTextureHandles(LPDIRECT3DDEVICE iface
,
1967 LPDIRECT3DTEXTURE lpD3DTex1
,
1968 LPDIRECT3DTEXTURE lpD3DTex2
)
1970 TRACE("(%p)->(%p,%p) thunking to IDirect3DDevice2 interface.\n", iface
, lpD3DTex1
, lpD3DTex2
);
1971 return IDirect3DDevice2_SwapTextureHandles(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice
, IDirect3DDevice2
, iface
),
1972 COM_INTERFACE_CAST(IDirectDrawSurfaceImpl
, IDirect3DTexture
, IDirect3DTexture2
, lpD3DTex1
),
1973 COM_INTERFACE_CAST(IDirectDrawSurfaceImpl
, IDirect3DTexture
, IDirect3DTexture2
, lpD3DTex2
));
1977 Thunk_IDirect3DDeviceImpl_2_GetStats(LPDIRECT3DDEVICE2 iface
,
1978 LPD3DSTATS lpD3DStats
)
1980 TRACE("(%p)->(%p) thunking to IDirect3DDevice3 interface.\n", iface
, lpD3DStats
);
1981 return IDirect3DDevice3_GetStats(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice2
, IDirect3DDevice3
, iface
),
1986 Thunk_IDirect3DDeviceImpl_1_GetStats(LPDIRECT3DDEVICE iface
,
1987 LPD3DSTATS lpD3DStats
)
1989 TRACE("(%p)->(%p) thunking to IDirect3DDevice3 interface.\n", iface
, lpD3DStats
);
1990 return IDirect3DDevice3_GetStats(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice
, IDirect3DDevice3
, iface
),
1995 Thunk_IDirect3DDeviceImpl_3_SetRenderTarget(LPDIRECT3DDEVICE3 iface
,
1996 LPDIRECTDRAWSURFACE4 lpNewRenderTarget
,
1999 TRACE("(%p)->(%p,%08lx) thunking to IDirect3DDevice7 interface.\n", iface
, lpNewRenderTarget
, dwFlags
);
2000 return IDirect3DDevice7_SetRenderTarget(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice3
, IDirect3DDevice7
, iface
),
2001 (LPDIRECTDRAWSURFACE7
) lpNewRenderTarget
/* No cast needed as DSurf4 == DSurf7 */,
2006 Thunk_IDirect3DDeviceImpl_3_GetRenderTarget(LPDIRECT3DDEVICE3 iface
,
2007 LPDIRECTDRAWSURFACE4
* lplpRenderTarget
)
2009 TRACE("(%p)->(%p) thunking to IDirect3DDevice7 interface.\n", iface
, lplpRenderTarget
);
2010 return IDirect3DDevice7_GetRenderTarget(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice3
, IDirect3DDevice7
, iface
),
2011 (LPDIRECTDRAWSURFACE7
*) lplpRenderTarget
/* No cast needed as DSurf4 == DSurf7 */);
2015 Thunk_IDirect3DDeviceImpl_2_SetRenderTarget(LPDIRECT3DDEVICE2 iface
,
2016 LPDIRECTDRAWSURFACE lpNewRenderTarget
,
2019 TRACE("(%p)->(%p,%08lx) thunking to IDirect3DDevice7 interface.\n", iface
, lpNewRenderTarget
, dwFlags
);
2020 return IDirect3DDevice7_SetRenderTarget(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice2
, IDirect3DDevice7
, iface
),
2021 COM_INTERFACE_CAST(IDirectDrawSurfaceImpl
, IDirectDrawSurface3
, IDirectDrawSurface7
, lpNewRenderTarget
),
2026 Thunk_IDirect3DDeviceImpl_2_GetRenderTarget(LPDIRECT3DDEVICE2 iface
,
2027 LPDIRECTDRAWSURFACE
* lplpRenderTarget
)
2030 LPDIRECTDRAWSURFACE7 ret_val
;
2032 TRACE("(%p)->(%p) thunking to IDirect3DDevice7 interface.\n", iface
, lplpRenderTarget
);
2033 ret
= IDirect3DDevice7_GetRenderTarget(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice2
, IDirect3DDevice7
, iface
),
2035 *lplpRenderTarget
= (LPDIRECTDRAWSURFACE
) COM_INTERFACE_CAST(IDirectDrawSurfaceImpl
, IDirectDrawSurface7
, IDirectDrawSurface3
, ret_val
);
2036 TRACE(" returning interface %p\n", *lplpRenderTarget
);
2041 Thunk_IDirect3DDeviceImpl_2_Vertex(LPDIRECT3DDEVICE2 iface
,
2042 LPVOID lpVertexType
)
2044 TRACE("(%p)->(%p) thunking to IDirect3DDevice3 interface.\n", iface
, lpVertexType
);
2045 return IDirect3DDevice3_Vertex(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice2
, IDirect3DDevice3
, iface
),
2050 Thunk_IDirect3DDeviceImpl_2_Index(LPDIRECT3DDEVICE2 iface
,
2053 TRACE("(%p)->(%04x) thunking to IDirect3DDevice3 interface.\n", iface
, wVertexIndex
);
2054 return IDirect3DDevice3_Index(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice2
, IDirect3DDevice3
, iface
),
2059 Thunk_IDirect3DDeviceImpl_2_End(LPDIRECT3DDEVICE2 iface
,
2062 TRACE("(%p)->(%08lx) thunking to IDirect3DDevice3 interface.\n", iface
, dwFlags
);
2063 return IDirect3DDevice3_End(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice2
, IDirect3DDevice3
, iface
),
2068 Thunk_IDirect3DDeviceImpl_2_GetLightState(LPDIRECT3DDEVICE2 iface
,
2069 D3DLIGHTSTATETYPE dwLightStateType
,
2070 LPDWORD lpdwLightState
)
2072 TRACE("(%p)->(%08x,%p) thunking to IDirect3DDevice3 interface.\n", iface
, dwLightStateType
, lpdwLightState
);
2073 return IDirect3DDevice3_GetLightState(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice2
, IDirect3DDevice3
, iface
),
2079 Thunk_IDirect3DDeviceImpl_2_SetLightState(LPDIRECT3DDEVICE2 iface
,
2080 D3DLIGHTSTATETYPE dwLightStateType
,
2083 TRACE("(%p)->(%08x,%08lx) thunking to IDirect3DDevice3 interface.\n", iface
, dwLightStateType
, dwLightState
);
2084 return IDirect3DDevice3_SetLightState(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice2
, IDirect3DDevice3
, iface
),
2090 Thunk_IDirect3DDeviceImpl_1_EnumTextureFormats(LPDIRECT3DDEVICE iface
,
2091 LPD3DENUMTEXTUREFORMATSCALLBACK lpD3DEnumTextureProc
,
2094 TRACE("(%p)->(%p,%p) thunking to IDirect3DDevice2 interface.\n", iface
, lpD3DEnumTextureProc
, lpArg
);
2095 return IDirect3DDevice2_EnumTextureFormats(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice
, IDirect3DDevice2
, iface
),
2096 lpD3DEnumTextureProc
,
2101 Thunk_IDirect3DDeviceImpl_3_SetTexture(LPDIRECT3DDEVICE3 iface
,
2103 LPDIRECT3DTEXTURE2 lpTexture2
)
2105 TRACE("(%p)->(%ld,%p) thunking to IDirect3DDevice7 interface.\n", iface
, dwStage
, lpTexture2
);
2106 return IDirect3DDevice7_SetTexture(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice3
, IDirect3DDevice7
, iface
),
2108 COM_INTERFACE_CAST(IDirectDrawSurfaceImpl
, IDirect3DTexture2
, IDirectDrawSurface7
, lpTexture2
));
2112 Thunk_IDirect3DDeviceImpl_3_DrawPrimitiveVB(LPDIRECT3DDEVICE3 iface
,
2113 D3DPRIMITIVETYPE d3dptPrimitiveType
,
2114 LPDIRECT3DVERTEXBUFFER lpD3DVertexBuf
,
2115 DWORD dwStartVertex
,
2116 DWORD dwNumVertices
,
2119 TRACE("(%p)->(%08x,%p,%08lx,%08lx,%08lx) thunking to IDirect3DDevice7 interface.\n", iface
,
2120 d3dptPrimitiveType
, lpD3DVertexBuf
, dwStartVertex
, dwNumVertices
, dwFlags
);
2121 return IDirect3DDevice7_DrawPrimitiveVB(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice3
, IDirect3DDevice7
, iface
),
2123 COM_INTERFACE_CAST(IDirect3DVertexBufferImpl
, IDirect3DVertexBuffer
, IDirect3DVertexBuffer7
, lpD3DVertexBuf
),
2130 Thunk_IDirect3DDeviceImpl_3_DrawIndexedPrimitiveVB(LPDIRECT3DDEVICE3 iface
,
2131 D3DPRIMITIVETYPE d3dptPrimitiveType
,
2132 LPDIRECT3DVERTEXBUFFER lpD3DVertexBuf
,
2137 TRACE("(%p)->(%08x,%p,%p,%08lx,%08lx) thunking to IDirect3DDevice7 interface.\n", iface
,
2138 d3dptPrimitiveType
, lpD3DVertexBuf
, lpwIndices
, dwIndexCount
, dwFlags
);
2139 return IDirect3DDevice7_DrawIndexedPrimitiveVB(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice3
, IDirect3DDevice7
, iface
),
2141 COM_INTERFACE_CAST(IDirect3DVertexBufferImpl
, IDirect3DVertexBuffer
, IDirect3DVertexBuffer7
, lpD3DVertexBuf
),
2150 Thunk_IDirect3DDeviceImpl_3_GetTexture(LPDIRECT3DDEVICE3 iface
,
2152 LPDIRECT3DTEXTURE2
* lplpTexture2
)
2155 LPDIRECTDRAWSURFACE7 ret_val
;
2157 TRACE("(%p)->(%ld,%p) thunking to IDirect3DDevice7 interface.\n", iface
, dwStage
, lplpTexture2
);
2158 ret
= IDirect3DDevice7_GetTexture(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice3
, IDirect3DDevice7
, iface
),
2162 *lplpTexture2
= COM_INTERFACE_CAST(IDirectDrawSurfaceImpl
, IDirectDrawSurface7
, IDirect3DTexture2
, ret_val
);
2164 TRACE(" returning interface %p.\n", *lplpTexture2
);