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
33 #include "wine/debug.h"
35 #include "d3d_private.h"
38 WINE_DEFAULT_DEBUG_CHANNEL(ddraw
);
40 DWORD InitRenderStateTab
[] = {
41 D3DRENDERSTATE_TEXTUREHANDLE
, (DWORD
)NULL
,
42 D3DRENDERSTATE_ANTIALIAS
, D3DANTIALIAS_NONE
,
43 /* FIXME: D3DRENDERSTATE_TEXTUREADDRESS */
44 D3DRENDERSTATE_TEXTUREPERSPECTIVE
, TRUE
,
45 /* FIXME: D3DRENDERSTATE_WRAPU */
46 /* FIXME: D3DRENDERSTATE_WRAPV */
47 D3DRENDERSTATE_ZENABLE
, D3DZB_TRUE
, /* This needs to be set differently according to the Z buffer status */
48 D3DRENDERSTATE_FILLMODE
, D3DFILL_SOLID
,
49 D3DRENDERSTATE_SHADEMODE
, D3DSHADE_GOURAUD
,
50 D3DRENDERSTATE_LINEPATTERN
, 0,
51 D3DRENDERSTATE_MONOENABLE
, FALSE
,
52 D3DRENDERSTATE_ROP2
, R2_COPYPEN
,
53 D3DRENDERSTATE_PLANEMASK
, 0xFFFFFFFF,
54 D3DRENDERSTATE_ZWRITEENABLE
, TRUE
,
55 D3DRENDERSTATE_ALPHATESTENABLE
, FALSE
,
56 D3DRENDERSTATE_LASTPIXEL
, TRUE
,
57 D3DRENDERSTATE_TEXTUREMAG
, D3DFILTER_NEAREST
,
58 D3DRENDERSTATE_TEXTUREMIN
, D3DFILTER_NEAREST
,
59 D3DRENDERSTATE_SRCBLEND
, D3DBLEND_ONE
,
60 D3DRENDERSTATE_DESTBLEND
, D3DBLEND_ZERO
,
61 D3DRENDERSTATE_TEXTUREMAPBLEND
, D3DTBLEND_MODULATE
,
62 D3DRENDERSTATE_CULLMODE
, D3DCULL_CCW
,
63 D3DRENDERSTATE_ZFUNC
, D3DCMP_LESSEQUAL
,
64 D3DRENDERSTATE_ALPHAREF
, 0,
65 D3DRENDERSTATE_ALPHAFUNC
, D3DCMP_ALWAYS
,
66 D3DRENDERSTATE_DITHERENABLE
, FALSE
,
67 D3DRENDERSTATE_ALPHABLENDENABLE
, FALSE
,
68 D3DRENDERSTATE_FOGENABLE
, FALSE
,
69 D3DRENDERSTATE_SPECULARENABLE
, FALSE
,
70 D3DRENDERSTATE_ZVISIBLE
, FALSE
,
71 D3DRENDERSTATE_SUBPIXEL
, FALSE
,
72 D3DRENDERSTATE_SUBPIXELX
, FALSE
,
73 D3DRENDERSTATE_STIPPLEDALPHA
, FALSE
,
74 D3DRENDERSTATE_FOGCOLOR
, D3DRGBA(0,0,0,0),
75 D3DRENDERSTATE_FOGTABLEMODE
, D3DFOG_NONE
,
76 /* FIXME: D3DRENDERSTATE_FOGTABLESTART (same as D3DRENDERSTATE_FOGSTART) */
77 /* FIXME: D3DRENDERSTATE_FOGTABLEEND (same as D3DRENDERSTATE_FOGEND) */
78 D3DRENDERSTATE_FOGTABLEDENSITY
, 0x3F80000, /* 1.0f (same as D3DRENDERSTATE_FOGDENSITY) */
79 /* FIXME: D3DRENDERSTATE_STIPPLEENABLE */
80 D3DRENDERSTATE_EDGEANTIALIAS
, FALSE
,
81 D3DRENDERSTATE_COLORKEYENABLE
, FALSE
,
82 /* FIXME: D3DRENDERSTATE_BORDERCOLOR */
83 D3DRENDERSTATE_TEXTUREADDRESSU
, D3DTADDRESS_WRAP
,
84 D3DRENDERSTATE_TEXTUREADDRESSV
, D3DTADDRESS_WRAP
,
85 D3DRENDERSTATE_MIPMAPLODBIAS
, 0x00000000, /* 0.0f */
86 D3DRENDERSTATE_ZBIAS
, 0,
87 D3DRENDERSTATE_RANGEFOGENABLE
, FALSE
,
88 /* FIXME: D3DRENDERSTATE_ANISOTROPY */
89 /* FIXME: D3DRENDERSTATE_FLUSHBATCH */
90 /* FIXME: D3DRENDERSTATE_TRANSLUCENTSORTINDEPENDENT */
91 D3DRENDERSTATE_STENCILENABLE
, FALSE
,
92 D3DRENDERSTATE_STENCILFAIL
, D3DSTENCILOP_KEEP
,
93 D3DRENDERSTATE_STENCILZFAIL
, D3DSTENCILOP_KEEP
,
94 D3DRENDERSTATE_STENCILPASS
, D3DSTENCILOP_KEEP
,
95 D3DRENDERSTATE_STENCILFUNC
, D3DCMP_ALWAYS
,
96 D3DRENDERSTATE_STENCILREF
, 0,
97 D3DRENDERSTATE_STENCILMASK
, 0xFFFFFFFF,
98 D3DRENDERSTATE_STENCILWRITEMASK
, 0xFFFFFFFF,
99 /* FIXME: D3DRENDERSTATE_TEXTUREFACTOR */
100 /* FIXME: D3DRENDERSTATE_STIPPLEPATTERN00..31 */
101 D3DRENDERSTATE_WRAP0
, 0,
102 D3DRENDERSTATE_WRAP1
, 0,
103 D3DRENDERSTATE_WRAP2
, 0,
104 D3DRENDERSTATE_WRAP3
, 0,
105 D3DRENDERSTATE_WRAP4
, 0,
106 D3DRENDERSTATE_WRAP5
, 0,
107 D3DRENDERSTATE_WRAP6
, 0,
108 D3DRENDERSTATE_WRAP7
, 0,
109 D3DRENDERSTATE_CLIPPING
, FALSE
,
110 D3DRENDERSTATE_LIGHTING
, TRUE
,
111 D3DRENDERSTATE_EXTENTS
, FALSE
,
112 D3DRENDERSTATE_AMBIENT
, D3DRGBA(0,0,0,0),
113 D3DRENDERSTATE_FOGVERTEXMODE
, D3DFOG_NONE
,
114 D3DRENDERSTATE_COLORVERTEX
, TRUE
,
115 D3DRENDERSTATE_LOCALVIEWER
, TRUE
,
116 D3DRENDERSTATE_NORMALIZENORMALS
, FALSE
,
117 /* FIXME: D3DRENDER_STATE_COLORKEYBLENDENABLE */
118 D3DRENDERSTATE_DIFFUSEMATERIALSOURCE
, D3DMCS_COLOR1
,
119 D3DRENDERSTATE_SPECULARMATERIALSOURCE
, D3DMCS_COLOR2
,
120 D3DRENDERSTATE_AMBIENTMATERIALSOURCE
, D3DMCS_COLOR2
,
121 D3DRENDERSTATE_EMISSIVEMATERIALSOURCE
, D3DMCS_MATERIAL
,
122 D3DRENDERSTATE_VERTEXBLEND
, D3DVBLEND_DISABLE
,
123 D3DRENDERSTATE_CLIPPLANEENABLE
, 0
126 DWORD InitLightStateTab
[] = {
127 D3DLIGHTSTATE_MATERIAL
, (DWORD
)NULL
,
128 D3DLIGHTSTATE_AMBIENT
, D3DRGBA(0,0,0,0),
129 D3DLIGHTSTATE_COLORMODEL
, D3DCOLOR_RGB
,
130 D3DLIGHTSTATE_FOGMODE
, D3DFOG_NONE
,
131 D3DLIGHTSTATE_FOGSTART
, 0x3F80000, /* 1.0f */
132 D3DLIGHTSTATE_FOGEND
, 0x42C8000, /* 100.0f */
133 D3DLIGHTSTATE_FOGDENSITY
, 0x3F80000 /* 1.0f */
134 /* FIXME: D3DLIGHTSTATE_COLORVERTEX */
137 DWORD InitTextureStageStateTab
[] = {
138 D3DTSS_COLOROP
, D3DTOP_DISABLE
, /* Note, it's manually set for stage 0 */
139 D3DTSS_COLORARG1
, D3DTA_TEXTURE
,
140 D3DTSS_COLORARG2
, D3DTA_CURRENT
,
141 D3DTSS_ALPHAOP
, D3DTOP_DISABLE
, /* Note, it's manually set for stage 0 */
142 D3DTSS_ALPHAARG1
, D3DTA_TEXTURE
,
143 D3DTSS_ALPHAARG2
, D3DTA_CURRENT
,
144 /* FIXME: D3DTSS_BUMPENVMAT00,01,10,11 */
145 /* D3DTSS_TEXCOORDINDEX is set manually */
146 D3DTSS_ADDRESS
, D3DTADDRESS_WRAP
,
147 D3DTSS_ADDRESSU
, D3DTADDRESS_WRAP
,
148 D3DTSS_ADDRESSV
, D3DTADDRESS_WRAP
,
149 D3DTSS_BORDERCOLOR
, 0x00000000,
150 D3DTSS_MAGFILTER
, D3DTFG_POINT
,
151 D3DTSS_MINFILTER
, D3DTFN_POINT
,
152 D3DTSS_MIPFILTER
, D3DTFP_NONE
,
153 D3DTSS_MIPMAPLODBIAS
, 0x00000000, /* 0.0f */
154 D3DTSS_MAXMIPLEVEL
, 0,
155 /* D3DTSS_MAXANISOTROPY, 1, */ /* This is to prevent warnings :-) */
156 /* FIXME: D3DTSS_BUMPENVLSCALE */
157 /* FIXME: D3DTSS_NUMPENVLOFFSET */
158 /* FIXME: D3DTSS_TEXTURETRANSFORMFLAGS */
162 void InitDefaultStateBlock(STATEBLOCK
* lpStateBlock
, int version
)
165 TRACE("(%p,%d)\n", lpStateBlock
, version
);
166 memset(lpStateBlock
, 0, sizeof(STATEBLOCK
));
168 /* Initialize render states */
169 for (i
= 0; i
< sizeof(InitRenderStateTab
) / sizeof(InitRenderStateTab
[0]); i
+= 2)
171 lpStateBlock
->render_state
[InitRenderStateTab
[i
] - 1] = InitRenderStateTab
[i
+ 1];
172 lpStateBlock
->set_flags
.render_state
[InitRenderStateTab
[i
] - 1] = TRUE
;
175 /* Initialize texture stages states */
176 for (i
= 0; i
< MAX_TEXTURES
; i
++)
178 for (j
= 0; j
< sizeof(InitTextureStageStateTab
) / sizeof(InitTextureStageStateTab
[0]); j
+= 2)
180 lpStateBlock
->texture_stage_state
[i
][InitTextureStageStateTab
[j
] - 1] = InitTextureStageStateTab
[j
+ 1];
181 lpStateBlock
->set_flags
.texture_stage_state
[i
][InitTextureStageStateTab
[j
] - 1] = TRUE
;
183 /* Map texture coords 0 to stage 0, 1 to stage 1, etc... */
184 lpStateBlock
->texture_stage_state
[i
][D3DTSS_TEXCOORDINDEX
- 1] = i
;
185 lpStateBlock
->set_flags
.texture_stage_state
[i
][D3DTSS_TEXCOORDINDEX
- 1] = TRUE
;
188 /* The first texture is particular, update it consequently */
189 lpStateBlock
->texture_stage_state
[0][D3DTSS_COLOROP
- 1] = D3DTOP_MODULATE
;
190 lpStateBlock
->texture_stage_state
[0][D3DTSS_ALPHAOP
- 1] = D3DTOP_SELECTARG1
;
191 lpStateBlock
->texture_stage_state
[0][D3DTSS_COLORARG2
- 1] = D3DTA_DIFFUSE
;
192 lpStateBlock
->texture_stage_state
[0][D3DTSS_ALPHAARG2
- 1] = D3DTA_DIFFUSE
;
194 /* Updates for particular versions */
195 if ((version
== 1) || (version
==2))
196 lpStateBlock
->render_state
[D3DRENDERSTATE_SPECULARENABLE
- 1] = TRUE
;
200 Main_IDirect3DDeviceImpl_7_3T_2T_1T_QueryInterface(LPDIRECT3DDEVICE7 iface
,
204 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
205 TRACE("(%p/%p)->(%s,%p)\n", This
, iface
, debugstr_guid(riid
), obp
);
209 if ( IsEqualGUID( &IID_IUnknown
, riid
) ) {
210 IDirect3DDevice7_AddRef(ICOM_INTERFACE(This
, IDirect3DDevice7
));
212 TRACE(" Creating IUnknown interface at %p.\n", *obp
);
215 if ( IsEqualGUID( &IID_IDirect3DDevice
, riid
) ) {
216 IDirect3DDevice7_AddRef(ICOM_INTERFACE(This
, IDirect3DDevice7
));
217 *obp
= ICOM_INTERFACE(This
, IDirect3DDevice
);
218 TRACE(" Creating IDirect3DDevice interface %p\n", *obp
);
221 if ( IsEqualGUID( &IID_IDirect3DDevice2
, riid
) ) {
222 IDirect3DDevice7_AddRef(ICOM_INTERFACE(This
, IDirect3DDevice7
));
223 *obp
= ICOM_INTERFACE(This
, IDirect3DDevice2
);
224 TRACE(" Creating IDirect3DDevice2 interface %p\n", *obp
);
227 if ( IsEqualGUID( &IID_IDirect3DDevice3
, riid
) ) {
228 IDirect3DDevice7_AddRef(ICOM_INTERFACE(This
, IDirect3DDevice7
));
229 *obp
= ICOM_INTERFACE(This
, IDirect3DDevice3
);
230 TRACE(" Creating IDirect3DDevice3 interface %p\n", *obp
);
233 if ( IsEqualGUID( &IID_IDirect3DDevice7
, riid
) ) {
234 IDirect3DDevice7_AddRef(ICOM_INTERFACE(This
, IDirect3DDevice7
));
235 *obp
= ICOM_INTERFACE(This
, IDirect3DDevice7
);
236 TRACE(" Creating IDirect3DDevice7 interface %p\n", *obp
);
239 if ( IsEqualGUID( &IID_IDirectDrawSurface
, riid
) ||
240 IsEqualGUID( &IID_IDirectDrawSurface2
, riid
) ||
241 IsEqualGUID( &IID_IDirectDrawSurface3
, riid
) ) {
242 IDirectDrawSurface7_AddRef(ICOM_INTERFACE(This
->surface
, IDirectDrawSurface7
));
243 *obp
= ICOM_INTERFACE(This
->surface
, IDirectDrawSurface3
);
244 TRACE(" Return IDirectDrawSurface3 interface %p\n", *obp
);
247 if ( IsEqualGUID( &IID_IDirectDrawSurface4
, riid
) ||
248 IsEqualGUID( &IID_IDirectDrawSurface7
, riid
) ) {
249 IDirectDrawSurface7_AddRef(ICOM_INTERFACE(This
->surface
, IDirectDrawSurface7
));
250 *obp
= ICOM_INTERFACE(This
->surface
, IDirectDrawSurface7
);
251 TRACE(" Return IDirectDrawSurface7 interface %p\n", *obp
);
254 FIXME("(%p): interface for IID %s NOT found!\n", This
, debugstr_guid(riid
));
255 return OLE_E_ENUM_NOMORE
;
259 Main_IDirect3DDeviceImpl_7_3T_2T_1T_AddRef(LPDIRECT3DDEVICE7 iface
)
261 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
262 TRACE("(%p/%p)->() incrementing from %lu.\n", This
, iface
, This
->ref
);
263 return ++(This
->ref
);
267 Main_IDirect3DDeviceImpl_7_3T_2T_1T_Release(LPDIRECT3DDEVICE7 iface
)
269 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
270 TRACE("(%p/%p)->() decrementing from %lu.\n", This
, iface
, This
->ref
);
271 if (!--(This
->ref
)) {
273 /* Release texture associated with the device */
274 for (i
= 0; i
< MAX_TEXTURES
; i
++) {
275 if (This
->current_texture
[i
] != NULL
)
276 IDirect3DTexture2_Release(ICOM_INTERFACE(This
->current_texture
[i
], IDirect3DTexture2
));
279 HeapFree(GetProcessHeap(), 0, This
);
286 Main_IDirect3DDeviceImpl_7_GetCaps(LPDIRECT3DDEVICE7 iface
,
287 LPD3DDEVICEDESC7 lpD3DHELDevDesc
)
289 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
290 FIXME("(%p/%p)->(%p): stub!\n", This
, iface
, lpD3DHELDevDesc
);
295 Main_IDirect3DDeviceImpl_7_3T_EnumTextureFormats(LPDIRECT3DDEVICE7 iface
,
296 LPD3DENUMPIXELFORMATSCALLBACK lpD3DEnumPixelProc
,
299 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
300 FIXME("(%p/%p)->(%p,%p): stub!\n", This
, iface
, lpD3DEnumPixelProc
, lpArg
);
305 Main_IDirect3DDeviceImpl_7_3T_2T_1T_BeginScene(LPDIRECT3DDEVICE7 iface
)
307 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
308 TRACE("(%p/%p)->()\n", This
, iface
);
314 Main_IDirect3DDeviceImpl_7_3T_2T_1T_EndScene(LPDIRECT3DDEVICE7 iface
)
316 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
317 TRACE("(%p/%p)->()\n", This
, iface
);
323 Main_IDirect3DDeviceImpl_7_3T_2T_1T_GetDirect3D(LPDIRECT3DDEVICE7 iface
,
324 LPDIRECT3D7
* lplpDirect3D7
)
326 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
327 TRACE("(%p/%p)->(%p)\n", This
, iface
, lplpDirect3D7
);
329 *lplpDirect3D7
= ICOM_INTERFACE(This
->d3d
, IDirect3D7
);
330 IDirect3D7_AddRef(ICOM_INTERFACE(This
->d3d
, IDirect3D7
));
332 TRACE(" returning interface %p\n", *lplpDirect3D7
);
337 Main_IDirect3DDeviceImpl_7_3T_2T_SetRenderTarget(LPDIRECT3DDEVICE7 iface
,
338 LPDIRECTDRAWSURFACE7 lpNewRenderTarget
,
341 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
342 IDirectDrawSurfaceImpl
*target_impl
= ICOM_OBJECT(IDirectDrawSurfaceImpl
, IDirectDrawSurface7
, lpNewRenderTarget
);
344 TRACE("(%p/%p)->(%p,%08lx)\n", This
, iface
, lpNewRenderTarget
, dwFlags
);
345 if (target_impl
!= This
->surface
) {
346 WARN(" Change of rendering target not handled yet !\n");
352 Main_IDirect3DDeviceImpl_7_3T_2T_GetRenderTarget(LPDIRECT3DDEVICE7 iface
,
353 LPDIRECTDRAWSURFACE7
* lplpRenderTarget
)
355 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
356 TRACE("(%p/%p)->(%p)\n", This
, iface
, lplpRenderTarget
);
358 *lplpRenderTarget
= ICOM_INTERFACE(This
->surface
, IDirectDrawSurface7
);
359 IDirectDrawSurface7_AddRef(ICOM_INTERFACE(This
->surface
, IDirectDrawSurface7
));
361 TRACE(" returning surface at %p.\n", *lplpRenderTarget
);
367 Main_IDirect3DDeviceImpl_7_Clear(LPDIRECT3DDEVICE7 iface
,
375 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
376 TRACE("(%p/%p)->(%08lx,%p,%08lx,%08lx,%f,%08lx)\n", This
, iface
, dwCount
, lpRects
, dwFlags
, (DWORD
) dwColor
, dvZ
, dwStencil
);
377 return This
->clear(This
, dwCount
, lpRects
, dwFlags
, dwColor
, dvZ
, dwStencil
);
381 Main_IDirect3DDeviceImpl_7_3T_2T_SetTransform(LPDIRECT3DDEVICE7 iface
,
382 D3DTRANSFORMSTATETYPE dtstTransformStateType
,
383 LPD3DMATRIX lpD3DMatrix
)
385 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
386 DWORD matrix_changed
= 0x00000000;
388 TRACE("(%p/%p)->(%08x,%p)\n", This
, iface
, dtstTransformStateType
, lpD3DMatrix
);
390 switch (dtstTransformStateType
) {
391 case D3DTRANSFORMSTATE_WORLD
: {
392 if (TRACE_ON(ddraw
)) {
393 TRACE(" D3DTRANSFORMSTATE_WORLD :\n"); dump_D3DMATRIX(lpD3DMatrix
);
395 memcpy(This
->world_mat
, lpD3DMatrix
, 16 * sizeof(float));
396 matrix_changed
= WORLDMAT_CHANGED
;
399 case D3DTRANSFORMSTATE_VIEW
: {
400 if (TRACE_ON(ddraw
)) {
401 TRACE(" D3DTRANSFORMSTATE_VIEW :\n"); dump_D3DMATRIX(lpD3DMatrix
);
403 memcpy(This
->view_mat
, lpD3DMatrix
, 16 * sizeof(float));
404 matrix_changed
= VIEWMAT_CHANGED
;
407 case D3DTRANSFORMSTATE_PROJECTION
: {
408 if (TRACE_ON(ddraw
)) {
409 TRACE(" D3DTRANSFORMSTATE_PROJECTION :\n"); dump_D3DMATRIX(lpD3DMatrix
);
411 memcpy(This
->proj_mat
, lpD3DMatrix
, 16 * sizeof(float));
412 matrix_changed
= PROJMAT_CHANGED
;
415 case D3DTRANSFORMSTATE_TEXTURE0
:
416 case D3DTRANSFORMSTATE_TEXTURE1
:
417 case D3DTRANSFORMSTATE_TEXTURE2
:
418 case D3DTRANSFORMSTATE_TEXTURE3
:
419 case D3DTRANSFORMSTATE_TEXTURE4
:
420 case D3DTRANSFORMSTATE_TEXTURE5
:
421 case D3DTRANSFORMSTATE_TEXTURE6
:
422 case D3DTRANSFORMSTATE_TEXTURE7
: {
423 DWORD mat_num
= dtstTransformStateType
- D3DTRANSFORMSTATE_TEXTURE0
;
424 if (TRACE_ON(ddraw
)) {
425 TRACE(" D3DTRANSFORMSTATE_TEXTURE%ld :\n", mat_num
); dump_D3DMATRIX(lpD3DMatrix
);
427 memcpy(This
->tex_mat
[mat_num
], lpD3DMatrix
, 16 * sizeof(float));
428 matrix_changed
= TEXMAT0_CHANGED
<< mat_num
;
432 ERR("Unknown transform type %08x !!!\n", dtstTransformStateType
);
436 if (matrix_changed
!= 0x00000000) This
->matrices_updated(This
, matrix_changed
);
442 Main_IDirect3DDeviceImpl_7_3T_2T_GetTransform(LPDIRECT3DDEVICE7 iface
,
443 D3DTRANSFORMSTATETYPE dtstTransformStateType
,
444 LPD3DMATRIX lpD3DMatrix
)
446 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
447 TRACE("(%p/%p)->(%08x,%p)\n", This
, iface
, dtstTransformStateType
, lpD3DMatrix
);
449 switch (dtstTransformStateType
) {
450 case D3DTRANSFORMSTATE_WORLD
: {
451 memcpy(lpD3DMatrix
, This
->world_mat
, 16 * sizeof(D3DVALUE
));
452 if (TRACE_ON(ddraw
)) {
453 TRACE(" returning D3DTRANSFORMSTATE_WORLD :\n");
454 dump_D3DMATRIX(lpD3DMatrix
);
458 case D3DTRANSFORMSTATE_VIEW
: {
459 memcpy(lpD3DMatrix
, This
->view_mat
, 16 * sizeof(D3DVALUE
));
460 if (TRACE_ON(ddraw
)) {
461 TRACE(" returning D3DTRANSFORMSTATE_VIEW :\n");
462 dump_D3DMATRIX(lpD3DMatrix
);
466 case D3DTRANSFORMSTATE_PROJECTION
: {
467 memcpy(lpD3DMatrix
, This
->proj_mat
, 16 * sizeof(D3DVALUE
));
468 if (TRACE_ON(ddraw
)) {
469 TRACE(" returning D3DTRANSFORMSTATE_PROJECTION :\n");
470 dump_D3DMATRIX(lpD3DMatrix
);
474 case D3DTRANSFORMSTATE_TEXTURE0
:
475 case D3DTRANSFORMSTATE_TEXTURE1
:
476 case D3DTRANSFORMSTATE_TEXTURE2
:
477 case D3DTRANSFORMSTATE_TEXTURE3
:
478 case D3DTRANSFORMSTATE_TEXTURE4
:
479 case D3DTRANSFORMSTATE_TEXTURE5
:
480 case D3DTRANSFORMSTATE_TEXTURE6
:
481 case D3DTRANSFORMSTATE_TEXTURE7
: {
482 DWORD mat_num
= dtstTransformStateType
- D3DTRANSFORMSTATE_TEXTURE0
;
483 memcpy(lpD3DMatrix
, This
->tex_mat
[mat_num
], 16 * sizeof(D3DVALUE
));
484 if (TRACE_ON(ddraw
)) {
485 TRACE(" returning D3DTRANSFORMSTATE_TEXTURE%ld :\n", mat_num
);
486 dump_D3DMATRIX(lpD3DMatrix
);
491 ERR("Unknown transform type %08x !!!\n", dtstTransformStateType
);
492 return DDERR_INVALIDPARAMS
;
499 Main_IDirect3DDeviceImpl_7_3T_2T_MultiplyTransform(LPDIRECT3DDEVICE7 iface
,
500 D3DTRANSFORMSTATETYPE dtstTransformStateType
,
501 LPD3DMATRIX lpD3DMatrix
)
503 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
505 DWORD matrix_changed
= 0x00000000;
507 TRACE("(%p/%p)->(%08x,%p)\n", This
, iface
, dtstTransformStateType
, lpD3DMatrix
);
509 if (TRACE_ON(ddraw
)) {
510 TRACE(" Multiplying by :\n"); dump_D3DMATRIX(lpD3DMatrix
);
513 switch (dtstTransformStateType
) {
514 case D3DTRANSFORMSTATE_WORLD
: {
515 if (TRACE_ON(ddraw
)) {
516 TRACE(" Resulting D3DTRANSFORMSTATE_WORLD matrix is :\n");
518 mat
= This
->world_mat
;
519 matrix_changed
= WORLDMAT_CHANGED
;
522 case D3DTRANSFORMSTATE_VIEW
: {
523 if (TRACE_ON(ddraw
)) {
524 TRACE(" Resulting D3DTRANSFORMSTATE_VIEW matrix is :\n");
526 mat
= This
->view_mat
;
527 matrix_changed
= VIEWMAT_CHANGED
;
530 case D3DTRANSFORMSTATE_PROJECTION
: {
531 if (TRACE_ON(ddraw
)) {
532 TRACE(" Resulting D3DTRANSFORMSTATE_PROJECTION matrix is :\n");
534 mat
= This
->proj_mat
;
535 matrix_changed
= PROJMAT_CHANGED
;
538 case D3DTRANSFORMSTATE_TEXTURE0
:
539 case D3DTRANSFORMSTATE_TEXTURE1
:
540 case D3DTRANSFORMSTATE_TEXTURE2
:
541 case D3DTRANSFORMSTATE_TEXTURE3
:
542 case D3DTRANSFORMSTATE_TEXTURE4
:
543 case D3DTRANSFORMSTATE_TEXTURE5
:
544 case D3DTRANSFORMSTATE_TEXTURE6
:
545 case D3DTRANSFORMSTATE_TEXTURE7
: {
546 DWORD mat_num
= dtstTransformStateType
- D3DTRANSFORMSTATE_TEXTURE0
;
547 if (TRACE_ON(ddraw
)) {
548 TRACE(" Resulting D3DTRANSFORMSTATE_TEXTURE%ld matrix is :\n", mat_num
);
550 mat
= This
->tex_mat
[mat_num
];
551 matrix_changed
= TEXMAT0_CHANGED
<< mat_num
;
555 ERR("Unknown transform type %08x !!!\n", dtstTransformStateType
);
556 return DDERR_INVALIDPARAMS
;
559 multiply_matrix(mat
,mat
,lpD3DMatrix
);
561 if (TRACE_ON(ddraw
)) {
565 if (matrix_changed
!= 0x00000000) This
->matrices_updated(This
, matrix_changed
);
571 Main_IDirect3DDeviceImpl_7_GetViewport(LPDIRECT3DDEVICE7 iface
,
572 LPD3DVIEWPORT7 lpData
)
574 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
575 TRACE("(%p/%p)->(%p)\n", This
, iface
, lpData
);
577 *lpData
= This
->active_viewport
;
579 if (TRACE_ON(ddraw
)) {
580 TRACE(" returning viewport : \n");
581 TRACE(" - dwX = %ld dwY = %ld\n",
582 lpData
->dwX
, lpData
->dwY
);
583 TRACE(" - dwWidth = %ld dwHeight = %ld\n",
584 lpData
->dwWidth
, lpData
->dwHeight
);
585 TRACE(" - dvMinZ = %f dvMaxZ = %f\n",
586 lpData
->dvMinZ
, lpData
->dvMaxZ
);
593 Main_IDirect3DDeviceImpl_7_SetMaterial(LPDIRECT3DDEVICE7 iface
,
594 LPD3DMATERIAL7 lpMat
)
596 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
597 FIXME("(%p/%p)->(%p): stub!\n", This
, iface
, lpMat
);
602 Main_IDirect3DDeviceImpl_7_GetMaterial(LPDIRECT3DDEVICE7 iface
,
603 LPD3DMATERIAL7 lpMat
)
605 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
606 TRACE("(%p/%p)->(%p)\n", This
, iface
, lpMat
);
608 *lpMat
= This
->current_material
;
610 if (TRACE_ON(ddraw
)) {
611 TRACE(" returning material : \n");
612 dump_D3DMATERIAL7(lpMat
);
619 Main_IDirect3DDeviceImpl_7_SetLight(LPDIRECT3DDEVICE7 iface
,
623 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
624 FIXME("(%p/%p)->(%08lx,%p): stub!\n", This
, iface
, dwLightIndex
, lpLight
);
629 Main_IDirect3DDeviceImpl_7_GetLight(LPDIRECT3DDEVICE7 iface
,
633 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
634 TRACE("(%p/%p)->(%08lx,%p)\n", This
, iface
, dwLightIndex
, lpLight
);
636 if (dwLightIndex
> MAX_LIGHTS
) return DDERR_INVALIDPARAMS
;
637 *lpLight
= This
->light_parameters
[dwLightIndex
];
639 if (TRACE_ON(ddraw
)) {
640 TRACE(" returning light : \n");
641 dump_D3DLIGHT7(lpLight
);
648 Main_IDirect3DDeviceImpl_7_3T_2T_SetRenderState(LPDIRECT3DDEVICE7 iface
,
649 D3DRENDERSTATETYPE dwRenderStateType
,
652 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
653 FIXME("(%p/%p)->(%08x,%08lx): stub!\n", This
, iface
, dwRenderStateType
, dwRenderState
);
658 Main_IDirect3DDeviceImpl_7_3T_2T_GetRenderState(LPDIRECT3DDEVICE7 iface
,
659 D3DRENDERSTATETYPE dwRenderStateType
,
660 LPDWORD lpdwRenderState
)
662 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
663 FIXME("(%p/%p)->(%08x,%p): stub!\n", This
, iface
, dwRenderStateType
, lpdwRenderState
);
668 Main_IDirect3DDeviceImpl_7_BeginStateBlock(LPDIRECT3DDEVICE7 iface
)
670 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
671 FIXME("(%p/%p)->(): stub!\n", This
, iface
);
676 Main_IDirect3DDeviceImpl_7_EndStateBlock(LPDIRECT3DDEVICE7 iface
,
677 LPDWORD lpdwBlockHandle
)
679 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
680 FIXME("(%p/%p)->(%p): stub!\n", This
, iface
, lpdwBlockHandle
);
685 Main_IDirect3DDeviceImpl_7_PreLoad(LPDIRECT3DDEVICE7 iface
,
686 LPDIRECTDRAWSURFACE7 lpddsTexture
)
688 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
689 FIXME("(%p/%p)->(%p): stub!\n", This
, iface
, lpddsTexture
);
694 Main_IDirect3DDeviceImpl_7_3T_DrawPrimitive(LPDIRECT3DDEVICE7 iface
,
695 D3DPRIMITIVETYPE d3dptPrimitiveType
,
696 DWORD d3dvtVertexType
,
701 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
702 FIXME("(%p/%p)->(%08x,%08lx,%p,%08lx,%08lx): stub!\n", This
, iface
, d3dptPrimitiveType
, d3dvtVertexType
, lpvVertices
, dwVertexCount
, dwFlags
);
707 Main_IDirect3DDeviceImpl_7_3T_DrawIndexedPrimitive(LPDIRECT3DDEVICE7 iface
,
708 D3DPRIMITIVETYPE d3dptPrimitiveType
,
709 DWORD d3dvtVertexType
,
716 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
717 FIXME("(%p/%p)->(%08x,%08lx,%p,%08lx,%p,%08lx,%08lx): stub!\n", This
, iface
, d3dptPrimitiveType
, d3dvtVertexType
, lpvVertices
, dwVertexCount
, dwIndices
, dwIndexCount
, dwFlags
);
722 Main_IDirect3DDeviceImpl_7_3T_2T_SetClipStatus(LPDIRECT3DDEVICE7 iface
,
723 LPD3DCLIPSTATUS lpD3DClipStatus
)
725 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
726 FIXME("(%p/%p)->(%p): stub!\n", This
, iface
, lpD3DClipStatus
);
731 Main_IDirect3DDeviceImpl_7_3T_2T_GetClipStatus(LPDIRECT3DDEVICE7 iface
,
732 LPD3DCLIPSTATUS lpD3DClipStatus
)
734 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
735 FIXME("(%p/%p)->(%p): stub!\n", This
, iface
, lpD3DClipStatus
);
740 Main_IDirect3DDeviceImpl_7_3T_DrawPrimitiveStrided(LPDIRECT3DDEVICE7 iface
,
741 D3DPRIMITIVETYPE d3dptPrimitiveType
,
743 LPD3DDRAWPRIMITIVESTRIDEDDATA lpD3DDrawPrimStrideData
,
747 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
748 FIXME("(%p/%p)->(%08x,%08lx,%p,%08lx,%08lx): stub!\n", This
, iface
, d3dptPrimitiveType
, dwVertexType
, lpD3DDrawPrimStrideData
, dwVertexCount
, dwFlags
);
753 Main_IDirect3DDeviceImpl_7_3T_DrawIndexedPrimitiveStrided(LPDIRECT3DDEVICE7 iface
,
754 D3DPRIMITIVETYPE d3dptPrimitiveType
,
756 LPD3DDRAWPRIMITIVESTRIDEDDATA lpD3DDrawPrimStrideData
,
762 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
763 FIXME("(%p/%p)->(%08x,%08lx,%p,%08lx,%p,%08lx,%08lx): stub!\n", This
, iface
, d3dptPrimitiveType
, dwVertexType
, lpD3DDrawPrimStrideData
, dwVertexCount
, lpIndex
, dwIndexCount
, dwFlags
);
768 Main_IDirect3DDeviceImpl_7_3T_DrawPrimitiveVB(LPDIRECT3DDEVICE7 iface
,
769 D3DPRIMITIVETYPE d3dptPrimitiveType
,
770 LPDIRECT3DVERTEXBUFFER7 lpD3DVertexBuf
,
775 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
776 FIXME("(%p/%p)->(%08x,%p,%08lx,%08lx,%08lx): stub!\n", This
, iface
, d3dptPrimitiveType
, lpD3DVertexBuf
, dwStartVertex
, dwNumVertices
, dwFlags
);
781 Main_IDirect3DDeviceImpl_7_3T_DrawIndexedPrimitiveVB(LPDIRECT3DDEVICE7 iface
,
782 D3DPRIMITIVETYPE d3dptPrimitiveType
,
783 LPDIRECT3DVERTEXBUFFER7 lpD3DVertexBuf
,
790 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
791 FIXME("(%p/%p)->(%08x,%p,%08lx,%08lx,%p,%08lx,%08lx): stub!\n", This
, iface
, d3dptPrimitiveType
, lpD3DVertexBuf
, dwStartVertex
, dwNumVertices
, lpwIndices
, dwIndexCount
, dwFlags
);
796 Main_IDirect3DDeviceImpl_7_3T_ComputeSphereVisibility(LPDIRECT3DDEVICE7 iface
,
797 LPD3DVECTOR lpCenters
,
801 LPDWORD lpdwReturnValues
)
803 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
804 FIXME("(%p/%p)->(%p,%p,%08lx,%08lx,%p): stub!\n", This
, iface
, lpCenters
, lpRadii
, dwNumSpheres
, dwFlags
, lpdwReturnValues
);
809 Main_IDirect3DDeviceImpl_7_3T_GetTexture(LPDIRECT3DDEVICE7 iface
,
811 LPDIRECTDRAWSURFACE7
* lpTexture
)
813 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
814 TRACE("(%p/%p)->(%08lx,%p)\n", This
, iface
, dwStage
, lpTexture
);
816 if (This
->current_texture
[dwStage
] != NULL
) {
817 *lpTexture
= ICOM_INTERFACE(This
->current_texture
[dwStage
], IDirectDrawSurface7
);
818 IDirectDrawSurface7_AddRef(*lpTexture
);
823 TRACE(" returning interface at %p (for implementation at %p).\n", *lpTexture
, This
->current_texture
[dwStage
]);
829 Main_IDirect3DDeviceImpl_7_3T_SetTexture(LPDIRECT3DDEVICE7 iface
,
831 LPDIRECTDRAWSURFACE7 lpTexture
)
833 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
834 FIXME("(%p/%p)->(%08lx,%p): stub!\n", This
, iface
, dwStage
, lpTexture
);
839 Main_IDirect3DDeviceImpl_7_3T_GetTextureStageState(LPDIRECT3DDEVICE7 iface
,
841 D3DTEXTURESTAGESTATETYPE d3dTexStageStateType
,
844 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
845 TRACE("(%p/%p)->(%08lx,%08x,%p)\n", This
, iface
, dwStage
, d3dTexStageStateType
, lpdwState
);
846 if (lpdwState
&& (dwStage
< 8) && d3dTexStageStateType
&& (d3dTexStageStateType
<= HIGHEST_TEXTURE_STAGE_STATE
) ) {
847 *lpdwState
= This
->state_block
.texture_stage_state
[dwStage
][d3dTexStageStateType
-1];
850 return DDERR_INVALIDPARAMS
;
854 Main_IDirect3DDeviceImpl_7_3T_SetTextureStageState(LPDIRECT3DDEVICE7 iface
,
856 D3DTEXTURESTAGESTATETYPE d3dTexStageStateType
,
859 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
860 FIXME("(%p/%p)->(%08lx,%08x,%08lx): stub!\n", This
, iface
, dwStage
, d3dTexStageStateType
, dwState
);
865 Main_IDirect3DDeviceImpl_7_3T_ValidateDevice(LPDIRECT3DDEVICE7 iface
,
868 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
869 FIXME("(%p/%p)->(%p): semi-stub!\n", This
, iface
, lpdwPasses
);
871 /* For the moment, we have a VERY good hardware which does everything in one pass :-) */
878 Main_IDirect3DDeviceImpl_7_ApplyStateBlock(LPDIRECT3DDEVICE7 iface
,
881 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
882 FIXME("(%p/%p)->(%08lx): stub!\n", This
, iface
, dwBlockHandle
);
887 Main_IDirect3DDeviceImpl_7_CaptureStateBlock(LPDIRECT3DDEVICE7 iface
,
890 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
891 FIXME("(%p/%p)->(%08lx): stub!\n", This
, iface
, dwBlockHandle
);
896 Main_IDirect3DDeviceImpl_7_DeleteStateBlock(LPDIRECT3DDEVICE7 iface
,
899 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
900 FIXME("(%p/%p)->(%08lx): stub!\n", This
, iface
, dwBlockHandle
);
905 Main_IDirect3DDeviceImpl_7_CreateStateBlock(LPDIRECT3DDEVICE7 iface
,
906 D3DSTATEBLOCKTYPE d3dsbType
,
907 LPDWORD lpdwBlockHandle
)
909 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
910 FIXME("(%p/%p)->(%08x,%p): stub!\n", This
, iface
, d3dsbType
, lpdwBlockHandle
);
915 Main_IDirect3DDeviceImpl_7_Load(LPDIRECT3DDEVICE7 iface
,
916 LPDIRECTDRAWSURFACE7 lpDestTex
,
918 LPDIRECTDRAWSURFACE7 lpSrcTex
,
922 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
923 FIXME("(%p/%p)->(%p,%p,%p,%p,%08lx): Partially Implemented!\n", This
, iface
, lpDestTex
, lpDestPoint
, lpSrcTex
, lprcSrcRect
, dwFlags
);
924 IDirect3DTexture2_Load(COM_INTERFACE_CAST(IDirectDrawSurfaceImpl
, IDirectDrawSurface7
, IDirect3DTexture2
, lpDestTex
),
925 COM_INTERFACE_CAST(IDirectDrawSurfaceImpl
, IDirectDrawSurface7
, IDirect3DTexture2
, lpSrcTex
));
930 Main_IDirect3DDeviceImpl_7_LightEnable(LPDIRECT3DDEVICE7 iface
,
934 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
935 FIXME("(%p/%p)->(%08lx,%d): stub!\n", This
, iface
, dwLightIndex
, bEnable
);
940 Main_IDirect3DDeviceImpl_7_GetLightEnable(LPDIRECT3DDEVICE7 iface
,
944 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
945 TRACE("(%p/%p)->(%08lx,%p)\n", This
, iface
, dwLightIndex
, pbEnable
);
947 if (dwLightIndex
> MAX_LIGHTS
) *pbEnable
= 0;
948 else *pbEnable
= ((0x00000001 << dwLightIndex
) & This
->active_lights
) != 0;
950 TRACE(" returning %d.\n", *pbEnable
);
956 Main_IDirect3DDeviceImpl_7_SetClipPlane(LPDIRECT3DDEVICE7 iface
,
958 D3DVALUE
* pPlaneEquation
)
960 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
961 FIXME("(%p/%p)->(%08lx,%p): stub!\n", This
, iface
, dwIndex
, pPlaneEquation
);
966 Main_IDirect3DDeviceImpl_7_GetClipPlane(LPDIRECT3DDEVICE7 iface
, DWORD dwIndex
, D3DVALUE
* pPlaneEquation
)
968 ICOM_THIS(IDirect3DDeviceImpl
,iface
);
970 TRACE("(%p)->(%ld,%p)\n", This
, dwIndex
, pPlaneEquation
);
972 if (dwIndex
>=This
->max_clipping_planes
) {
973 return DDERR_INVALIDPARAMS
;
976 memcpy( pPlaneEquation
, This
->clipping_planes
[dwIndex
].plane
, sizeof(D3DVALUE
[4]));
982 Main_IDirect3DDeviceImpl_7_GetInfo(LPDIRECT3DDEVICE7 iface
,
984 LPVOID pDevInfoStruct
,
987 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice7
, iface
);
988 TRACE("(%p/%p)->(%08lx,%p,%08lx)\n", This
, iface
, dwDevInfoID
, pDevInfoStruct
, dwSize
);
990 if (TRACE_ON(ddraw
)) {
991 TRACE(" info requested : ");
992 switch (dwDevInfoID
) {
993 case D3DDEVINFOID_TEXTUREMANAGER
: TRACE("D3DDEVINFOID_TEXTUREMANAGER\n"); break;
994 case D3DDEVINFOID_D3DTEXTUREMANAGER
: TRACE("D3DDEVINFOID_D3DTEXTUREMANAGER\n"); break;
995 case D3DDEVINFOID_TEXTURING
: TRACE("D3DDEVINFOID_TEXTURING\n"); break;
996 default: ERR(" invalid flag !!!\n"); return DDERR_INVALIDPARAMS
;
1000 return S_FALSE
; /* According to MSDN, this is valid for a non-debug driver */
1004 Main_IDirect3DDeviceImpl_3_2T_1T_GetCaps(LPDIRECT3DDEVICE3 iface
,
1005 LPD3DDEVICEDESC lpD3DHWDevDesc
,
1006 LPD3DDEVICEDESC lpD3DHELDevDesc
)
1008 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice3
, iface
);
1009 FIXME("(%p/%p)->(%p,%p): stub!\n", This
, iface
, lpD3DHWDevDesc
, lpD3DHELDevDesc
);
1014 Main_IDirect3DDeviceImpl_3_2T_1T_GetStats(LPDIRECT3DDEVICE3 iface
,
1015 LPD3DSTATS lpD3DStats
)
1017 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice3
, iface
);
1018 FIXME("(%p/%p)->(%p): stub!\n", This
, iface
, lpD3DStats
);
1023 Main_IDirect3DDeviceImpl_3_2T_1T_AddViewport(LPDIRECT3DDEVICE3 iface
,
1024 LPDIRECT3DVIEWPORT3 lpDirect3DViewport3
)
1026 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice3
, iface
);
1027 IDirect3DViewportImpl
*lpDirect3DViewportImpl
= ICOM_OBJECT(IDirect3DViewportImpl
, IDirect3DViewport3
, lpDirect3DViewport3
);
1029 TRACE("(%p/%p)->(%p)\n", This
, iface
, lpDirect3DViewport3
);
1031 lpDirect3DViewportImpl
->next
= This
->viewport_list
;
1032 This
->viewport_list
= lpDirect3DViewportImpl
;
1038 Main_IDirect3DDeviceImpl_3_2T_1T_DeleteViewport(LPDIRECT3DDEVICE3 iface
,
1039 LPDIRECT3DVIEWPORT3 lpDirect3DViewport3
)
1041 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice3
, iface
);
1042 IDirect3DViewportImpl
*lpDirect3DViewportImpl
= ICOM_OBJECT(IDirect3DViewportImpl
, IDirect3DViewport3
, lpDirect3DViewport3
);
1043 IDirect3DViewportImpl
*cur_viewport
, *prev_viewport
= NULL
;
1045 TRACE("(%p/%p)->(%p)\n", This
, iface
, lpDirect3DViewport3
);
1047 cur_viewport
= This
->viewport_list
;
1048 while (cur_viewport
!= NULL
) {
1049 if (cur_viewport
== lpDirect3DViewportImpl
) {
1050 if (prev_viewport
== NULL
) This
->viewport_list
= cur_viewport
->next
;
1051 else prev_viewport
->next
= cur_viewport
->next
;
1052 /* TODO : add desactivate of the viewport and all associated lights... */
1055 prev_viewport
= cur_viewport
;
1056 cur_viewport
= cur_viewport
->next
;
1059 return DDERR_INVALIDPARAMS
;
1063 Main_IDirect3DDeviceImpl_3_2T_1T_NextViewport(LPDIRECT3DDEVICE3 iface
,
1064 LPDIRECT3DVIEWPORT3 lpDirect3DViewport3
,
1065 LPDIRECT3DVIEWPORT3
* lplpDirect3DViewport3
,
1068 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice3
, iface
);
1069 IDirect3DViewportImpl
*res
= NULL
;
1071 TRACE("(%p/%p)->(%p,%p,%08lx)\n", This
, iface
, lpDirect3DViewport3
, lplpDirect3DViewport3
, dwFlags
);
1074 case D3DNEXT_NEXT
: {
1075 IDirect3DViewportImpl
*lpDirect3DViewportImpl
= ICOM_OBJECT(IDirect3DViewportImpl
, IDirect3DViewport3
, lpDirect3DViewport3
);
1076 res
= lpDirect3DViewportImpl
->next
;
1078 case D3DNEXT_HEAD
: {
1079 res
= This
->viewport_list
;
1081 case D3DNEXT_TAIL
: {
1082 IDirect3DViewportImpl
*cur_viewport
= This
->viewport_list
;
1083 if (cur_viewport
!= NULL
) {
1084 while (cur_viewport
->next
!= NULL
) cur_viewport
= cur_viewport
->next
;
1089 *lplpDirect3DViewport3
= NULL
;
1090 return DDERR_INVALIDPARAMS
;
1092 *lplpDirect3DViewport3
= ICOM_INTERFACE(res
, IDirect3DViewport3
);
1097 Main_IDirect3DDeviceImpl_3_2T_SetCurrentViewport(LPDIRECT3DDEVICE3 iface
,
1098 LPDIRECT3DVIEWPORT3 lpDirect3DViewport3
)
1100 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice3
, iface
);
1101 TRACE("(%p/%p)->(%p)\n", This
, iface
, lpDirect3DViewport3
);
1103 /* Should check if the viewport was added or not */
1105 /* Set this viewport as the current viewport */
1106 This
->current_viewport
= ICOM_OBJECT(IDirect3DViewportImpl
, IDirect3DViewport3
, lpDirect3DViewport3
);
1108 /* Activate this viewport */
1109 This
->current_viewport
->active_device
= This
;
1110 This
->current_viewport
->activate(This
->current_viewport
);
1116 Main_IDirect3DDeviceImpl_3_2T_GetCurrentViewport(LPDIRECT3DDEVICE3 iface
,
1117 LPDIRECT3DVIEWPORT3
* lplpDirect3DViewport3
)
1119 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice3
, iface
);
1120 TRACE("(%p/%p)->(%p)\n", This
, iface
, lplpDirect3DViewport3
);
1122 *lplpDirect3DViewport3
= ICOM_INTERFACE(This
->current_viewport
, IDirect3DViewport3
);
1123 TRACE(" returning interface %p\n", *lplpDirect3DViewport3
);
1129 Main_IDirect3DDeviceImpl_3_Begin(LPDIRECT3DDEVICE3 iface
,
1130 D3DPRIMITIVETYPE d3dptPrimitiveType
,
1131 DWORD dwVertexTypeDesc
,
1134 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice3
, iface
);
1135 FIXME("(%p/%p)->(%08x,%08lx,%08lx): stub!\n", This
, iface
, d3dptPrimitiveType
, dwVertexTypeDesc
, dwFlags
);
1140 Main_IDirect3DDeviceImpl_3_BeginIndexed(LPDIRECT3DDEVICE3 iface
,
1141 D3DPRIMITIVETYPE d3dptPrimitiveType
,
1142 DWORD d3dvtVertexType
,
1144 DWORD dwNumVertices
,
1147 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice3
, iface
);
1148 FIXME("(%p/%p)->(%08x,%08lx,%p,%08lx,%08lx): stub!\n", This
, iface
, d3dptPrimitiveType
, d3dvtVertexType
, lpvVertices
, dwNumVertices
, dwFlags
);
1153 Main_IDirect3DDeviceImpl_3_2T_Vertex(LPDIRECT3DDEVICE3 iface
,
1154 LPVOID lpVertexType
)
1156 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice3
, iface
);
1157 FIXME("(%p/%p)->(%p): stub!\n", This
, iface
, lpVertexType
);
1162 Main_IDirect3DDeviceImpl_3_2T_Index(LPDIRECT3DDEVICE3 iface
,
1165 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice3
, iface
);
1166 FIXME("(%p/%p)->(%04x): stub!\n", This
, iface
, wVertexIndex
);
1171 Main_IDirect3DDeviceImpl_3_2T_End(LPDIRECT3DDEVICE3 iface
,
1174 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice3
, iface
);
1175 FIXME("(%p/%p)->(%08lx): stub!\n", This
, iface
, dwFlags
);
1180 Main_IDirect3DDeviceImpl_3_2T_GetLightState(LPDIRECT3DDEVICE3 iface
,
1181 D3DLIGHTSTATETYPE dwLightStateType
,
1182 LPDWORD lpdwLightState
)
1184 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice3
, iface
);
1185 FIXME("(%p/%p)->(%08x,%p): stub !\n", This
, iface
, dwLightStateType
, lpdwLightState
);
1190 Main_IDirect3DDeviceImpl_3_2T_SetLightState(LPDIRECT3DDEVICE3 iface
,
1191 D3DLIGHTSTATETYPE dwLightStateType
,
1194 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice3
, iface
);
1195 FIXME("(%p/%p)->(%08x,%08lx): stub!\n", This
, iface
, dwLightStateType
, dwLightState
);
1200 Main_IDirect3DDeviceImpl_2_1T_SwapTextureHandles(LPDIRECT3DDEVICE2 iface
,
1201 LPDIRECT3DTEXTURE2 lpD3DTex1
,
1202 LPDIRECT3DTEXTURE2 lpD3DTex2
)
1204 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice2
, iface
);
1205 IDirectDrawSurfaceImpl tmp
,*surf1
,*surf2
;
1206 TRACE("(%p/%p)->(%p,%p):\n", This
, iface
, lpD3DTex1
, lpD3DTex2
);
1208 surf1
= ICOM_OBJECT(IDirectDrawSurfaceImpl
,IDirect3DTexture2
,lpD3DTex1
);
1209 surf2
= ICOM_OBJECT(IDirectDrawSurfaceImpl
,IDirect3DTexture2
,lpD3DTex2
);
1218 Main_IDirect3DDeviceImpl_2_NextViewport(LPDIRECT3DDEVICE2 iface
,
1219 LPDIRECT3DVIEWPORT2 lpDirect3DViewport2
,
1220 LPDIRECT3DVIEWPORT2
* lplpDirect3DViewport2
,
1223 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice2
, iface
);
1224 FIXME("(%p/%p)->(%p,%p,%08lx): stub!\n", This
, iface
, lpDirect3DViewport2
, lplpDirect3DViewport2
, dwFlags
);
1229 Main_IDirect3DDeviceImpl_2_1T_EnumTextureFormats(LPDIRECT3DDEVICE2 iface
,
1230 LPD3DENUMTEXTUREFORMATSCALLBACK lpD3DEnumTextureProc
,
1233 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice2
, iface
);
1234 FIXME("(%p/%p)->(%p,%p): stub!\n", This
, iface
, lpD3DEnumTextureProc
, lpArg
);
1239 Main_IDirect3DDeviceImpl_2_Begin(LPDIRECT3DDEVICE2 iface
,
1240 D3DPRIMITIVETYPE d3dpt
,
1241 D3DVERTEXTYPE dwVertexTypeDesc
,
1244 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice2
, iface
);
1245 FIXME("(%p/%p)->(%08x,%08x,%08lx): stub!\n", This
, iface
, d3dpt
, dwVertexTypeDesc
, dwFlags
);
1250 Main_IDirect3DDeviceImpl_2_BeginIndexed(LPDIRECT3DDEVICE2 iface
,
1251 D3DPRIMITIVETYPE d3dptPrimitiveType
,
1252 D3DVERTEXTYPE d3dvtVertexType
,
1254 DWORD dwNumVertices
,
1257 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice2
, iface
);
1258 FIXME("(%p/%p)->(%08x,%08x,%p,%08lx,%08lx): stub!\n", This
, iface
, d3dptPrimitiveType
, d3dvtVertexType
, lpvVertices
, dwNumVertices
, dwFlags
);
1263 Main_IDirect3DDeviceImpl_2_DrawPrimitive(LPDIRECT3DDEVICE2 iface
,
1264 D3DPRIMITIVETYPE d3dptPrimitiveType
,
1265 D3DVERTEXTYPE d3dvtVertexType
,
1267 DWORD dwVertexCount
,
1270 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice2
, iface
);
1271 FIXME("(%p/%p)->(%08x,%08x,%p,%08lx,%08lx): stub!\n", This
, iface
, d3dptPrimitiveType
, d3dvtVertexType
, lpvVertices
, dwVertexCount
, dwFlags
);
1276 Main_IDirect3DDeviceImpl_2_DrawIndexedPrimitive(LPDIRECT3DDEVICE2 iface
,
1277 D3DPRIMITIVETYPE d3dptPrimitiveType
,
1278 D3DVERTEXTYPE d3dvtVertexType
,
1280 DWORD dwVertexCount
,
1285 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice2
, iface
);
1286 FIXME("(%p/%p)->(%08x,%08x,%p,%08lx,%p,%08lx,%08lx): stub!\n", This
, iface
, d3dptPrimitiveType
, d3dvtVertexType
, lpvVertices
, dwVertexCount
, dwIndices
, dwIndexCount
, dwFlags
);
1291 Main_IDirect3DDeviceImpl_1_Initialize(LPDIRECT3DDEVICE iface
,
1292 LPDIRECT3D lpDirect3D
,
1294 LPD3DDEVICEDESC lpD3DDVDesc
)
1296 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice
, iface
);
1297 FIXME("(%p/%p)->(%p,%p,%p): stub!\n", This
, iface
, lpDirect3D
, lpGUID
, lpD3DDVDesc
);
1302 Main_IDirect3DDeviceImpl_1_CreateExecuteBuffer(LPDIRECT3DDEVICE iface
,
1303 LPD3DEXECUTEBUFFERDESC lpDesc
,
1304 LPDIRECT3DEXECUTEBUFFER
* lplpDirect3DExecuteBuffer
,
1305 IUnknown
* pUnkOuter
)
1307 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice
, iface
);
1308 FIXME("(%p/%p)->(%p,%p,%p): stub!\n", This
, iface
, lpDesc
, lplpDirect3DExecuteBuffer
, pUnkOuter
);
1313 Main_IDirect3DDeviceImpl_1_Execute(LPDIRECT3DDEVICE iface
,
1314 LPDIRECT3DEXECUTEBUFFER lpDirect3DExecuteBuffer
,
1315 LPDIRECT3DVIEWPORT lpDirect3DViewport
,
1318 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice
, iface
);
1319 IDirect3DExecuteBufferImpl
*lpDirect3DExecuteBufferImpl
= ICOM_OBJECT(IDirect3DExecuteBufferImpl
, IDirect3DExecuteBuffer
, lpDirect3DExecuteBuffer
);
1320 IDirect3DViewportImpl
*lpDirect3DViewportImpl
= ICOM_OBJECT(IDirect3DViewportImpl
, IDirect3DViewport3
, lpDirect3DViewport
);
1322 TRACE("(%p/%p)->(%p,%p,%08lx)\n", This
, iface
, lpDirect3DExecuteBuffer
, lpDirect3DViewport
, dwFlags
);
1324 /* Put this as the default context */
1327 lpDirect3DExecuteBufferImpl
->execute(lpDirect3DExecuteBufferImpl
, This
, lpDirect3DViewportImpl
);
1333 Main_IDirect3DDeviceImpl_1_NextViewport(LPDIRECT3DDEVICE iface
,
1334 LPDIRECT3DVIEWPORT lpDirect3DViewport
,
1335 LPDIRECT3DVIEWPORT
* lplpDirect3DViewport
,
1338 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice
, iface
);
1339 FIXME("(%p/%p)->(%p,%p,%08lx): stub!\n", This
, iface
, lpDirect3DViewport
, lplpDirect3DViewport
, dwFlags
);
1344 Main_IDirect3DDeviceImpl_1_Pick(LPDIRECT3DDEVICE iface
,
1345 LPDIRECT3DEXECUTEBUFFER lpDirect3DExecuteBuffer
,
1346 LPDIRECT3DVIEWPORT lpDirect3DViewport
,
1350 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice
, iface
);
1351 FIXME("(%p/%p)->(%p,%p,%08lx,%p): stub!\n", This
, iface
, lpDirect3DExecuteBuffer
, lpDirect3DViewport
, dwFlags
, lpRect
);
1356 Main_IDirect3DDeviceImpl_1_GetPickRecords(LPDIRECT3DDEVICE iface
,
1358 LPD3DPICKRECORD lpD3DPickRec
)
1360 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice
, iface
);
1361 FIXME("(%p/%p)->(%p,%p): stub!\n", This
, iface
, lpCount
, lpD3DPickRec
);
1366 Main_IDirect3DDeviceImpl_1_CreateMatrix(LPDIRECT3DDEVICE iface
,
1367 LPD3DMATRIXHANDLE lpD3DMatHandle
)
1369 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice
, iface
);
1370 TRACE("(%p/%p)->(%p)\n", This
, iface
, lpD3DMatHandle
);
1372 *lpD3DMatHandle
= (D3DMATRIXHANDLE
) HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY
, sizeof(D3DMATRIX
));
1373 TRACE(" returning matrix handle %p\n", (void *) *lpD3DMatHandle
);
1379 Main_IDirect3DDeviceImpl_1_SetMatrix(LPDIRECT3DDEVICE iface
,
1380 D3DMATRIXHANDLE D3DMatHandle
,
1381 LPD3DMATRIX lpD3DMatrix
)
1383 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice
, iface
);
1384 TRACE("(%p/%p)->(%08lx,%p)\n", This
, iface
, (DWORD
) D3DMatHandle
, lpD3DMatrix
);
1386 if (TRACE_ON(ddraw
)) {
1387 dump_D3DMATRIX(lpD3DMatrix
);
1389 *((D3DMATRIX
*) D3DMatHandle
) = *lpD3DMatrix
;
1395 Main_IDirect3DDeviceImpl_1_GetMatrix(LPDIRECT3DDEVICE iface
,
1396 D3DMATRIXHANDLE D3DMatHandle
,
1397 LPD3DMATRIX lpD3DMatrix
)
1399 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice
, iface
);
1400 TRACE("(%p/%p)->(%08lx,%p)\n", This
, iface
, (DWORD
) D3DMatHandle
, lpD3DMatrix
);
1402 *lpD3DMatrix
= *((D3DMATRIX
*) D3DMatHandle
);
1408 Main_IDirect3DDeviceImpl_1_DeleteMatrix(LPDIRECT3DDEVICE iface
,
1409 D3DMATRIXHANDLE D3DMatHandle
)
1411 ICOM_THIS_FROM(IDirect3DDeviceImpl
, IDirect3DDevice
, iface
);
1412 TRACE("(%p/%p)->(%08lx)\n", This
, iface
, (DWORD
) D3DMatHandle
);
1414 HeapFree(GetProcessHeap(), 0, (void *) D3DMatHandle
);
1420 Thunk_IDirect3DDeviceImpl_3_QueryInterface(LPDIRECT3DDEVICE3 iface
,
1424 TRACE("(%p)->(%s,%p) thunking to IDirect3DDevice7 interface.\n", iface
, debugstr_guid(riid
), obp
);
1425 return IDirect3DDevice7_QueryInterface(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice3
, IDirect3DDevice7
, iface
),
1431 Thunk_IDirect3DDeviceImpl_2_QueryInterface(LPDIRECT3DDEVICE2 iface
,
1435 TRACE("(%p)->(%s,%p) thunking to IDirect3DDevice7 interface.\n", iface
, debugstr_guid(riid
), obp
);
1436 return IDirect3DDevice7_QueryInterface(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice2
, IDirect3DDevice7
, iface
),
1442 Thunk_IDirect3DDeviceImpl_1_QueryInterface(LPDIRECT3DDEVICE iface
,
1446 TRACE("(%p)->(%s,%p) thunking to IDirect3DDevice7 interface.\n", iface
, debugstr_guid(riid
), obp
);
1447 return IDirect3DDevice7_QueryInterface(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice
, IDirect3DDevice7
, iface
),
1453 Thunk_IDirect3DDeviceImpl_3_AddRef(LPDIRECT3DDEVICE3 iface
)
1455 TRACE("(%p)->() thunking to IDirect3DDevice7 interface.\n", iface
);
1456 return IDirect3DDevice7_AddRef(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice3
, IDirect3DDevice7
, iface
));
1460 Thunk_IDirect3DDeviceImpl_2_AddRef(LPDIRECT3DDEVICE2 iface
)
1462 TRACE("(%p)->() thunking to IDirect3DDevice7 interface.\n", iface
);
1463 return IDirect3DDevice7_AddRef(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice2
, IDirect3DDevice7
, iface
));
1467 Thunk_IDirect3DDeviceImpl_1_AddRef(LPDIRECT3DDEVICE iface
)
1469 TRACE("(%p)->() thunking to IDirect3DDevice7 interface.\n", iface
);
1470 return IDirect3DDevice7_AddRef(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice
, IDirect3DDevice7
, iface
));
1474 Thunk_IDirect3DDeviceImpl_3_Release(LPDIRECT3DDEVICE3 iface
)
1476 TRACE("(%p)->() thunking to IDirect3DDevice7 interface.\n", iface
);
1477 return IDirect3DDevice7_Release(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice3
, IDirect3DDevice7
, iface
));
1481 Thunk_IDirect3DDeviceImpl_2_Release(LPDIRECT3DDEVICE2 iface
)
1483 TRACE("(%p)->() thunking to IDirect3DDevice7 interface.\n", iface
);
1484 return IDirect3DDevice7_Release(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice2
, IDirect3DDevice7
, iface
));
1488 Thunk_IDirect3DDeviceImpl_1_Release(LPDIRECT3DDEVICE iface
)
1490 TRACE("(%p)->() thunking to IDirect3DDevice7 interface.\n", iface
);
1491 return IDirect3DDevice7_Release(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice
, IDirect3DDevice7
, iface
));
1495 Thunk_IDirect3DDeviceImpl_2_AddViewport(LPDIRECT3DDEVICE2 iface
,
1496 LPDIRECT3DVIEWPORT2 lpDirect3DViewport2
)
1498 TRACE("(%p)->(%p) thunking to IDirect3DDevice3 interface.\n", iface
, lpDirect3DViewport2
);
1499 return IDirect3DDevice3_AddViewport(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice2
, IDirect3DDevice3
, iface
),
1500 (LPDIRECT3DVIEWPORT3
) lpDirect3DViewport2
/* No need to cast here as all interfaces are equivalent */);
1504 Thunk_IDirect3DDeviceImpl_1_AddViewport(LPDIRECT3DDEVICE iface
,
1505 LPDIRECT3DVIEWPORT lpDirect3DViewport
)
1507 TRACE("(%p)->(%p) thunking to IDirect3DDevice3 interface.\n", iface
, lpDirect3DViewport
);
1508 return IDirect3DDevice3_AddViewport(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice
, IDirect3DDevice3
, iface
),
1509 (LPDIRECT3DVIEWPORT3
) lpDirect3DViewport
/* No need to cast here as all interfaces are equivalent */);
1513 Thunk_IDirect3DDeviceImpl_2_DeleteViewport(LPDIRECT3DDEVICE2 iface
,
1514 LPDIRECT3DVIEWPORT2 lpDirect3DViewport2
)
1516 TRACE("(%p)->(%p) thunking to IDirect3DDevice3 interface.\n", iface
, lpDirect3DViewport2
);
1517 return IDirect3DDevice3_DeleteViewport(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice2
, IDirect3DDevice3
, iface
),
1518 (LPDIRECT3DVIEWPORT3
) lpDirect3DViewport2
/* No need to cast here as all interfaces are equivalent */);
1522 Thunk_IDirect3DDeviceImpl_1_DeleteViewport(LPDIRECT3DDEVICE iface
,
1523 LPDIRECT3DVIEWPORT lpDirect3DViewport
)
1525 TRACE("(%p)->(%p) thunking to IDirect3DDevice3 interface.\n", iface
, lpDirect3DViewport
);
1526 return IDirect3DDevice3_DeleteViewport(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice
, IDirect3DDevice3
, iface
),
1527 (LPDIRECT3DVIEWPORT3
) lpDirect3DViewport
/* No need to cast here as all interfaces are equivalent */);
1531 Thunk_IDirect3DDeviceImpl_2_NextViewport(LPDIRECT3DDEVICE3 iface
,
1532 LPDIRECT3DVIEWPORT2 lpDirect3DViewport2
,
1533 LPDIRECT3DVIEWPORT2
* lplpDirect3DViewport2
,
1536 TRACE("(%p)->(%p,%p,%08lx) thunking to IDirect3DDevice3 interface.\n", iface
, lpDirect3DViewport2
, lplpDirect3DViewport2
, dwFlags
);
1537 return IDirect3DDevice3_NextViewport(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice2
, IDirect3DDevice3
, iface
),
1538 (LPDIRECT3DVIEWPORT3
) lpDirect3DViewport2
/* No need to cast here as all interfaces are equivalent */,
1539 (LPDIRECT3DVIEWPORT3
*) lplpDirect3DViewport2
,
1544 Thunk_IDirect3DDeviceImpl_1_NextViewport(LPDIRECT3DDEVICE3 iface
,
1545 LPDIRECT3DVIEWPORT lpDirect3DViewport
,
1546 LPDIRECT3DVIEWPORT
* lplpDirect3DViewport
,
1549 TRACE("(%p)->(%p,%p,%08lx) thunking to IDirect3DDevice3 interface.\n", iface
, lpDirect3DViewport
, lplpDirect3DViewport
, dwFlags
);
1550 return IDirect3DDevice3_NextViewport(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice
, IDirect3DDevice3
, iface
),
1551 (LPDIRECT3DVIEWPORT3
) lpDirect3DViewport
/* No need to cast here as all interfaces are equivalent */,
1552 (LPDIRECT3DVIEWPORT3
*) lplpDirect3DViewport
,
1557 Thunk_IDirect3DDeviceImpl_3_GetDirect3D(LPDIRECT3DDEVICE3 iface
,
1558 LPDIRECT3D3
* lplpDirect3D3
)
1561 LPDIRECT3D7 ret_ptr
;
1563 TRACE("(%p)->(%p) thunking to IDirect3DDevice7 interface.\n", iface
, lplpDirect3D3
);
1564 ret
= IDirect3DDevice7_GetDirect3D(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice3
, IDirect3DDevice7
, iface
),
1566 *lplpDirect3D3
= COM_INTERFACE_CAST(IDirectDrawImpl
, IDirect3D7
, IDirect3D3
, ret_ptr
);
1567 TRACE(" returning interface %p\n", *lplpDirect3D3
);
1572 Thunk_IDirect3DDeviceImpl_2_GetDirect3D(LPDIRECT3DDEVICE2 iface
,
1573 LPDIRECT3D2
* lplpDirect3D2
)
1576 LPDIRECT3D7 ret_ptr
;
1578 TRACE("(%p)->(%p) thunking to IDirect3DDevice7 interface.\n", iface
, lplpDirect3D2
);
1579 ret
= IDirect3DDevice7_GetDirect3D(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice2
, IDirect3DDevice7
, iface
),
1581 *lplpDirect3D2
= COM_INTERFACE_CAST(IDirectDrawImpl
, IDirect3D7
, IDirect3D2
, ret_ptr
);
1582 TRACE(" returning interface %p\n", *lplpDirect3D2
);
1587 Thunk_IDirect3DDeviceImpl_1_GetDirect3D(LPDIRECT3DDEVICE iface
,
1588 LPDIRECT3D
* lplpDirect3D
)
1591 LPDIRECT3D7 ret_ptr
;
1593 TRACE("(%p)->(%p) thunking to IDirect3DDevice7 interface.\n", iface
, lplpDirect3D
);
1594 ret
= IDirect3DDevice7_GetDirect3D(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice
, IDirect3DDevice7
, iface
),
1596 *lplpDirect3D
= COM_INTERFACE_CAST(IDirectDrawImpl
, IDirect3D7
, IDirect3D
, ret_ptr
);
1597 TRACE(" returning interface %p\n", *lplpDirect3D
);
1602 Thunk_IDirect3DDeviceImpl_2_SetCurrentViewport(LPDIRECT3DDEVICE2 iface
,
1603 LPDIRECT3DVIEWPORT2 lpDirect3DViewport2
)
1605 TRACE("(%p)->(%p) thunking to IDirect3DDevice3 interface.\n", iface
, lpDirect3DViewport2
);
1606 return IDirect3DDevice3_SetCurrentViewport(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice2
, IDirect3DDevice3
, iface
),
1607 (LPDIRECT3DVIEWPORT3
) lpDirect3DViewport2
/* No need to cast here as all interfaces are equivalent */);
1611 Thunk_IDirect3DDeviceImpl_2_GetCurrentViewport(LPDIRECT3DDEVICE2 iface
,
1612 LPDIRECT3DVIEWPORT2
* lplpDirect3DViewport2
)
1614 TRACE("(%p)->(%p) thunking to IDirect3DDevice3 interface.\n", iface
, lplpDirect3DViewport2
);
1615 return IDirect3DDevice3_GetCurrentViewport(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice2
, IDirect3DDevice3
, iface
),
1616 (LPDIRECT3DVIEWPORT3
*) lplpDirect3DViewport2
/* No need to cast here as all interfaces are equivalent */);
1620 Thunk_IDirect3DDeviceImpl_3_EnumTextureFormats(LPDIRECT3DDEVICE3 iface
,
1621 LPD3DENUMPIXELFORMATSCALLBACK lpD3DEnumPixelProc
,
1624 TRACE("(%p)->(%p,%p) thunking to IDirect3DDevice7 interface.\n", iface
, lpD3DEnumPixelProc
, lpArg
);
1625 return IDirect3DDevice7_EnumTextureFormats(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice3
, IDirect3DDevice7
, iface
),
1631 Thunk_IDirect3DDeviceImpl_3_BeginScene(LPDIRECT3DDEVICE3 iface
)
1633 TRACE("(%p)->() thunking to IDirect3DDevice7 interface.\n", iface
);
1634 return IDirect3DDevice7_BeginScene(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice3
, IDirect3DDevice7
, iface
));
1638 Thunk_IDirect3DDeviceImpl_2_BeginScene(LPDIRECT3DDEVICE2 iface
)
1640 TRACE("(%p)->() thunking to IDirect3DDevice7 interface.\n", iface
);
1641 return IDirect3DDevice7_BeginScene(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice2
, IDirect3DDevice7
, iface
));
1645 Thunk_IDirect3DDeviceImpl_1_BeginScene(LPDIRECT3DDEVICE iface
)
1647 TRACE("(%p)->() thunking to IDirect3DDevice7 interface.\n", iface
);
1648 return IDirect3DDevice7_BeginScene(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice
, IDirect3DDevice7
, iface
));
1652 Thunk_IDirect3DDeviceImpl_3_EndScene(LPDIRECT3DDEVICE3 iface
)
1654 TRACE("(%p)->() thunking to IDirect3DDevice7 interface.\n", iface
);
1655 return IDirect3DDevice7_EndScene(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice3
, IDirect3DDevice7
, iface
));
1659 Thunk_IDirect3DDeviceImpl_2_EndScene(LPDIRECT3DDEVICE2 iface
)
1661 TRACE("(%p)->() thunking to IDirect3DDevice7 interface.\n", iface
);
1662 return IDirect3DDevice7_EndScene(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice2
, IDirect3DDevice7
, iface
));
1666 Thunk_IDirect3DDeviceImpl_1_EndScene(LPDIRECT3DDEVICE iface
)
1668 TRACE("(%p)->() thunking to IDirect3DDevice7 interface.\n", iface
);
1669 return IDirect3DDevice7_EndScene(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice
, IDirect3DDevice7
, iface
));
1673 Thunk_IDirect3DDeviceImpl_3_SetTransform(LPDIRECT3DDEVICE3 iface
,
1674 D3DTRANSFORMSTATETYPE dtstTransformStateType
,
1675 LPD3DMATRIX lpD3DMatrix
)
1677 TRACE("(%p)->(%08x,%p) thunking to IDirect3DDevice7 interface.\n", iface
, dtstTransformStateType
, lpD3DMatrix
);
1678 return IDirect3DDevice7_SetTransform(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice3
, IDirect3DDevice7
, iface
),
1679 dtstTransformStateType
,
1684 Thunk_IDirect3DDeviceImpl_2_SetTransform(LPDIRECT3DDEVICE2 iface
,
1685 D3DTRANSFORMSTATETYPE dtstTransformStateType
,
1686 LPD3DMATRIX lpD3DMatrix
)
1688 TRACE("(%p)->(%08x,%p) thunking to IDirect3DDevice7 interface.\n", iface
, dtstTransformStateType
, lpD3DMatrix
);
1689 return IDirect3DDevice7_SetTransform(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice2
, IDirect3DDevice7
, iface
),
1690 dtstTransformStateType
,
1695 Thunk_IDirect3DDeviceImpl_3_GetTransform(LPDIRECT3DDEVICE3 iface
,
1696 D3DTRANSFORMSTATETYPE dtstTransformStateType
,
1697 LPD3DMATRIX lpD3DMatrix
)
1699 TRACE("(%p)->(%08x,%p) thunking to IDirect3DDevice7 interface.\n", iface
, dtstTransformStateType
, lpD3DMatrix
);
1700 return IDirect3DDevice7_GetTransform(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice3
, IDirect3DDevice7
, iface
),
1701 dtstTransformStateType
,
1706 Thunk_IDirect3DDeviceImpl_2_GetTransform(LPDIRECT3DDEVICE2 iface
,
1707 D3DTRANSFORMSTATETYPE dtstTransformStateType
,
1708 LPD3DMATRIX lpD3DMatrix
)
1710 TRACE("(%p)->(%08x,%p) thunking to IDirect3DDevice7 interface.\n", iface
, dtstTransformStateType
, lpD3DMatrix
);
1711 return IDirect3DDevice7_GetTransform(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice2
, IDirect3DDevice7
, iface
),
1712 dtstTransformStateType
,
1717 Thunk_IDirect3DDeviceImpl_3_MultiplyTransform(LPDIRECT3DDEVICE3 iface
,
1718 D3DTRANSFORMSTATETYPE dtstTransformStateType
,
1719 LPD3DMATRIX lpD3DMatrix
)
1721 TRACE("(%p)->(%08x,%p) thunking to IDirect3DDevice7 interface.\n", iface
, dtstTransformStateType
, lpD3DMatrix
);
1722 return IDirect3DDevice7_MultiplyTransform(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice3
, IDirect3DDevice7
, iface
),
1723 dtstTransformStateType
,
1728 Thunk_IDirect3DDeviceImpl_2_MultiplyTransform(LPDIRECT3DDEVICE2 iface
,
1729 D3DTRANSFORMSTATETYPE dtstTransformStateType
,
1730 LPD3DMATRIX lpD3DMatrix
)
1732 TRACE("(%p)->(%08x,%p) thunking to IDirect3DDevice7 interface.\n", iface
, dtstTransformStateType
, lpD3DMatrix
);
1733 return IDirect3DDevice7_MultiplyTransform(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice2
, IDirect3DDevice7
, iface
),
1734 dtstTransformStateType
,
1739 Thunk_IDirect3DDeviceImpl_3_SetRenderState(LPDIRECT3DDEVICE3 iface
,
1740 D3DRENDERSTATETYPE dwRenderStateType
,
1741 DWORD dwRenderState
)
1743 TRACE("(%p)->(%08x,%08lx) thunking to IDirect3DDevice7 interface.\n", iface
, dwRenderStateType
, dwRenderState
);
1744 return IDirect3DDevice7_SetRenderState(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice3
, IDirect3DDevice7
, iface
),
1750 Thunk_IDirect3DDeviceImpl_2_SetRenderState(LPDIRECT3DDEVICE2 iface
,
1751 D3DRENDERSTATETYPE dwRenderStateType
,
1752 DWORD dwRenderState
)
1754 TRACE("(%p)->(%08x,%08lx) thunking to IDirect3DDevice7 interface.\n", iface
, dwRenderStateType
, dwRenderState
);
1755 return IDirect3DDevice7_SetRenderState(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice2
, IDirect3DDevice7
, iface
),
1761 Thunk_IDirect3DDeviceImpl_3_GetRenderState(LPDIRECT3DDEVICE3 iface
,
1762 D3DRENDERSTATETYPE dwRenderStateType
,
1763 LPDWORD lpdwRenderState
)
1765 TRACE("(%p)->(%08x,%p) thunking to IDirect3DDevice7 interface.\n", iface
, dwRenderStateType
, lpdwRenderState
);
1766 return IDirect3DDevice7_GetRenderState(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice3
, IDirect3DDevice7
, iface
),
1772 Thunk_IDirect3DDeviceImpl_2_GetRenderState(LPDIRECT3DDEVICE2 iface
,
1773 D3DRENDERSTATETYPE dwRenderStateType
,
1774 LPDWORD lpdwRenderState
)
1776 TRACE("(%p)->(%08x,%p) thunking to IDirect3DDevice7 interface.\n", iface
, dwRenderStateType
, lpdwRenderState
);
1777 return IDirect3DDevice7_GetRenderState(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice2
, IDirect3DDevice7
, iface
),
1783 Thunk_IDirect3DDeviceImpl_3_DrawPrimitive(LPDIRECT3DDEVICE3 iface
,
1784 D3DPRIMITIVETYPE d3dptPrimitiveType
,
1785 DWORD d3dvtVertexType
,
1787 DWORD dwVertexCount
,
1790 TRACE("(%p)->(%08x,%08lx,%p,%08lx,%08lx) thunking to IDirect3DDevice7 interface.\n", iface
, d3dptPrimitiveType
, d3dvtVertexType
, lpvVertices
, dwVertexCount
, dwFlags
);
1791 return IDirect3DDevice7_DrawPrimitive(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice3
, IDirect3DDevice7
, iface
),
1800 Thunk_IDirect3DDeviceImpl_3_DrawIndexedPrimitive(LPDIRECT3DDEVICE3 iface
,
1801 D3DPRIMITIVETYPE d3dptPrimitiveType
,
1802 DWORD d3dvtVertexType
,
1804 DWORD dwVertexCount
,
1809 TRACE("(%p)->(%08x,%08lx,%p,%08lx,%p,%08lx,%08lx) thunking to IDirect3DDevice7 interface.\n", iface
, d3dptPrimitiveType
, d3dvtVertexType
, lpvVertices
, dwVertexCount
, dwIndices
, dwIndexCount
, dwFlags
);
1810 return IDirect3DDevice7_DrawIndexedPrimitive(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice3
, IDirect3DDevice7
, iface
),
1821 Thunk_IDirect3DDeviceImpl_3_SetClipStatus(LPDIRECT3DDEVICE3 iface
,
1822 LPD3DCLIPSTATUS lpD3DClipStatus
)
1824 TRACE("(%p)->(%p) thunking to IDirect3DDevice7 interface.\n", iface
, lpD3DClipStatus
);
1825 return IDirect3DDevice7_SetClipStatus(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice3
, IDirect3DDevice7
, iface
),
1830 Thunk_IDirect3DDeviceImpl_2_SetClipStatus(LPDIRECT3DDEVICE2 iface
,
1831 LPD3DCLIPSTATUS lpD3DClipStatus
)
1833 TRACE("(%p)->(%p) thunking to IDirect3DDevice7 interface.\n", iface
, lpD3DClipStatus
);
1834 return IDirect3DDevice7_SetClipStatus(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice2
, IDirect3DDevice7
, iface
),
1839 Thunk_IDirect3DDeviceImpl_3_GetClipStatus(LPDIRECT3DDEVICE3 iface
,
1840 LPD3DCLIPSTATUS lpD3DClipStatus
)
1842 TRACE("(%p)->(%p) thunking to IDirect3DDevice7 interface.\n", iface
, lpD3DClipStatus
);
1843 return IDirect3DDevice7_GetClipStatus(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice3
, IDirect3DDevice7
, iface
),
1848 Thunk_IDirect3DDeviceImpl_2_GetClipStatus(LPDIRECT3DDEVICE2 iface
,
1849 LPD3DCLIPSTATUS lpD3DClipStatus
)
1851 TRACE("(%p)->(%p) thunking to IDirect3DDevice7 interface.\n", iface
, lpD3DClipStatus
);
1852 return IDirect3DDevice7_GetClipStatus(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice2
, IDirect3DDevice7
, iface
),
1857 Thunk_IDirect3DDeviceImpl_3_DrawPrimitiveStrided(LPDIRECT3DDEVICE3 iface
,
1858 D3DPRIMITIVETYPE d3dptPrimitiveType
,
1860 LPD3DDRAWPRIMITIVESTRIDEDDATA lpD3DDrawPrimStrideData
,
1861 DWORD dwVertexCount
,
1864 TRACE("(%p)->(%08x,%08lx,%p,%08lx,%08lx) thunking to IDirect3DDevice7 interface.\n", iface
, d3dptPrimitiveType
, dwVertexType
, lpD3DDrawPrimStrideData
, dwVertexCount
, dwFlags
);
1865 return IDirect3DDevice7_DrawPrimitiveStrided(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice3
, IDirect3DDevice7
, iface
),
1868 lpD3DDrawPrimStrideData
,
1874 Thunk_IDirect3DDeviceImpl_3_DrawIndexedPrimitiveStrided(LPDIRECT3DDEVICE3 iface
,
1875 D3DPRIMITIVETYPE d3dptPrimitiveType
,
1877 LPD3DDRAWPRIMITIVESTRIDEDDATA lpD3DDrawPrimStrideData
,
1878 DWORD dwVertexCount
,
1883 TRACE("(%p)->(%08x,%08lx,%p,%08lx,%p,%08lx,%08lx) thunking to IDirect3DDevice7 interface.\n", iface
, d3dptPrimitiveType
, dwVertexType
, lpD3DDrawPrimStrideData
, dwVertexCount
, lpIndex
, dwIndexCount
, dwFlags
);
1884 return IDirect3DDevice7_DrawIndexedPrimitiveStrided(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice3
, IDirect3DDevice7
, iface
),
1887 lpD3DDrawPrimStrideData
,
1895 Thunk_IDirect3DDeviceImpl_3_ComputeSphereVisibility(LPDIRECT3DDEVICE3 iface
,
1896 LPD3DVECTOR lpCenters
,
1900 LPDWORD lpdwReturnValues
)
1902 TRACE("(%p)->(%p,%p,%08lx,%08lx,%p) thunking to IDirect3DDevice7 interface.\n", iface
, lpCenters
, lpRadii
, dwNumSpheres
, dwFlags
, lpdwReturnValues
);
1903 return IDirect3DDevice7_ComputeSphereVisibility(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice3
, IDirect3DDevice7
, iface
),
1912 Thunk_IDirect3DDeviceImpl_3_GetTextureStageState(LPDIRECT3DDEVICE3 iface
,
1914 D3DTEXTURESTAGESTATETYPE d3dTexStageStateType
,
1917 TRACE("(%p)->(%08lx,%08x,%p) thunking to IDirect3DDevice7 interface.\n", iface
, dwStage
, d3dTexStageStateType
, lpdwState
);
1918 return IDirect3DDevice7_GetTextureStageState(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice3
, IDirect3DDevice7
, iface
),
1920 d3dTexStageStateType
,
1925 Thunk_IDirect3DDeviceImpl_3_SetTextureStageState(LPDIRECT3DDEVICE3 iface
,
1927 D3DTEXTURESTAGESTATETYPE d3dTexStageStateType
,
1930 TRACE("(%p)->(%08lx,%08x,%08lx) thunking to IDirect3DDevice7 interface.\n", iface
, dwStage
, d3dTexStageStateType
, dwState
);
1931 return IDirect3DDevice7_SetTextureStageState(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice3
, IDirect3DDevice7
, iface
),
1933 d3dTexStageStateType
,
1938 Thunk_IDirect3DDeviceImpl_3_ValidateDevice(LPDIRECT3DDEVICE3 iface
,
1941 TRACE("(%p)->(%p) thunking to IDirect3DDevice7 interface.\n", iface
, lpdwPasses
);
1942 return IDirect3DDevice7_ValidateDevice(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice3
, IDirect3DDevice7
, iface
),
1947 Thunk_IDirect3DDeviceImpl_2_GetCaps(LPDIRECT3DDEVICE2 iface
,
1948 LPD3DDEVICEDESC lpD3DHWDevDesc
,
1949 LPD3DDEVICEDESC lpD3DHELDevDesc
)
1951 TRACE("(%p)->(%p,%p) thunking to IDirect3DDevice3 interface.\n", iface
, lpD3DHWDevDesc
, lpD3DHELDevDesc
);
1952 return IDirect3DDevice3_GetCaps(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice2
, IDirect3DDevice3
, iface
),
1958 Thunk_IDirect3DDeviceImpl_1_GetCaps(LPDIRECT3DDEVICE iface
,
1959 LPD3DDEVICEDESC lpD3DHWDevDesc
,
1960 LPD3DDEVICEDESC lpD3DHELDevDesc
)
1962 TRACE("(%p)->(%p,%p) thunking to IDirect3DDevice3 interface.\n", iface
, lpD3DHWDevDesc
, lpD3DHELDevDesc
);
1963 return IDirect3DDevice3_GetCaps(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice
, IDirect3DDevice3
, iface
),
1969 Thunk_IDirect3DDeviceImpl_1_SwapTextureHandles(LPDIRECT3DDEVICE iface
,
1970 LPDIRECT3DTEXTURE lpD3DTex1
,
1971 LPDIRECT3DTEXTURE lpD3DTex2
)
1973 TRACE("(%p)->(%p,%p) thunking to IDirect3DDevice2 interface.\n", iface
, lpD3DTex1
, lpD3DTex2
);
1974 return IDirect3DDevice2_SwapTextureHandles(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice
, IDirect3DDevice2
, iface
),
1975 COM_INTERFACE_CAST(IDirectDrawSurfaceImpl
, IDirect3DTexture
, IDirect3DTexture2
, lpD3DTex1
),
1976 COM_INTERFACE_CAST(IDirectDrawSurfaceImpl
, IDirect3DTexture
, IDirect3DTexture2
, lpD3DTex2
));
1980 Thunk_IDirect3DDeviceImpl_2_GetStats(LPDIRECT3DDEVICE2 iface
,
1981 LPD3DSTATS lpD3DStats
)
1983 TRACE("(%p)->(%p) thunking to IDirect3DDevice3 interface.\n", iface
, lpD3DStats
);
1984 return IDirect3DDevice3_GetStats(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice2
, IDirect3DDevice3
, iface
),
1989 Thunk_IDirect3DDeviceImpl_1_GetStats(LPDIRECT3DDEVICE iface
,
1990 LPD3DSTATS lpD3DStats
)
1992 TRACE("(%p)->(%p) thunking to IDirect3DDevice3 interface.\n", iface
, lpD3DStats
);
1993 return IDirect3DDevice3_GetStats(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice
, IDirect3DDevice3
, iface
),
1998 Thunk_IDirect3DDeviceImpl_3_SetRenderTarget(LPDIRECT3DDEVICE3 iface
,
1999 LPDIRECTDRAWSURFACE4 lpNewRenderTarget
,
2002 TRACE("(%p)->(%p,%08lx) thunking to IDirect3DDevice7 interface.\n", iface
, lpNewRenderTarget
, dwFlags
);
2003 return IDirect3DDevice7_SetRenderTarget(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice3
, IDirect3DDevice7
, iface
),
2004 (LPDIRECTDRAWSURFACE7
) lpNewRenderTarget
/* No cast needed as DSurf4 == DSurf7 */,
2009 Thunk_IDirect3DDeviceImpl_3_GetRenderTarget(LPDIRECT3DDEVICE3 iface
,
2010 LPDIRECTDRAWSURFACE4
* lplpRenderTarget
)
2012 TRACE("(%p)->(%p) thunking to IDirect3DDevice7 interface.\n", iface
, lplpRenderTarget
);
2013 return IDirect3DDevice7_GetRenderTarget(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice3
, IDirect3DDevice7
, iface
),
2014 (LPDIRECTDRAWSURFACE7
*) lplpRenderTarget
/* No cast needed as DSurf4 == DSurf7 */);
2018 Thunk_IDirect3DDeviceImpl_2_SetRenderTarget(LPDIRECT3DDEVICE2 iface
,
2019 LPDIRECTDRAWSURFACE lpNewRenderTarget
,
2022 TRACE("(%p)->(%p,%08lx) thunking to IDirect3DDevice7 interface.\n", iface
, lpNewRenderTarget
, dwFlags
);
2023 return IDirect3DDevice7_SetRenderTarget(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice2
, IDirect3DDevice7
, iface
),
2024 COM_INTERFACE_CAST(IDirectDrawSurfaceImpl
, IDirectDrawSurface3
, IDirectDrawSurface7
, lpNewRenderTarget
),
2029 Thunk_IDirect3DDeviceImpl_2_GetRenderTarget(LPDIRECT3DDEVICE2 iface
,
2030 LPDIRECTDRAWSURFACE
* lplpRenderTarget
)
2033 LPDIRECTDRAWSURFACE7 ret_val
;
2035 TRACE("(%p)->(%p) thunking to IDirect3DDevice7 interface.\n", iface
, lplpRenderTarget
);
2036 ret
= IDirect3DDevice7_GetRenderTarget(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice2
, IDirect3DDevice7
, iface
),
2038 *lplpRenderTarget
= (LPDIRECTDRAWSURFACE
) COM_INTERFACE_CAST(IDirectDrawSurfaceImpl
, IDirectDrawSurface7
, IDirectDrawSurface3
, ret_val
);
2039 TRACE(" returning interface %p\n", *lplpRenderTarget
);
2044 Thunk_IDirect3DDeviceImpl_2_Vertex(LPDIRECT3DDEVICE2 iface
,
2045 LPVOID lpVertexType
)
2047 TRACE("(%p)->(%p) thunking to IDirect3DDevice3 interface.\n", iface
, lpVertexType
);
2048 return IDirect3DDevice3_Vertex(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice2
, IDirect3DDevice3
, iface
),
2053 Thunk_IDirect3DDeviceImpl_2_Index(LPDIRECT3DDEVICE2 iface
,
2056 TRACE("(%p)->(%04x) thunking to IDirect3DDevice3 interface.\n", iface
, wVertexIndex
);
2057 return IDirect3DDevice3_Index(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice2
, IDirect3DDevice3
, iface
),
2062 Thunk_IDirect3DDeviceImpl_2_End(LPDIRECT3DDEVICE2 iface
,
2065 TRACE("(%p)->(%08lx) thunking to IDirect3DDevice3 interface.\n", iface
, dwFlags
);
2066 return IDirect3DDevice3_End(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice2
, IDirect3DDevice3
, iface
),
2071 Thunk_IDirect3DDeviceImpl_2_GetLightState(LPDIRECT3DDEVICE2 iface
,
2072 D3DLIGHTSTATETYPE dwLightStateType
,
2073 LPDWORD lpdwLightState
)
2075 TRACE("(%p)->(%08x,%p) thunking to IDirect3DDevice3 interface.\n", iface
, dwLightStateType
, lpdwLightState
);
2076 return IDirect3DDevice3_GetLightState(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice2
, IDirect3DDevice3
, iface
),
2082 Thunk_IDirect3DDeviceImpl_2_SetLightState(LPDIRECT3DDEVICE2 iface
,
2083 D3DLIGHTSTATETYPE dwLightStateType
,
2086 TRACE("(%p)->(%08x,%08lx) thunking to IDirect3DDevice3 interface.\n", iface
, dwLightStateType
, dwLightState
);
2087 return IDirect3DDevice3_SetLightState(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice2
, IDirect3DDevice3
, iface
),
2093 Thunk_IDirect3DDeviceImpl_1_EnumTextureFormats(LPDIRECT3DDEVICE iface
,
2094 LPD3DENUMTEXTUREFORMATSCALLBACK lpD3DEnumTextureProc
,
2097 TRACE("(%p)->(%p,%p) thunking to IDirect3DDevice2 interface.\n", iface
, lpD3DEnumTextureProc
, lpArg
);
2098 return IDirect3DDevice2_EnumTextureFormats(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice
, IDirect3DDevice2
, iface
),
2099 lpD3DEnumTextureProc
,
2104 Thunk_IDirect3DDeviceImpl_3_SetTexture(LPDIRECT3DDEVICE3 iface
,
2106 LPDIRECT3DTEXTURE2 lpTexture2
)
2108 TRACE("(%p)->(%ld,%p) thunking to IDirect3DDevice7 interface.\n", iface
, dwStage
, lpTexture2
);
2109 return IDirect3DDevice7_SetTexture(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice3
, IDirect3DDevice7
, iface
),
2111 COM_INTERFACE_CAST(IDirectDrawSurfaceImpl
, IDirect3DTexture2
, IDirectDrawSurface7
, lpTexture2
));
2115 Thunk_IDirect3DDeviceImpl_3_DrawPrimitiveVB(LPDIRECT3DDEVICE3 iface
,
2116 D3DPRIMITIVETYPE d3dptPrimitiveType
,
2117 LPDIRECT3DVERTEXBUFFER lpD3DVertexBuf
,
2118 DWORD dwStartVertex
,
2119 DWORD dwNumVertices
,
2122 TRACE("(%p)->(%08x,%p,%08lx,%08lx,%08lx) thunking to IDirect3DDevice7 interface.\n", iface
,
2123 d3dptPrimitiveType
, lpD3DVertexBuf
, dwStartVertex
, dwNumVertices
, dwFlags
);
2124 return IDirect3DDevice7_DrawPrimitiveVB(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice3
, IDirect3DDevice7
, iface
),
2126 COM_INTERFACE_CAST(IDirect3DVertexBufferImpl
, IDirect3DVertexBuffer
, IDirect3DVertexBuffer7
, lpD3DVertexBuf
),
2133 Thunk_IDirect3DDeviceImpl_3_DrawIndexedPrimitiveVB(LPDIRECT3DDEVICE3 iface
,
2134 D3DPRIMITIVETYPE d3dptPrimitiveType
,
2135 LPDIRECT3DVERTEXBUFFER lpD3DVertexBuf
,
2140 TRACE("(%p)->(%08x,%p,%p,%08lx,%08lx) thunking to IDirect3DDevice7 interface.\n", iface
,
2141 d3dptPrimitiveType
, lpD3DVertexBuf
, lpwIndices
, dwIndexCount
, dwFlags
);
2142 return IDirect3DDevice7_DrawIndexedPrimitiveVB(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice3
, IDirect3DDevice7
, iface
),
2144 COM_INTERFACE_CAST(IDirect3DVertexBufferImpl
, IDirect3DVertexBuffer
, IDirect3DVertexBuffer7
, lpD3DVertexBuf
),
2153 Thunk_IDirect3DDeviceImpl_3_GetTexture(LPDIRECT3DDEVICE3 iface
,
2155 LPDIRECT3DTEXTURE2
* lplpTexture2
)
2158 LPDIRECTDRAWSURFACE7 ret_val
;
2160 TRACE("(%p)->(%ld,%p) thunking to IDirect3DDevice7 interface.\n", iface
, dwStage
, lplpTexture2
);
2161 ret
= IDirect3DDevice7_GetTexture(COM_INTERFACE_CAST(IDirect3DDeviceImpl
, IDirect3DDevice3
, IDirect3DDevice7
, iface
),
2165 *lplpTexture2
= COM_INTERFACE_CAST(IDirectDrawSurfaceImpl
, IDirectDrawSurface7
, IDirect3DTexture2
, ret_val
);
2167 TRACE(" returning interface %p.\n", *lplpTexture2
);