4 This files contains all the common stuff for D3D devices.
11 #include "wine/obj_base.h"
15 #include "debugtools.h"
17 #include "d3d_private.h"
19 DEFAULT_DEBUG_CHANNEL(ddraw);
21 /*******************************************************************************
25 HRESULT WINAPI IDirect3DDevice2Impl_QueryInterface(
26 LPDIRECT3DDEVICE2 iface, REFIID riid, LPVOID* ppvObj
28 ICOM_THIS(IDirect3DDevice2Impl,iface);
29 FIXME("(%p)->(%s,%p): stub\n", This, debugstr_guid(riid),ppvObj);
33 ULONG WINAPI IDirect3DDevice2Impl_AddRef(LPDIRECT3DDEVICE2 iface)
35 ICOM_THIS(IDirect3DDevice2Impl,iface);
36 TRACE("(%p)->()incrementing from %lu.\n", This, This->ref );
43 ULONG WINAPI IDirect3DDevice2Impl_Release(LPDIRECT3DDEVICE2 iface)
45 ICOM_THIS(IDirect3DDevice2Impl,iface);
46 FIXME("(%p)->() decrementing from %lu.\n", This, This->ref );
49 HeapFree(GetProcessHeap(),0,This);
56 /*** IDirect3DDevice2 methods ***/
57 HRESULT WINAPI IDirect3DDevice2Impl_GetCaps(
58 LPDIRECT3DDEVICE2 iface, LPD3DDEVICEDESC lpdescsoft,
59 LPD3DDEVICEDESC lpdeschard
61 ICOM_THIS(IDirect3DDevice2Impl,iface);
62 FIXME("(%p)->(%p,%p), stub!\n", This, lpdescsoft, lpdeschard);
68 HRESULT WINAPI IDirect3DDevice2Impl_SwapTextureHandles(
69 LPDIRECT3DDEVICE2 iface,LPDIRECT3DTEXTURE2 lptex1,LPDIRECT3DTEXTURE2 lptex2
71 ICOM_THIS(IDirect3DDevice2Impl,iface);
72 FIXME("(%p)->(%p,%p): stub\n", This, lptex1, lptex2);
77 HRESULT WINAPI IDirect3DDevice2Impl_GetStats(
78 LPDIRECT3DDEVICE2 iface, LPD3DSTATS lpstats)
80 ICOM_THIS(IDirect3DDevice2Impl,iface);
81 FIXME("(%p)->(%p): stub\n", This, lpstats);
86 HRESULT WINAPI IDirect3DDevice2Impl_AddViewport(
87 LPDIRECT3DDEVICE2 iface, LPDIRECT3DVIEWPORT2 lpvp
89 ICOM_THIS(IDirect3DDevice2Impl,iface);
90 IDirect3DViewport2Impl* ilpvp=(IDirect3DViewport2Impl*)lpvp;
91 FIXME("(%p)->(%p): stub\n", This, ilpvp);
93 /* Adds this viewport to the viewport list */
94 ilpvp->next = This->viewport_list;
95 This->viewport_list = ilpvp;
100 HRESULT WINAPI IDirect3DDevice2Impl_DeleteViewport(
101 LPDIRECT3DDEVICE2 iface, LPDIRECT3DVIEWPORT2 lpvp)
103 ICOM_THIS(IDirect3DDevice2Impl,iface);
104 IDirect3DViewport2Impl* ilpvp=(IDirect3DViewport2Impl*)lpvp;
105 IDirect3DViewport2Impl *cur, *prev;
106 FIXME("(%p)->(%p): stub\n", This, lpvp);
108 /* Finds this viewport in the list */
110 cur = This->viewport_list;
111 while ((cur != NULL) && (cur != ilpvp)) {
116 return DDERR_INVALIDOBJECT;
120 This->viewport_list = cur->next;
122 prev->next = cur->next;
126 HRESULT WINAPI IDirect3DDevice2Impl_NextViewport(
127 LPDIRECT3DDEVICE2 iface, LPDIRECT3DVIEWPORT2 lpvp,
128 LPDIRECT3DVIEWPORT2* lplpvp, DWORD dwFlags
130 ICOM_THIS(IDirect3DDevice2Impl,iface);
131 IDirect3DViewport2Impl* ilpvp=(IDirect3DViewport2Impl*)lpvp;
132 IDirect3DViewport2Impl** ilplpvp=(IDirect3DViewport2Impl**)lplpvp;
133 FIXME("(%p)->(%p,%p,%08lx): stub\n", This, lpvp, lpvp, dwFlags);
137 *ilplpvp = ilpvp->next;
140 *ilplpvp = This->viewport_list;
143 ilpvp = This->viewport_list;
144 while (ilpvp->next != NULL)
149 return DDERR_INVALIDPARAMS;
154 HRESULT WINAPI IDirect3DDevice2Impl_EnumTextureFormats(
155 LPDIRECT3DDEVICE2 iface, LPD3DENUMTEXTUREFORMATSCALLBACK cb, LPVOID context
157 ICOM_THIS(IDirect3DDevice2Impl,iface);
158 FIXME("(%p)->(%p,%p), stub!\n", This, cb, context);
160 return DD_OK; /* no texture formats in stub implementation */
165 HRESULT WINAPI IDirect3DDevice2Impl_BeginScene(LPDIRECT3DDEVICE2 iface)
167 ICOM_THIS(IDirect3DDevice2Impl,iface);
169 FIXME("(%p)->(), stub!\n", This);
171 /* Here, we should get the DDraw surface and 'copy it' to the
172 OpenGL surface.... */
176 HRESULT WINAPI IDirect3DDevice2Impl_EndScene(LPDIRECT3DDEVICE2 iface)
178 ICOM_THIS(IDirect3DDevice2Impl,iface);
179 FIXME("(%p)->(): stub\n", This);
183 HRESULT WINAPI IDirect3DDevice2Impl_GetDirect3D(
184 LPDIRECT3DDEVICE2 iface, LPDIRECT3D2 *lpd3d2
186 ICOM_THIS(IDirect3DDevice2Impl,iface);
187 TRACE("(%p)->(%p): stub\n", This, lpd3d2);
188 *lpd3d2 = (LPDIRECT3D2)This->d3d;
192 /*** DrawPrimitive API ***/
193 HRESULT WINAPI IDirect3DDevice2Impl_SetCurrentViewport(
194 LPDIRECT3DDEVICE2 iface, LPDIRECT3DVIEWPORT2 lpvp
196 ICOM_THIS(IDirect3DDevice2Impl,iface);
197 IDirect3DViewport2Impl* ilpvp=(IDirect3DViewport2Impl*)lpvp;
198 FIXME("(%p)->(%p): stub\n", This, ilpvp);
200 /* Should check if the viewport was added or not */
202 /* Set this viewport as the current viewport */
203 This->current_viewport = ilpvp;
205 /* Activate this viewport */
206 ilpvp->device.active_device2 = This;
207 ilpvp->activate(ilpvp);
214 HRESULT WINAPI IDirect3DDevice2Impl_GetCurrentViewport(
215 LPDIRECT3DDEVICE2 iface, LPDIRECT3DVIEWPORT2 *lplpvp
217 ICOM_THIS(IDirect3DDevice2Impl,iface);
218 FIXME("(%p)->(%p): stub\n", This, lplpvp);
220 /* Returns the current viewport */
221 *lplpvp = (LPDIRECT3DVIEWPORT2)This->current_viewport;
226 HRESULT WINAPI IDirect3DDevice2Impl_SetRenderTarget(
227 LPDIRECT3DDEVICE2 iface, LPDIRECTDRAWSURFACE lpdds, DWORD dwFlags
229 ICOM_THIS(IDirect3DDevice2Impl,iface);
230 FIXME("(%p)->(%p,%08lx): stub\n", This, lpdds, dwFlags);
235 HRESULT WINAPI IDirect3DDevice2Impl_GetRenderTarget(
236 LPDIRECT3DDEVICE2 iface, LPDIRECTDRAWSURFACE *lplpdds
238 ICOM_THIS(IDirect3DDevice2Impl,iface);
239 FIXME("(%p)->(%p): stub\n", This, lplpdds);
241 /* Returns the current rendering target (the surface on wich we render) */
242 *lplpdds = (LPDIRECTDRAWSURFACE)This->surface;
247 HRESULT WINAPI IDirect3DDevice2Impl_Begin(
248 LPDIRECT3DDEVICE2 iface, D3DPRIMITIVETYPE d3dp, D3DVERTEXTYPE d3dv,
251 ICOM_THIS(IDirect3DDevice2Impl,iface);
252 FIXME("(%p)->(%d,%d,%08lx): stub\n", This, d3dp, d3dv, dwFlags);
257 HRESULT WINAPI IDirect3DDevice2Impl_BeginIndexed(
258 LPDIRECT3DDEVICE2 iface, D3DPRIMITIVETYPE d3dp, D3DVERTEXTYPE d3dv,
259 LPVOID lpvert, DWORD numvert, DWORD dwFlags
261 ICOM_THIS(IDirect3DDevice2Impl,iface);
262 FIXME("(%p)->(%d,%d,%p,%ld,%08lx): stub\n", This, d3dp, d3dv, lpvert, numvert, dwFlags);
267 HRESULT WINAPI IDirect3DDevice2Impl_Vertex(
268 LPDIRECT3DDEVICE2 iface,LPVOID lpvert
270 ICOM_THIS(IDirect3DDevice2Impl,iface);
271 FIXME("(%p)->(%p): stub\n", This, lpvert);
276 HRESULT WINAPI IDirect3DDevice2Impl_Index(LPDIRECT3DDEVICE2 iface, WORD index) {
277 ICOM_THIS(IDirect3DDevice2Impl,iface);
278 FIXME("(%p)->(%d): stub\n", This, index);
285 HRESULT WINAPI IDirect3DDevice2Impl_End(LPDIRECT3DDEVICE2 iface,DWORD dwFlags) {
286 ICOM_THIS(IDirect3DDevice2Impl,iface);
287 FIXME("(%p)->(%08lx): stub\n", This, dwFlags);
292 HRESULT WINAPI IDirect3DDevice2Impl_GetRenderState(
293 LPDIRECT3DDEVICE2 iface, D3DRENDERSTATETYPE d3drs, LPDWORD lprstate
295 ICOM_THIS(IDirect3DDevice2Impl,iface);
296 FIXME("(%p)->(%d,%p): stub\n", This, d3drs, lprstate);
301 HRESULT WINAPI IDirect3DDevice2Impl_SetRenderState(
302 LPDIRECT3DDEVICE2 iface, D3DRENDERSTATETYPE dwRenderStateType,
305 ICOM_THIS(IDirect3DDevice2Impl,iface);
307 FIXME("(%p)->(%d,%ld)\n", This, dwRenderStateType, dwRenderState);
312 HRESULT WINAPI IDirect3DDevice2Impl_GetLightState(
313 LPDIRECT3DDEVICE2 iface, D3DLIGHTSTATETYPE d3dls, LPDWORD lplstate
315 ICOM_THIS(IDirect3DDevice2Impl,iface);
316 FIXME("(%p)->(%d,%p): stub\n", This, d3dls, lplstate);
323 HRESULT WINAPI IDirect3DDevice2Impl_SetLightState(
324 LPDIRECT3DDEVICE2 iface, D3DLIGHTSTATETYPE dwLightStateType,
327 ICOM_THIS(IDirect3DDevice2Impl,iface);
328 FIXME("(%p)->(%d,%08lx): stub\n", This, dwLightStateType, dwLightState);
332 HRESULT WINAPI IDirect3DDevice2Impl_SetTransform(
333 LPDIRECT3DDEVICE2 iface, D3DTRANSFORMSTATETYPE d3dts, LPD3DMATRIX lpmatrix
335 ICOM_THIS(IDirect3DDevice2Impl,iface);
336 FIXME("(%p)->(%d,%p),stub!\n",This,d3dts,lpmatrix);
342 HRESULT WINAPI IDirect3DDevice2Impl_GetTransform(
343 LPDIRECT3DDEVICE2 iface, D3DTRANSFORMSTATETYPE d3dts, LPD3DMATRIX lpmatrix
345 ICOM_THIS(IDirect3DDevice2Impl,iface);
346 FIXME("(%p)->(%d,%p): stub\n", This, d3dts, lpmatrix);
353 HRESULT WINAPI IDirect3DDevice2Impl_MultiplyTransform(
354 LPDIRECT3DDEVICE2 iface, D3DTRANSFORMSTATETYPE d3dts, LPD3DMATRIX lpmatrix
356 ICOM_THIS(IDirect3DDevice2Impl,iface);
357 FIXME("(%p)->(%d,%p): stub\n", This, d3dts, lpmatrix);
362 HRESULT WINAPI IDirect3DDevice2Impl_DrawPrimitive(
363 LPDIRECT3DDEVICE2 iface, D3DPRIMITIVETYPE d3dp, D3DVERTEXTYPE d3dv,
364 LPVOID lpvertex, DWORD vertcount, DWORD dwFlags
366 ICOM_THIS(IDirect3DDevice2Impl,iface);
368 TRACE("(%p)->(%d,%d,%p,%ld,%08lx): stub\n", This, d3dp, d3dv, lpvertex, vertcount, dwFlags);
373 HRESULT WINAPI IDirect3DDevice2Impl_DrawIndexedPrimitive(
374 LPDIRECT3DDEVICE2 iface, D3DPRIMITIVETYPE d3dp, D3DVERTEXTYPE d3dv,
375 LPVOID lpvertex, DWORD vertcount, LPWORD lpindexes, DWORD indexcount,
378 ICOM_THIS(IDirect3DDevice2Impl,iface);
379 TRACE("(%p)->(%d,%d,%p,%ld,%p,%ld,%08lx): stub\n", This, d3dp, d3dv, lpvertex, vertcount, lpindexes, indexcount, dwFlags);
383 HRESULT WINAPI IDirect3DDevice2Impl_SetClipStatus(
384 LPDIRECT3DDEVICE2 iface, LPD3DCLIPSTATUS lpcs
386 ICOM_THIS(IDirect3DDevice2Impl,iface);
387 FIXME("(%p)->(%p): stub\n", This, lpcs);
392 HRESULT WINAPI IDirect3DDevice2Impl_GetClipStatus(
393 LPDIRECT3DDEVICE2 iface, LPD3DCLIPSTATUS lpcs
395 ICOM_THIS(IDirect3DDevice2Impl,iface);
396 FIXME("(%p)->(%p): stub\n", This, lpcs);
401 /*******************************************************************************
404 HRESULT WINAPI IDirect3DDeviceImpl_QueryInterface(
405 LPDIRECT3DDEVICE iface, REFIID riid, LPVOID* ppvObj
407 ICOM_THIS(IDirect3DDeviceImpl,iface);
408 FIXME("(%p)->(%s,%p): stub\n", This, debugstr_guid(riid),ppvObj);
412 ULONG WINAPI IDirect3DDeviceImpl_AddRef(LPDIRECT3DDEVICE iface)
414 ICOM_THIS(IDirect3DDeviceImpl,iface);
415 TRACE("(%p)->()incrementing from %lu.\n", This, This->ref );
417 return ++(This->ref);
420 ULONG WINAPI IDirect3DDeviceImpl_Release(LPDIRECT3DDEVICE iface)
422 ICOM_THIS(IDirect3DDeviceImpl,iface);
423 FIXME("(%p)->() decrementing from %lu.\n", This, This->ref );
425 if (!--(This->ref)) {
426 HeapFree(GetProcessHeap(),0,This);
432 HRESULT WINAPI IDirect3DDeviceImpl_Initialize(
433 LPDIRECT3DDEVICE iface, LPDIRECT3D lpd3d, LPGUID lpGUID,
434 LPD3DDEVICEDESC lpd3ddvdesc
436 ICOM_THIS(IDirect3DDeviceImpl,iface);
437 TRACE("(%p)->(%p,%p,%p): stub\n", This, lpd3d,lpGUID, lpd3ddvdesc);
439 return DDERR_ALREADYINITIALIZED;
443 HRESULT WINAPI IDirect3DDeviceImpl_GetCaps(
444 LPDIRECT3DDEVICE iface, LPD3DDEVICEDESC lpD3DHWDevDesc,
445 LPD3DDEVICEDESC lpD3DSWDevDesc
447 ICOM_THIS(IDirect3DDeviceImpl,iface);
448 TRACE("(%p)->(%p,%p): stub\n", This, lpD3DHWDevDesc, lpD3DSWDevDesc);
454 HRESULT WINAPI IDirect3DDeviceImpl_SwapTextureHandles(
455 LPDIRECT3DDEVICE iface, LPDIRECT3DTEXTURE lpD3DTex1,
456 LPDIRECT3DTEXTURE lpD3DTex2
458 ICOM_THIS(IDirect3DDeviceImpl,iface);
459 TRACE("(%p)->(%p,%p): stub\n", This, lpD3DTex1, lpD3DTex2);
464 HRESULT WINAPI IDirect3DDeviceImpl_CreateExecuteBuffer(
465 LPDIRECT3DDEVICE iface, LPD3DEXECUTEBUFFERDESC lpDesc,
466 LPDIRECT3DEXECUTEBUFFER *lplpDirect3DExecuteBuffer, IUnknown *pUnkOuter
468 ICOM_THIS(IDirect3DDeviceImpl,iface);
469 FIXME("(%p)->(%p,%p,%p): stub\n", This, lpDesc, lplpDirect3DExecuteBuffer, pUnkOuter);
473 HRESULT WINAPI IDirect3DDeviceImpl_GetStats(
474 LPDIRECT3DDEVICE iface, LPD3DSTATS lpD3DStats
476 ICOM_THIS(IDirect3DDeviceImpl,iface);
477 TRACE("(%p)->(%p): stub\n", This, lpD3DStats);
483 HRESULT WINAPI IDirect3DDeviceImpl_Execute(
484 LPDIRECT3DDEVICE iface, LPDIRECT3DEXECUTEBUFFER lpDirect3DExecuteBuffer,
485 LPDIRECT3DVIEWPORT lpDirect3DViewport, DWORD dwFlags
487 ICOM_THIS(IDirect3DDeviceImpl,iface);
488 TRACE("(%p)->(%p,%p,%08ld): stub\n", This, lpDirect3DExecuteBuffer, lpDirect3DViewport, dwFlags);
490 /* Put this as the default context */
493 ((IDirect3DExecuteBufferImpl*)lpDirect3DExecuteBuffer)->execute(lpDirect3DExecuteBuffer, iface, (IDirect3DViewport*)lpDirect3DViewport);
498 HRESULT WINAPI IDirect3DDeviceImpl_AddViewport(
499 LPDIRECT3DDEVICE iface, LPDIRECT3DVIEWPORT lpvp
501 ICOM_THIS(IDirect3DDeviceImpl,iface);
502 IDirect3DViewport2Impl* ilpvp=(IDirect3DViewport2Impl*)lpvp;
503 FIXME("(%p)->(%p): stub\n", This, ilpvp);
505 /* Adds this viewport to the viewport list */
506 ilpvp->next = This->viewport_list;
507 This->viewport_list = ilpvp;
514 HRESULT WINAPI IDirect3DDeviceImpl_DeleteViewport(
515 LPDIRECT3DDEVICE iface, LPDIRECT3DVIEWPORT lpvp
517 ICOM_THIS(IDirect3DDeviceImpl,iface);
518 IDirect3DViewport2Impl* ilpvp=(IDirect3DViewport2Impl*)lpvp;
519 IDirect3DViewport2Impl *cur, *prev;
520 FIXME("(%p)->(%p): stub\n", This, lpvp);
522 /* Finds this viewport in the list */
524 cur = This->viewport_list;
525 while ((cur != NULL) && (cur != ilpvp)) {
530 return DDERR_INVALIDOBJECT;
534 This->viewport_list = cur->next;
536 prev->next = cur->next;
540 HRESULT WINAPI IDirect3DDeviceImpl_NextViewport(
541 LPDIRECT3DDEVICE iface, LPDIRECT3DVIEWPORT lpvp,
542 LPDIRECT3DVIEWPORT* lplpvp, DWORD dwFlags
544 ICOM_THIS(IDirect3DDeviceImpl,iface);
545 IDirect3DViewport2Impl* ilpvp=(IDirect3DViewport2Impl*)lpvp;
546 IDirect3DViewport2Impl** ilplpvp=(IDirect3DViewport2Impl**)lplpvp;
547 FIXME("(%p)->(%p,%p,%08lx): stub\n", This, ilpvp, ilplpvp, dwFlags);
551 *ilplpvp = ilpvp->next;
554 *ilplpvp = This->viewport_list;
557 ilpvp = This->viewport_list;
558 while (ilpvp->next != NULL)
563 return DDERR_INVALIDPARAMS;
568 HRESULT WINAPI IDirect3DDeviceImpl_Pick(
569 LPDIRECT3DDEVICE iface, LPDIRECT3DEXECUTEBUFFER lpDirect3DExecuteBuffer,
570 LPDIRECT3DVIEWPORT lpDirect3DViewport, DWORD dwFlags, LPD3DRECT lpRect
572 ICOM_THIS(IDirect3DDeviceImpl,iface);
573 TRACE("(%p)->(%p,%p,%08lx,%p): stub\n", This, lpDirect3DExecuteBuffer, lpDirect3DViewport, dwFlags, lpRect);
577 HRESULT WINAPI IDirect3DDeviceImpl_GetPickRecords(
578 LPDIRECT3DDEVICE iface, LPDWORD lpCount, LPD3DPICKRECORD lpD3DPickRec
580 ICOM_THIS(IDirect3DDeviceImpl,iface);
581 TRACE("(%p)->(%p,%p): stub\n", This, lpCount, lpD3DPickRec);
587 HRESULT WINAPI IDirect3DDeviceImpl_EnumTextureFormats(
588 LPDIRECT3DDEVICE iface,LPD3DENUMTEXTUREFORMATSCALLBACK lpd3dEnumTextureProc,
591 ICOM_THIS(IDirect3DDeviceImpl,iface);
592 TRACE("(%p)->(%p,%p): stub\n", This, lpd3dEnumTextureProc, lpArg);
597 HRESULT WINAPI IDirect3DDeviceImpl_CreateMatrix(
598 LPDIRECT3DDEVICE iface, LPD3DMATRIXHANDLE lpD3DMatHandle
601 ICOM_THIS(IDirect3DDeviceImpl,iface);
602 TRACE("(%p)->(%p)\n", This, lpD3DMatHandle);
604 *lpD3DMatHandle = (D3DMATRIXHANDLE) HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,sizeof(D3DMATRIX));
610 HRESULT WINAPI IDirect3DDeviceImpl_SetMatrix(
611 LPDIRECT3DDEVICE iface, D3DMATRIXHANDLE d3dMatHandle,
612 const LPD3DMATRIX lpD3DMatrix)
614 ICOM_THIS(IDirect3DDeviceImpl,iface);
615 TRACE("(%p)->(%08lx,%p)\n", This, d3dMatHandle, lpD3DMatrix);
617 dump_mat(lpD3DMatrix);
618 *((D3DMATRIX *) d3dMatHandle) = *lpD3DMatrix;
623 HRESULT WINAPI IDirect3DDeviceImpl_GetMatrix(
624 LPDIRECT3DDEVICE iface,D3DMATRIXHANDLE D3DMatHandle,LPD3DMATRIX lpD3DMatrix
626 ICOM_THIS(IDirect3DDeviceImpl,iface);
627 TRACE("(%p)->(%08lx,%p)\n", This, D3DMatHandle, lpD3DMatrix);
629 *lpD3DMatrix = *((D3DMATRIX *) D3DMatHandle);
635 HRESULT WINAPI IDirect3DDeviceImpl_DeleteMatrix(
636 LPDIRECT3DDEVICE iface, D3DMATRIXHANDLE d3dMatHandle
638 ICOM_THIS(IDirect3DDeviceImpl,iface);
639 TRACE("(%p)->(%08lx)\n", This, d3dMatHandle);
640 HeapFree(GetProcessHeap(),0, (void *) d3dMatHandle);
645 HRESULT WINAPI IDirect3DDeviceImpl_BeginScene(LPDIRECT3DDEVICE iface)
647 ICOM_THIS(IDirect3DDeviceImpl,iface);
648 FIXME("(%p)->(): stub\n", This);
652 /* This is for the moment copy-pasted from IDirect3DDevice2...
653 Will make a common function ... */
654 HRESULT WINAPI IDirect3DDeviceImpl_EndScene(LPDIRECT3DDEVICE iface)
656 ICOM_THIS(IDirect3DDeviceImpl,iface);
657 FIXME("(%p)->(): stub\n", This);
661 HRESULT WINAPI IDirect3DDeviceImpl_GetDirect3D(
662 LPDIRECT3DDEVICE iface, LPDIRECT3D *lpDirect3D
664 ICOM_THIS(IDirect3DDeviceImpl,iface);
665 TRACE("(%p)->(%p): stub\n", This, lpDirect3D);
670 /*******************************************************************************
671 * Direct3DDevice VTable
673 static ICOM_VTABLE(IDirect3DDevice) WINE_UNUSED d3d_d3ddevice_vtbl =
675 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
676 IDirect3DDeviceImpl_QueryInterface,
677 IDirect3DDeviceImpl_AddRef,
678 IDirect3DDeviceImpl_Release,
679 IDirect3DDeviceImpl_Initialize,
680 IDirect3DDeviceImpl_GetCaps,
681 IDirect3DDeviceImpl_SwapTextureHandles,
682 IDirect3DDeviceImpl_CreateExecuteBuffer,
683 IDirect3DDeviceImpl_GetStats,
684 IDirect3DDeviceImpl_Execute,
685 IDirect3DDeviceImpl_AddViewport,
686 IDirect3DDeviceImpl_DeleteViewport,
687 IDirect3DDeviceImpl_NextViewport,
688 IDirect3DDeviceImpl_Pick,
689 IDirect3DDeviceImpl_GetPickRecords,
690 IDirect3DDeviceImpl_EnumTextureFormats,
691 IDirect3DDeviceImpl_CreateMatrix,
692 IDirect3DDeviceImpl_SetMatrix,
693 IDirect3DDeviceImpl_GetMatrix,
694 IDirect3DDeviceImpl_DeleteMatrix,
695 IDirect3DDeviceImpl_BeginScene,
696 IDirect3DDeviceImpl_EndScene,
697 IDirect3DDeviceImpl_GetDirect3D,