4 This files contains all the common stuff for D3D devices.
11 #include "wine/obj_base.h"
14 #include "debugtools.h"
16 #include "d3d_private.h"
18 DEFAULT_DEBUG_CHANNEL(ddraw);
20 /*******************************************************************************
24 HRESULT WINAPI IDirect3DDevice2Impl_QueryInterface(
25 LPDIRECT3DDEVICE2 iface, REFIID riid, LPVOID* ppvObj
27 ICOM_THIS(IDirect3DDevice2Impl,iface);
28 FIXME("(%p)->(%s,%p): stub\n", This, debugstr_guid(riid),ppvObj);
32 ULONG WINAPI IDirect3DDevice2Impl_AddRef(LPDIRECT3DDEVICE2 iface)
34 ICOM_THIS(IDirect3DDevice2Impl,iface);
35 TRACE("(%p)->()incrementing from %lu.\n", This, This->ref );
42 ULONG WINAPI IDirect3DDevice2Impl_Release(LPDIRECT3DDEVICE2 iface)
44 ICOM_THIS(IDirect3DDevice2Impl,iface);
45 FIXME("(%p)->() decrementing from %lu.\n", This, This->ref );
48 HeapFree(GetProcessHeap(),0,This);
55 /*** IDirect3DDevice2 methods ***/
56 HRESULT WINAPI IDirect3DDevice2Impl_GetCaps(
57 LPDIRECT3DDEVICE2 iface, LPD3DDEVICEDESC lpdescsoft,
58 LPD3DDEVICEDESC lpdeschard
60 ICOM_THIS(IDirect3DDevice2Impl,iface);
61 FIXME("(%p)->(%p,%p), stub!\n", This, lpdescsoft, lpdeschard);
67 HRESULT WINAPI IDirect3DDevice2Impl_SwapTextureHandles(
68 LPDIRECT3DDEVICE2 iface,LPDIRECT3DTEXTURE2 lptex1,LPDIRECT3DTEXTURE2 lptex2
70 ICOM_THIS(IDirect3DDevice2Impl,iface);
71 FIXME("(%p)->(%p,%p): stub\n", This, lptex1, lptex2);
76 HRESULT WINAPI IDirect3DDevice2Impl_GetStats(
77 LPDIRECT3DDEVICE2 iface, LPD3DSTATS lpstats)
79 ICOM_THIS(IDirect3DDevice2Impl,iface);
80 FIXME("(%p)->(%p): stub\n", This, lpstats);
85 HRESULT WINAPI IDirect3DDevice2Impl_AddViewport(
86 LPDIRECT3DDEVICE2 iface, LPDIRECT3DVIEWPORT2 lpvp
88 ICOM_THIS(IDirect3DDevice2Impl,iface);
89 IDirect3DViewport2Impl* ilpvp=(IDirect3DViewport2Impl*)lpvp;
90 FIXME("(%p)->(%p): stub\n", This, ilpvp);
92 /* Adds this viewport to the viewport list */
93 ilpvp->next = This->viewport_list;
94 This->viewport_list = ilpvp;
99 HRESULT WINAPI IDirect3DDevice2Impl_DeleteViewport(
100 LPDIRECT3DDEVICE2 iface, LPDIRECT3DVIEWPORT2 lpvp)
102 ICOM_THIS(IDirect3DDevice2Impl,iface);
103 IDirect3DViewport2Impl* ilpvp=(IDirect3DViewport2Impl*)lpvp;
104 IDirect3DViewport2Impl *cur, *prev;
105 FIXME("(%p)->(%p): stub\n", This, lpvp);
107 /* Finds this viewport in the list */
109 cur = This->viewport_list;
110 while ((cur != NULL) && (cur != ilpvp)) {
115 return DDERR_INVALIDOBJECT;
119 This->viewport_list = cur->next;
121 prev->next = cur->next;
125 HRESULT WINAPI IDirect3DDevice2Impl_NextViewport(
126 LPDIRECT3DDEVICE2 iface, LPDIRECT3DVIEWPORT2 lpvp,
127 LPDIRECT3DVIEWPORT2* lplpvp, DWORD dwFlags
129 ICOM_THIS(IDirect3DDevice2Impl,iface);
130 IDirect3DViewport2Impl* ilpvp=(IDirect3DViewport2Impl*)lpvp;
131 IDirect3DViewport2Impl** ilplpvp=(IDirect3DViewport2Impl**)lplpvp;
132 FIXME("(%p)->(%p,%p,%08lx): stub\n", This, lpvp, lpvp, dwFlags);
136 *ilplpvp = ilpvp->next;
139 *ilplpvp = This->viewport_list;
142 ilpvp = This->viewport_list;
143 while (ilpvp->next != NULL)
148 return DDERR_INVALIDPARAMS;
153 HRESULT WINAPI IDirect3DDevice2Impl_EnumTextureFormats(
154 LPDIRECT3DDEVICE2 iface, LPD3DENUMTEXTUREFORMATSCALLBACK cb, LPVOID context
156 ICOM_THIS(IDirect3DDevice2Impl,iface);
157 FIXME("(%p)->(%p,%p), stub!\n", This, cb, context);
159 return DD_OK; /* no texture formats in stub implementation */
164 HRESULT WINAPI IDirect3DDevice2Impl_BeginScene(LPDIRECT3DDEVICE2 iface)
166 ICOM_THIS(IDirect3DDevice2Impl,iface);
168 FIXME("(%p)->(), stub!\n", This);
170 /* Here, we should get the DDraw surface and 'copy it' to the
171 OpenGL surface.... */
175 HRESULT WINAPI IDirect3DDevice2Impl_EndScene(LPDIRECT3DDEVICE2 iface)
177 ICOM_THIS(IDirect3DDevice2Impl,iface);
178 FIXME("(%p)->(): stub\n", This);
182 HRESULT WINAPI IDirect3DDevice2Impl_GetDirect3D(
183 LPDIRECT3DDEVICE2 iface, LPDIRECT3D2 *lpd3d2
185 ICOM_THIS(IDirect3DDevice2Impl,iface);
186 TRACE("(%p)->(%p): stub\n", This, lpd3d2);
187 *lpd3d2 = (LPDIRECT3D2)This->d3d;
191 /*** DrawPrimitive API ***/
192 HRESULT WINAPI IDirect3DDevice2Impl_SetCurrentViewport(
193 LPDIRECT3DDEVICE2 iface, LPDIRECT3DVIEWPORT2 lpvp
195 ICOM_THIS(IDirect3DDevice2Impl,iface);
196 IDirect3DViewport2Impl* ilpvp=(IDirect3DViewport2Impl*)lpvp;
197 FIXME("(%p)->(%p): stub\n", This, ilpvp);
199 /* Should check if the viewport was added or not */
201 /* Set this viewport as the current viewport */
202 This->current_viewport = ilpvp;
204 /* Activate this viewport */
205 ilpvp->device.active_device2 = This;
206 ilpvp->activate(ilpvp);
213 HRESULT WINAPI IDirect3DDevice2Impl_GetCurrentViewport(
214 LPDIRECT3DDEVICE2 iface, LPDIRECT3DVIEWPORT2 *lplpvp
216 ICOM_THIS(IDirect3DDevice2Impl,iface);
217 FIXME("(%p)->(%p): stub\n", This, lplpvp);
219 /* Returns the current viewport */
220 *lplpvp = (LPDIRECT3DVIEWPORT2)This->current_viewport;
225 HRESULT WINAPI IDirect3DDevice2Impl_SetRenderTarget(
226 LPDIRECT3DDEVICE2 iface, LPDIRECTDRAWSURFACE lpdds, DWORD dwFlags
228 ICOM_THIS(IDirect3DDevice2Impl,iface);
229 FIXME("(%p)->(%p,%08lx): stub\n", This, lpdds, dwFlags);
234 HRESULT WINAPI IDirect3DDevice2Impl_GetRenderTarget(
235 LPDIRECT3DDEVICE2 iface, LPDIRECTDRAWSURFACE *lplpdds
237 ICOM_THIS(IDirect3DDevice2Impl,iface);
238 FIXME("(%p)->(%p): stub\n", This, lplpdds);
240 /* Returns the current rendering target (the surface on wich we render) */
241 *lplpdds = (LPDIRECTDRAWSURFACE)This->surface;
246 HRESULT WINAPI IDirect3DDevice2Impl_Begin(
247 LPDIRECT3DDEVICE2 iface, D3DPRIMITIVETYPE d3dp, D3DVERTEXTYPE d3dv,
250 ICOM_THIS(IDirect3DDevice2Impl,iface);
251 FIXME("(%p)->(%d,%d,%08lx): stub\n", This, d3dp, d3dv, dwFlags);
256 HRESULT WINAPI IDirect3DDevice2Impl_BeginIndexed(
257 LPDIRECT3DDEVICE2 iface, D3DPRIMITIVETYPE d3dp, D3DVERTEXTYPE d3dv,
258 LPVOID lpvert, DWORD numvert, DWORD dwFlags
260 ICOM_THIS(IDirect3DDevice2Impl,iface);
261 FIXME("(%p)->(%d,%d,%p,%ld,%08lx): stub\n", This, d3dp, d3dv, lpvert, numvert, dwFlags);
266 HRESULT WINAPI IDirect3DDevice2Impl_Vertex(
267 LPDIRECT3DDEVICE2 iface,LPVOID lpvert
269 ICOM_THIS(IDirect3DDevice2Impl,iface);
270 FIXME("(%p)->(%p): stub\n", This, lpvert);
275 HRESULT WINAPI IDirect3DDevice2Impl_Index(LPDIRECT3DDEVICE2 iface, WORD index) {
276 ICOM_THIS(IDirect3DDevice2Impl,iface);
277 FIXME("(%p)->(%d): stub\n", This, index);
284 HRESULT WINAPI IDirect3DDevice2Impl_End(LPDIRECT3DDEVICE2 iface,DWORD dwFlags) {
285 ICOM_THIS(IDirect3DDevice2Impl,iface);
286 FIXME("(%p)->(%08lx): stub\n", This, dwFlags);
291 HRESULT WINAPI IDirect3DDevice2Impl_GetRenderState(
292 LPDIRECT3DDEVICE2 iface, D3DRENDERSTATETYPE d3drs, LPDWORD lprstate
294 ICOM_THIS(IDirect3DDevice2Impl,iface);
295 FIXME("(%p)->(%d,%p): stub\n", This, d3drs, lprstate);
300 HRESULT WINAPI IDirect3DDevice2Impl_SetRenderState(
301 LPDIRECT3DDEVICE2 iface, D3DRENDERSTATETYPE dwRenderStateType,
304 ICOM_THIS(IDirect3DDevice2Impl,iface);
306 FIXME("(%p)->(%d,%ld)\n", This, dwRenderStateType, dwRenderState);
311 HRESULT WINAPI IDirect3DDevice2Impl_GetLightState(
312 LPDIRECT3DDEVICE2 iface, D3DLIGHTSTATETYPE d3dls, LPDWORD lplstate
314 ICOM_THIS(IDirect3DDevice2Impl,iface);
315 FIXME("(%p)->(%d,%p): stub\n", This, d3dls, lplstate);
322 HRESULT WINAPI IDirect3DDevice2Impl_SetLightState(
323 LPDIRECT3DDEVICE2 iface, D3DLIGHTSTATETYPE dwLightStateType,
326 ICOM_THIS(IDirect3DDevice2Impl,iface);
327 FIXME("(%p)->(%d,%08lx): stub\n", This, dwLightStateType, dwLightState);
331 HRESULT WINAPI IDirect3DDevice2Impl_SetTransform(
332 LPDIRECT3DDEVICE2 iface, D3DTRANSFORMSTATETYPE d3dts, LPD3DMATRIX lpmatrix
334 ICOM_THIS(IDirect3DDevice2Impl,iface);
335 FIXME("(%p)->(%d,%p),stub!\n",This,d3dts,lpmatrix);
341 HRESULT WINAPI IDirect3DDevice2Impl_GetTransform(
342 LPDIRECT3DDEVICE2 iface, D3DTRANSFORMSTATETYPE d3dts, LPD3DMATRIX lpmatrix
344 ICOM_THIS(IDirect3DDevice2Impl,iface);
345 FIXME("(%p)->(%d,%p): stub\n", This, d3dts, lpmatrix);
352 HRESULT WINAPI IDirect3DDevice2Impl_MultiplyTransform(
353 LPDIRECT3DDEVICE2 iface, D3DTRANSFORMSTATETYPE d3dts, LPD3DMATRIX lpmatrix
355 ICOM_THIS(IDirect3DDevice2Impl,iface);
356 FIXME("(%p)->(%d,%p): stub\n", This, d3dts, lpmatrix);
361 HRESULT WINAPI IDirect3DDevice2Impl_DrawPrimitive(
362 LPDIRECT3DDEVICE2 iface, D3DPRIMITIVETYPE d3dp, D3DVERTEXTYPE d3dv,
363 LPVOID lpvertex, DWORD vertcount, DWORD dwFlags
365 ICOM_THIS(IDirect3DDevice2Impl,iface);
367 TRACE("(%p)->(%d,%d,%p,%ld,%08lx): stub\n", This, d3dp, d3dv, lpvertex, vertcount, dwFlags);
372 HRESULT WINAPI IDirect3DDevice2Impl_DrawIndexedPrimitive(
373 LPDIRECT3DDEVICE2 iface, D3DPRIMITIVETYPE d3dp, D3DVERTEXTYPE d3dv,
374 LPVOID lpvertex, DWORD vertcount, LPWORD lpindexes, DWORD indexcount,
377 ICOM_THIS(IDirect3DDevice2Impl,iface);
378 TRACE("(%p)->(%d,%d,%p,%ld,%p,%ld,%08lx): stub\n", This, d3dp, d3dv, lpvertex, vertcount, lpindexes, indexcount, dwFlags);
382 HRESULT WINAPI IDirect3DDevice2Impl_SetClipStatus(
383 LPDIRECT3DDEVICE2 iface, LPD3DCLIPSTATUS lpcs
385 ICOM_THIS(IDirect3DDevice2Impl,iface);
386 FIXME("(%p)->(%p): stub\n", This, lpcs);
391 HRESULT WINAPI IDirect3DDevice2Impl_GetClipStatus(
392 LPDIRECT3DDEVICE2 iface, LPD3DCLIPSTATUS lpcs
394 ICOM_THIS(IDirect3DDevice2Impl,iface);
395 FIXME("(%p)->(%p): stub\n", This, lpcs);
400 /*******************************************************************************
403 HRESULT WINAPI IDirect3DDeviceImpl_QueryInterface(
404 LPDIRECT3DDEVICE iface, REFIID riid, LPVOID* ppvObj
406 ICOM_THIS(IDirect3DDeviceImpl,iface);
407 FIXME("(%p)->(%s,%p): stub\n", This, debugstr_guid(riid),ppvObj);
411 ULONG WINAPI IDirect3DDeviceImpl_AddRef(LPDIRECT3DDEVICE iface)
413 ICOM_THIS(IDirect3DDeviceImpl,iface);
414 TRACE("(%p)->()incrementing from %lu.\n", This, This->ref );
416 return ++(This->ref);
419 ULONG WINAPI IDirect3DDeviceImpl_Release(LPDIRECT3DDEVICE iface)
421 ICOM_THIS(IDirect3DDeviceImpl,iface);
422 FIXME("(%p)->() decrementing from %lu.\n", This, This->ref );
424 if (!--(This->ref)) {
425 HeapFree(GetProcessHeap(),0,This);
431 HRESULT WINAPI IDirect3DDeviceImpl_Initialize(
432 LPDIRECT3DDEVICE iface, LPDIRECT3D lpd3d, LPGUID lpGUID,
433 LPD3DDEVICEDESC lpd3ddvdesc
435 ICOM_THIS(IDirect3DDeviceImpl,iface);
436 TRACE("(%p)->(%p,%p,%p): stub\n", This, lpd3d,lpGUID, lpd3ddvdesc);
438 return DDERR_ALREADYINITIALIZED;
442 HRESULT WINAPI IDirect3DDeviceImpl_GetCaps(
443 LPDIRECT3DDEVICE iface, LPD3DDEVICEDESC lpD3DHWDevDesc,
444 LPD3DDEVICEDESC lpD3DSWDevDesc
446 ICOM_THIS(IDirect3DDeviceImpl,iface);
447 TRACE("(%p)->(%p,%p): stub\n", This, lpD3DHWDevDesc, lpD3DSWDevDesc);
453 HRESULT WINAPI IDirect3DDeviceImpl_SwapTextureHandles(
454 LPDIRECT3DDEVICE iface, LPDIRECT3DTEXTURE lpD3DTex1,
455 LPDIRECT3DTEXTURE lpD3DTex2
457 ICOM_THIS(IDirect3DDeviceImpl,iface);
458 TRACE("(%p)->(%p,%p): stub\n", This, lpD3DTex1, lpD3DTex2);
463 HRESULT WINAPI IDirect3DDeviceImpl_CreateExecuteBuffer(
464 LPDIRECT3DDEVICE iface, LPD3DEXECUTEBUFFERDESC lpDesc,
465 LPDIRECT3DEXECUTEBUFFER *lplpDirect3DExecuteBuffer, IUnknown *pUnkOuter
467 ICOM_THIS(IDirect3DDeviceImpl,iface);
468 FIXME("(%p)->(%p,%p,%p): stub\n", This, lpDesc, lplpDirect3DExecuteBuffer, pUnkOuter);
472 HRESULT WINAPI IDirect3DDeviceImpl_GetStats(
473 LPDIRECT3DDEVICE iface, LPD3DSTATS lpD3DStats
475 ICOM_THIS(IDirect3DDeviceImpl,iface);
476 TRACE("(%p)->(%p): stub\n", This, lpD3DStats);
482 HRESULT WINAPI IDirect3DDeviceImpl_Execute(
483 LPDIRECT3DDEVICE iface, LPDIRECT3DEXECUTEBUFFER lpDirect3DExecuteBuffer,
484 LPDIRECT3DVIEWPORT lpDirect3DViewport, DWORD dwFlags
486 ICOM_THIS(IDirect3DDeviceImpl,iface);
487 TRACE("(%p)->(%p,%p,%08ld): stub\n", This, lpDirect3DExecuteBuffer, lpDirect3DViewport, dwFlags);
489 /* Put this as the default context */
492 ((IDirect3DExecuteBufferImpl*)lpDirect3DExecuteBuffer)->execute(lpDirect3DExecuteBuffer, iface, (IDirect3DViewport*)lpDirect3DViewport);
497 HRESULT WINAPI IDirect3DDeviceImpl_AddViewport(
498 LPDIRECT3DDEVICE iface, LPDIRECT3DVIEWPORT lpvp
500 ICOM_THIS(IDirect3DDeviceImpl,iface);
501 IDirect3DViewport2Impl* ilpvp=(IDirect3DViewport2Impl*)lpvp;
502 FIXME("(%p)->(%p): stub\n", This, ilpvp);
504 /* Adds this viewport to the viewport list */
505 ilpvp->next = This->viewport_list;
506 This->viewport_list = ilpvp;
513 HRESULT WINAPI IDirect3DDeviceImpl_DeleteViewport(
514 LPDIRECT3DDEVICE iface, LPDIRECT3DVIEWPORT lpvp
516 ICOM_THIS(IDirect3DDeviceImpl,iface);
517 IDirect3DViewport2Impl* ilpvp=(IDirect3DViewport2Impl*)lpvp;
518 IDirect3DViewport2Impl *cur, *prev;
519 FIXME("(%p)->(%p): stub\n", This, lpvp);
521 /* Finds this viewport in the list */
523 cur = This->viewport_list;
524 while ((cur != NULL) && (cur != ilpvp)) {
529 return DDERR_INVALIDOBJECT;
533 This->viewport_list = cur->next;
535 prev->next = cur->next;
539 HRESULT WINAPI IDirect3DDeviceImpl_NextViewport(
540 LPDIRECT3DDEVICE iface, LPDIRECT3DVIEWPORT lpvp,
541 LPDIRECT3DVIEWPORT* lplpvp, DWORD dwFlags
543 ICOM_THIS(IDirect3DDeviceImpl,iface);
544 IDirect3DViewport2Impl* ilpvp=(IDirect3DViewport2Impl*)lpvp;
545 IDirect3DViewport2Impl** ilplpvp=(IDirect3DViewport2Impl**)lplpvp;
546 FIXME("(%p)->(%p,%p,%08lx): stub\n", This, ilpvp, ilplpvp, dwFlags);
550 *ilplpvp = ilpvp->next;
553 *ilplpvp = This->viewport_list;
556 ilpvp = This->viewport_list;
557 while (ilpvp->next != NULL)
562 return DDERR_INVALIDPARAMS;
567 HRESULT WINAPI IDirect3DDeviceImpl_Pick(
568 LPDIRECT3DDEVICE iface, LPDIRECT3DEXECUTEBUFFER lpDirect3DExecuteBuffer,
569 LPDIRECT3DVIEWPORT lpDirect3DViewport, DWORD dwFlags, LPD3DRECT lpRect
571 ICOM_THIS(IDirect3DDeviceImpl,iface);
572 TRACE("(%p)->(%p,%p,%08lx,%p): stub\n", This, lpDirect3DExecuteBuffer, lpDirect3DViewport, dwFlags, lpRect);
576 HRESULT WINAPI IDirect3DDeviceImpl_GetPickRecords(
577 LPDIRECT3DDEVICE iface, LPDWORD lpCount, LPD3DPICKRECORD lpD3DPickRec
579 ICOM_THIS(IDirect3DDeviceImpl,iface);
580 TRACE("(%p)->(%p,%p): stub\n", This, lpCount, lpD3DPickRec);
586 HRESULT WINAPI IDirect3DDeviceImpl_EnumTextureFormats(
587 LPDIRECT3DDEVICE iface,LPD3DENUMTEXTUREFORMATSCALLBACK lpd3dEnumTextureProc,
590 ICOM_THIS(IDirect3DDeviceImpl,iface);
591 TRACE("(%p)->(%p,%p): stub\n", This, lpd3dEnumTextureProc, lpArg);
596 HRESULT WINAPI IDirect3DDeviceImpl_CreateMatrix(
597 LPDIRECT3DDEVICE iface, LPD3DMATRIXHANDLE lpD3DMatHandle
600 ICOM_THIS(IDirect3DDeviceImpl,iface);
601 TRACE("(%p)->(%p)\n", This, lpD3DMatHandle);
603 *lpD3DMatHandle = (D3DMATRIXHANDLE) HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,sizeof(D3DMATRIX));
609 HRESULT WINAPI IDirect3DDeviceImpl_SetMatrix(
610 LPDIRECT3DDEVICE iface, D3DMATRIXHANDLE d3dMatHandle,
611 const LPD3DMATRIX lpD3DMatrix)
613 ICOM_THIS(IDirect3DDeviceImpl,iface);
614 TRACE("(%p)->(%08lx,%p)\n", This, d3dMatHandle, lpD3DMatrix);
616 dump_mat(lpD3DMatrix);
617 *((D3DMATRIX *) d3dMatHandle) = *lpD3DMatrix;
622 HRESULT WINAPI IDirect3DDeviceImpl_GetMatrix(
623 LPDIRECT3DDEVICE iface,D3DMATRIXHANDLE D3DMatHandle,LPD3DMATRIX lpD3DMatrix
625 ICOM_THIS(IDirect3DDeviceImpl,iface);
626 TRACE("(%p)->(%08lx,%p)\n", This, D3DMatHandle, lpD3DMatrix);
628 *lpD3DMatrix = *((D3DMATRIX *) D3DMatHandle);
634 HRESULT WINAPI IDirect3DDeviceImpl_DeleteMatrix(
635 LPDIRECT3DDEVICE iface, D3DMATRIXHANDLE d3dMatHandle
637 ICOM_THIS(IDirect3DDeviceImpl,iface);
638 TRACE("(%p)->(%08lx)\n", This, d3dMatHandle);
639 HeapFree(GetProcessHeap(),0, (void *) d3dMatHandle);
644 HRESULT WINAPI IDirect3DDeviceImpl_BeginScene(LPDIRECT3DDEVICE iface)
646 ICOM_THIS(IDirect3DDeviceImpl,iface);
647 FIXME("(%p)->(): stub\n", This);
651 /* This is for the moment copy-pasted from IDirect3DDevice2...
652 Will make a common function ... */
653 HRESULT WINAPI IDirect3DDeviceImpl_EndScene(LPDIRECT3DDEVICE iface)
655 ICOM_THIS(IDirect3DDeviceImpl,iface);
656 FIXME("(%p)->(): stub\n", This);
660 HRESULT WINAPI IDirect3DDeviceImpl_GetDirect3D(
661 LPDIRECT3DDEVICE iface, LPDIRECT3D *lpDirect3D
663 ICOM_THIS(IDirect3DDeviceImpl,iface);
664 TRACE("(%p)->(%p): stub\n", This, lpDirect3D);
669 /*******************************************************************************
670 * Direct3DDevice VTable
672 static ICOM_VTABLE(IDirect3DDevice) WINE_UNUSED d3d_d3ddevice_vtbl =
674 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
675 IDirect3DDeviceImpl_QueryInterface,
676 IDirect3DDeviceImpl_AddRef,
677 IDirect3DDeviceImpl_Release,
678 IDirect3DDeviceImpl_Initialize,
679 IDirect3DDeviceImpl_GetCaps,
680 IDirect3DDeviceImpl_SwapTextureHandles,
681 IDirect3DDeviceImpl_CreateExecuteBuffer,
682 IDirect3DDeviceImpl_GetStats,
683 IDirect3DDeviceImpl_Execute,
684 IDirect3DDeviceImpl_AddViewport,
685 IDirect3DDeviceImpl_DeleteViewport,
686 IDirect3DDeviceImpl_NextViewport,
687 IDirect3DDeviceImpl_Pick,
688 IDirect3DDeviceImpl_GetPickRecords,
689 IDirect3DDeviceImpl_EnumTextureFormats,
690 IDirect3DDeviceImpl_CreateMatrix,
691 IDirect3DDeviceImpl_SetMatrix,
692 IDirect3DDeviceImpl_GetMatrix,
693 IDirect3DDeviceImpl_DeleteMatrix,
694 IDirect3DDeviceImpl_BeginScene,
695 IDirect3DDeviceImpl_EndScene,
696 IDirect3DDeviceImpl_GetDirect3D,