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
27 #include "wine/obj_base.h"
30 #include "wine/debug.h"
32 #include "d3d_private.h"
34 WINE_DEFAULT_DEBUG_CHANNEL(ddraw);
36 /*******************************************************************************
40 HRESULT WINAPI IDirect3DDevice2Impl_QueryInterface(
41 LPDIRECT3DDEVICE2 iface, REFIID riid, LPVOID* ppvObj
43 ICOM_THIS(IDirect3DDevice2Impl,iface);
44 FIXME("(%p)->(%s,%p): stub\n", This, debugstr_guid(riid),ppvObj);
48 ULONG WINAPI IDirect3DDevice2Impl_AddRef(LPDIRECT3DDEVICE2 iface)
50 ICOM_THIS(IDirect3DDevice2Impl,iface);
51 TRACE("(%p)->()incrementing from %lu.\n", This, This->ref );
58 ULONG WINAPI IDirect3DDevice2Impl_Release(LPDIRECT3DDEVICE2 iface)
60 ICOM_THIS(IDirect3DDevice2Impl,iface);
61 FIXME("(%p)->() decrementing from %lu.\n", This, This->ref );
64 HeapFree(GetProcessHeap(),0,This);
71 /*** IDirect3DDevice2 methods ***/
72 HRESULT WINAPI IDirect3DDevice2Impl_GetCaps(
73 LPDIRECT3DDEVICE2 iface, LPD3DDEVICEDESC lpdescsoft,
74 LPD3DDEVICEDESC lpdeschard
76 ICOM_THIS(IDirect3DDevice2Impl,iface);
77 FIXME("(%p)->(%p,%p), stub!\n", This, lpdescsoft, lpdeschard);
83 HRESULT WINAPI IDirect3DDevice2Impl_SwapTextureHandles(
84 LPDIRECT3DDEVICE2 iface,LPDIRECT3DTEXTURE2 lptex1,LPDIRECT3DTEXTURE2 lptex2
86 ICOM_THIS(IDirect3DDevice2Impl,iface);
87 FIXME("(%p)->(%p,%p): stub\n", This, lptex1, lptex2);
92 HRESULT WINAPI IDirect3DDevice2Impl_GetStats(
93 LPDIRECT3DDEVICE2 iface, LPD3DSTATS lpstats)
95 ICOM_THIS(IDirect3DDevice2Impl,iface);
96 FIXME("(%p)->(%p): stub\n", This, lpstats);
101 HRESULT WINAPI IDirect3DDevice2Impl_AddViewport(
102 LPDIRECT3DDEVICE2 iface, LPDIRECT3DVIEWPORT2 lpvp
104 ICOM_THIS(IDirect3DDevice2Impl,iface);
105 IDirect3DViewport2Impl* ilpvp=(IDirect3DViewport2Impl*)lpvp;
106 FIXME("(%p)->(%p): stub\n", This, ilpvp);
108 /* Adds this viewport to the viewport list */
109 ilpvp->next = This->viewport_list;
110 This->viewport_list = ilpvp;
115 HRESULT WINAPI IDirect3DDevice2Impl_DeleteViewport(
116 LPDIRECT3DDEVICE2 iface, LPDIRECT3DVIEWPORT2 lpvp)
118 ICOM_THIS(IDirect3DDevice2Impl,iface);
119 IDirect3DViewport2Impl* ilpvp=(IDirect3DViewport2Impl*)lpvp;
120 IDirect3DViewport2Impl *cur, *prev;
121 FIXME("(%p)->(%p): stub\n", This, lpvp);
123 /* Finds this viewport in the list */
125 cur = This->viewport_list;
126 while ((cur != NULL) && (cur != ilpvp)) {
131 return DDERR_INVALIDOBJECT;
135 This->viewport_list = cur->next;
137 prev->next = cur->next;
141 HRESULT WINAPI IDirect3DDevice2Impl_NextViewport(
142 LPDIRECT3DDEVICE2 iface, LPDIRECT3DVIEWPORT2 lpvp,
143 LPDIRECT3DVIEWPORT2* lplpvp, DWORD dwFlags
145 ICOM_THIS(IDirect3DDevice2Impl,iface);
146 IDirect3DViewport2Impl* ilpvp=(IDirect3DViewport2Impl*)lpvp;
147 IDirect3DViewport2Impl** ilplpvp=(IDirect3DViewport2Impl**)lplpvp;
148 FIXME("(%p)->(%p,%p,%08lx): stub\n", This, lpvp, lpvp, dwFlags);
152 *ilplpvp = ilpvp->next;
155 *ilplpvp = This->viewport_list;
158 ilpvp = This->viewport_list;
159 while (ilpvp->next != NULL)
164 return DDERR_INVALIDPARAMS;
169 HRESULT WINAPI IDirect3DDevice2Impl_EnumTextureFormats(
170 LPDIRECT3DDEVICE2 iface, LPD3DENUMTEXTUREFORMATSCALLBACK cb, LPVOID context
172 ICOM_THIS(IDirect3DDevice2Impl,iface);
173 FIXME("(%p)->(%p,%p), stub!\n", This, cb, context);
175 return DD_OK; /* no texture formats in stub implementation */
180 HRESULT WINAPI IDirect3DDevice2Impl_BeginScene(LPDIRECT3DDEVICE2 iface)
182 ICOM_THIS(IDirect3DDevice2Impl,iface);
184 FIXME("(%p)->(), stub!\n", This);
186 /* Here, we should get the DDraw surface and 'copy it' to the
187 OpenGL surface.... */
191 HRESULT WINAPI IDirect3DDevice2Impl_EndScene(LPDIRECT3DDEVICE2 iface)
193 ICOM_THIS(IDirect3DDevice2Impl,iface);
194 FIXME("(%p)->(): stub\n", This);
198 HRESULT WINAPI IDirect3DDevice2Impl_GetDirect3D(
199 LPDIRECT3DDEVICE2 iface, LPDIRECT3D2 *lpd3d2
201 ICOM_THIS(IDirect3DDevice2Impl,iface);
202 TRACE("(%p)->(%p): stub\n", This, lpd3d2);
203 *lpd3d2 = (LPDIRECT3D2)This->d3d;
207 /*** DrawPrimitive API ***/
208 HRESULT WINAPI IDirect3DDevice2Impl_SetCurrentViewport(
209 LPDIRECT3DDEVICE2 iface, LPDIRECT3DVIEWPORT2 lpvp
211 ICOM_THIS(IDirect3DDevice2Impl,iface);
212 IDirect3DViewport2Impl* ilpvp=(IDirect3DViewport2Impl*)lpvp;
213 FIXME("(%p)->(%p): stub\n", This, ilpvp);
215 /* Should check if the viewport was added or not */
217 /* Set this viewport as the current viewport */
218 This->current_viewport = ilpvp;
220 /* Activate this viewport */
221 ilpvp->device.active_device2 = This;
222 ilpvp->activate(ilpvp);
229 HRESULT WINAPI IDirect3DDevice2Impl_GetCurrentViewport(
230 LPDIRECT3DDEVICE2 iface, LPDIRECT3DVIEWPORT2 *lplpvp
232 ICOM_THIS(IDirect3DDevice2Impl,iface);
233 FIXME("(%p)->(%p): stub\n", This, lplpvp);
235 /* Returns the current viewport */
236 *lplpvp = (LPDIRECT3DVIEWPORT2)This->current_viewport;
241 HRESULT WINAPI IDirect3DDevice2Impl_SetRenderTarget(
242 LPDIRECT3DDEVICE2 iface, LPDIRECTDRAWSURFACE lpdds, DWORD dwFlags
244 ICOM_THIS(IDirect3DDevice2Impl,iface);
245 FIXME("(%p)->(%p,%08lx): stub\n", This, lpdds, dwFlags);
250 HRESULT WINAPI IDirect3DDevice2Impl_GetRenderTarget(
251 LPDIRECT3DDEVICE2 iface, LPDIRECTDRAWSURFACE *lplpdds
253 ICOM_THIS(IDirect3DDevice2Impl,iface);
254 FIXME("(%p)->(%p): stub\n", This, lplpdds);
256 /* Returns the current rendering target (the surface on wich we render) */
257 *lplpdds = (LPDIRECTDRAWSURFACE)This->surface;
262 HRESULT WINAPI IDirect3DDevice2Impl_Begin(
263 LPDIRECT3DDEVICE2 iface, D3DPRIMITIVETYPE d3dp, D3DVERTEXTYPE d3dv,
266 ICOM_THIS(IDirect3DDevice2Impl,iface);
267 FIXME("(%p)->(%d,%d,%08lx): stub\n", This, d3dp, d3dv, dwFlags);
272 HRESULT WINAPI IDirect3DDevice2Impl_BeginIndexed(
273 LPDIRECT3DDEVICE2 iface, D3DPRIMITIVETYPE d3dp, D3DVERTEXTYPE d3dv,
274 LPVOID lpvert, DWORD numvert, DWORD dwFlags
276 ICOM_THIS(IDirect3DDevice2Impl,iface);
277 FIXME("(%p)->(%d,%d,%p,%ld,%08lx): stub\n", This, d3dp, d3dv, lpvert, numvert, dwFlags);
282 HRESULT WINAPI IDirect3DDevice2Impl_Vertex(
283 LPDIRECT3DDEVICE2 iface,LPVOID lpvert
285 ICOM_THIS(IDirect3DDevice2Impl,iface);
286 FIXME("(%p)->(%p): stub\n", This, lpvert);
291 HRESULT WINAPI IDirect3DDevice2Impl_Index(LPDIRECT3DDEVICE2 iface, WORD index) {
292 ICOM_THIS(IDirect3DDevice2Impl,iface);
293 FIXME("(%p)->(%d): stub\n", This, index);
300 HRESULT WINAPI IDirect3DDevice2Impl_End(LPDIRECT3DDEVICE2 iface,DWORD dwFlags) {
301 ICOM_THIS(IDirect3DDevice2Impl,iface);
302 FIXME("(%p)->(%08lx): stub\n", This, dwFlags);
307 HRESULT WINAPI IDirect3DDevice2Impl_GetRenderState(
308 LPDIRECT3DDEVICE2 iface, D3DRENDERSTATETYPE d3drs, LPDWORD lprstate
310 ICOM_THIS(IDirect3DDevice2Impl,iface);
311 FIXME("(%p)->(%d,%p): stub\n", This, d3drs, lprstate);
316 HRESULT WINAPI IDirect3DDevice2Impl_SetRenderState(
317 LPDIRECT3DDEVICE2 iface, D3DRENDERSTATETYPE dwRenderStateType,
320 ICOM_THIS(IDirect3DDevice2Impl,iface);
322 FIXME("(%p)->(%d,%ld)\n", This, dwRenderStateType, dwRenderState);
327 HRESULT WINAPI IDirect3DDevice2Impl_GetLightState(
328 LPDIRECT3DDEVICE2 iface, D3DLIGHTSTATETYPE d3dls, LPDWORD lplstate
330 ICOM_THIS(IDirect3DDevice2Impl,iface);
331 FIXME("(%p)->(%d,%p): stub\n", This, d3dls, lplstate);
338 HRESULT WINAPI IDirect3DDevice2Impl_SetLightState(
339 LPDIRECT3DDEVICE2 iface, D3DLIGHTSTATETYPE dwLightStateType,
342 ICOM_THIS(IDirect3DDevice2Impl,iface);
343 FIXME("(%p)->(%d,%08lx): stub\n", This, dwLightStateType, dwLightState);
347 HRESULT WINAPI IDirect3DDevice2Impl_SetTransform(
348 LPDIRECT3DDEVICE2 iface, D3DTRANSFORMSTATETYPE d3dts, LPD3DMATRIX lpmatrix
350 ICOM_THIS(IDirect3DDevice2Impl,iface);
351 FIXME("(%p)->(%d,%p),stub!\n",This,d3dts,lpmatrix);
357 HRESULT WINAPI IDirect3DDevice2Impl_GetTransform(
358 LPDIRECT3DDEVICE2 iface, D3DTRANSFORMSTATETYPE d3dts, LPD3DMATRIX lpmatrix
360 ICOM_THIS(IDirect3DDevice2Impl,iface);
361 FIXME("(%p)->(%d,%p): stub\n", This, d3dts, lpmatrix);
368 HRESULT WINAPI IDirect3DDevice2Impl_MultiplyTransform(
369 LPDIRECT3DDEVICE2 iface, D3DTRANSFORMSTATETYPE d3dts, LPD3DMATRIX lpmatrix
371 ICOM_THIS(IDirect3DDevice2Impl,iface);
372 FIXME("(%p)->(%d,%p): stub\n", This, d3dts, lpmatrix);
377 HRESULT WINAPI IDirect3DDevice2Impl_DrawPrimitive(
378 LPDIRECT3DDEVICE2 iface, D3DPRIMITIVETYPE d3dp, D3DVERTEXTYPE d3dv,
379 LPVOID lpvertex, DWORD vertcount, DWORD dwFlags
381 ICOM_THIS(IDirect3DDevice2Impl,iface);
383 TRACE("(%p)->(%d,%d,%p,%ld,%08lx): stub\n", This, d3dp, d3dv, lpvertex, vertcount, dwFlags);
388 HRESULT WINAPI IDirect3DDevice2Impl_DrawIndexedPrimitive(
389 LPDIRECT3DDEVICE2 iface, D3DPRIMITIVETYPE d3dp, D3DVERTEXTYPE d3dv,
390 LPVOID lpvertex, DWORD vertcount, LPWORD lpindexes, DWORD indexcount,
393 ICOM_THIS(IDirect3DDevice2Impl,iface);
394 TRACE("(%p)->(%d,%d,%p,%ld,%p,%ld,%08lx): stub\n", This, d3dp, d3dv, lpvertex, vertcount, lpindexes, indexcount, dwFlags);
398 HRESULT WINAPI IDirect3DDevice2Impl_SetClipStatus(
399 LPDIRECT3DDEVICE2 iface, LPD3DCLIPSTATUS lpcs
401 ICOM_THIS(IDirect3DDevice2Impl,iface);
402 FIXME("(%p)->(%p): stub\n", This, lpcs);
407 HRESULT WINAPI IDirect3DDevice2Impl_GetClipStatus(
408 LPDIRECT3DDEVICE2 iface, LPD3DCLIPSTATUS lpcs
410 ICOM_THIS(IDirect3DDevice2Impl,iface);
411 FIXME("(%p)->(%p): stub\n", This, lpcs);
416 /*******************************************************************************
419 HRESULT WINAPI IDirect3DDeviceImpl_QueryInterface(
420 LPDIRECT3DDEVICE iface, REFIID riid, LPVOID* ppvObj
422 ICOM_THIS(IDirect3DDeviceImpl,iface);
423 FIXME("(%p)->(%s,%p): stub\n", This, debugstr_guid(riid),ppvObj);
427 ULONG WINAPI IDirect3DDeviceImpl_AddRef(LPDIRECT3DDEVICE iface)
429 ICOM_THIS(IDirect3DDeviceImpl,iface);
430 TRACE("(%p)->()incrementing from %lu.\n", This, This->ref );
432 return ++(This->ref);
435 ULONG WINAPI IDirect3DDeviceImpl_Release(LPDIRECT3DDEVICE iface)
437 ICOM_THIS(IDirect3DDeviceImpl,iface);
438 FIXME("(%p)->() decrementing from %lu.\n", This, This->ref );
440 if (!--(This->ref)) {
441 HeapFree(GetProcessHeap(),0,This);
447 HRESULT WINAPI IDirect3DDeviceImpl_Initialize(
448 LPDIRECT3DDEVICE iface, LPDIRECT3D lpd3d, LPGUID lpGUID,
449 LPD3DDEVICEDESC lpd3ddvdesc
451 ICOM_THIS(IDirect3DDeviceImpl,iface);
452 TRACE("(%p)->(%p,%p,%p): stub\n", This, lpd3d,lpGUID, lpd3ddvdesc);
454 return DDERR_ALREADYINITIALIZED;
458 HRESULT WINAPI IDirect3DDeviceImpl_GetCaps(
459 LPDIRECT3DDEVICE iface, LPD3DDEVICEDESC lpD3DHWDevDesc,
460 LPD3DDEVICEDESC lpD3DSWDevDesc
462 ICOM_THIS(IDirect3DDeviceImpl,iface);
463 TRACE("(%p)->(%p,%p): stub\n", This, lpD3DHWDevDesc, lpD3DSWDevDesc);
469 HRESULT WINAPI IDirect3DDeviceImpl_SwapTextureHandles(
470 LPDIRECT3DDEVICE iface, LPDIRECT3DTEXTURE lpD3DTex1,
471 LPDIRECT3DTEXTURE lpD3DTex2
473 ICOM_THIS(IDirect3DDeviceImpl,iface);
474 TRACE("(%p)->(%p,%p): stub\n", This, lpD3DTex1, lpD3DTex2);
479 HRESULT WINAPI IDirect3DDeviceImpl_CreateExecuteBuffer(
480 LPDIRECT3DDEVICE iface, LPD3DEXECUTEBUFFERDESC lpDesc,
481 LPDIRECT3DEXECUTEBUFFER *lplpDirect3DExecuteBuffer, IUnknown *pUnkOuter
483 ICOM_THIS(IDirect3DDeviceImpl,iface);
484 FIXME("(%p)->(%p,%p,%p): stub\n", This, lpDesc, lplpDirect3DExecuteBuffer, pUnkOuter);
488 HRESULT WINAPI IDirect3DDeviceImpl_GetStats(
489 LPDIRECT3DDEVICE iface, LPD3DSTATS lpD3DStats
491 ICOM_THIS(IDirect3DDeviceImpl,iface);
492 TRACE("(%p)->(%p): stub\n", This, lpD3DStats);
498 HRESULT WINAPI IDirect3DDeviceImpl_Execute(
499 LPDIRECT3DDEVICE iface, LPDIRECT3DEXECUTEBUFFER lpDirect3DExecuteBuffer,
500 LPDIRECT3DVIEWPORT lpDirect3DViewport, DWORD dwFlags
502 ICOM_THIS(IDirect3DDeviceImpl,iface);
503 TRACE("(%p)->(%p,%p,%08ld): stub\n", This, lpDirect3DExecuteBuffer, lpDirect3DViewport, dwFlags);
505 /* Put this as the default context */
508 ((IDirect3DExecuteBufferImpl*)lpDirect3DExecuteBuffer)->execute(lpDirect3DExecuteBuffer, iface, (IDirect3DViewport*)lpDirect3DViewport);
513 HRESULT WINAPI IDirect3DDeviceImpl_AddViewport(
514 LPDIRECT3DDEVICE iface, LPDIRECT3DVIEWPORT lpvp
516 ICOM_THIS(IDirect3DDeviceImpl,iface);
517 IDirect3DViewport2Impl* ilpvp=(IDirect3DViewport2Impl*)lpvp;
518 FIXME("(%p)->(%p): stub\n", This, ilpvp);
520 /* Adds this viewport to the viewport list */
521 ilpvp->next = This->viewport_list;
522 This->viewport_list = ilpvp;
529 HRESULT WINAPI IDirect3DDeviceImpl_DeleteViewport(
530 LPDIRECT3DDEVICE iface, LPDIRECT3DVIEWPORT lpvp
532 ICOM_THIS(IDirect3DDeviceImpl,iface);
533 IDirect3DViewport2Impl* ilpvp=(IDirect3DViewport2Impl*)lpvp;
534 IDirect3DViewport2Impl *cur, *prev;
535 FIXME("(%p)->(%p): stub\n", This, lpvp);
537 /* Finds this viewport in the list */
539 cur = This->viewport_list;
540 while ((cur != NULL) && (cur != ilpvp)) {
545 return DDERR_INVALIDOBJECT;
549 This->viewport_list = cur->next;
551 prev->next = cur->next;
555 HRESULT WINAPI IDirect3DDeviceImpl_NextViewport(
556 LPDIRECT3DDEVICE iface, LPDIRECT3DVIEWPORT lpvp,
557 LPDIRECT3DVIEWPORT* lplpvp, DWORD dwFlags
559 ICOM_THIS(IDirect3DDeviceImpl,iface);
560 IDirect3DViewport2Impl* ilpvp=(IDirect3DViewport2Impl*)lpvp;
561 IDirect3DViewport2Impl** ilplpvp=(IDirect3DViewport2Impl**)lplpvp;
562 FIXME("(%p)->(%p,%p,%08lx): stub\n", This, ilpvp, ilplpvp, dwFlags);
566 *ilplpvp = ilpvp->next;
569 *ilplpvp = This->viewport_list;
572 ilpvp = This->viewport_list;
573 while (ilpvp->next != NULL)
578 return DDERR_INVALIDPARAMS;
583 HRESULT WINAPI IDirect3DDeviceImpl_Pick(
584 LPDIRECT3DDEVICE iface, LPDIRECT3DEXECUTEBUFFER lpDirect3DExecuteBuffer,
585 LPDIRECT3DVIEWPORT lpDirect3DViewport, DWORD dwFlags, LPD3DRECT lpRect
587 ICOM_THIS(IDirect3DDeviceImpl,iface);
588 TRACE("(%p)->(%p,%p,%08lx,%p): stub\n", This, lpDirect3DExecuteBuffer, lpDirect3DViewport, dwFlags, lpRect);
592 HRESULT WINAPI IDirect3DDeviceImpl_GetPickRecords(
593 LPDIRECT3DDEVICE iface, LPDWORD lpCount, LPD3DPICKRECORD lpD3DPickRec
595 ICOM_THIS(IDirect3DDeviceImpl,iface);
596 TRACE("(%p)->(%p,%p): stub\n", This, lpCount, lpD3DPickRec);
602 HRESULT WINAPI IDirect3DDeviceImpl_EnumTextureFormats(
603 LPDIRECT3DDEVICE iface,LPD3DENUMTEXTUREFORMATSCALLBACK lpd3dEnumTextureProc,
606 ICOM_THIS(IDirect3DDeviceImpl,iface);
607 TRACE("(%p)->(%p,%p): stub\n", This, lpd3dEnumTextureProc, lpArg);
612 HRESULT WINAPI IDirect3DDeviceImpl_CreateMatrix(
613 LPDIRECT3DDEVICE iface, LPD3DMATRIXHANDLE lpD3DMatHandle
616 ICOM_THIS(IDirect3DDeviceImpl,iface);
617 TRACE("(%p)->(%p)\n", This, lpD3DMatHandle);
619 *lpD3DMatHandle = (D3DMATRIXHANDLE) HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,sizeof(D3DMATRIX));
625 HRESULT WINAPI IDirect3DDeviceImpl_SetMatrix(
626 LPDIRECT3DDEVICE iface, D3DMATRIXHANDLE d3dMatHandle,
627 const LPD3DMATRIX lpD3DMatrix)
629 ICOM_THIS(IDirect3DDeviceImpl,iface);
630 TRACE("(%p)->(%08lx,%p)\n", This, d3dMatHandle, lpD3DMatrix);
632 dump_mat(lpD3DMatrix);
633 *((D3DMATRIX *) d3dMatHandle) = *lpD3DMatrix;
638 HRESULT WINAPI IDirect3DDeviceImpl_GetMatrix(
639 LPDIRECT3DDEVICE iface,D3DMATRIXHANDLE D3DMatHandle,LPD3DMATRIX lpD3DMatrix
641 ICOM_THIS(IDirect3DDeviceImpl,iface);
642 TRACE("(%p)->(%08lx,%p)\n", This, D3DMatHandle, lpD3DMatrix);
644 *lpD3DMatrix = *((D3DMATRIX *) D3DMatHandle);
650 HRESULT WINAPI IDirect3DDeviceImpl_DeleteMatrix(
651 LPDIRECT3DDEVICE iface, D3DMATRIXHANDLE d3dMatHandle
653 ICOM_THIS(IDirect3DDeviceImpl,iface);
654 TRACE("(%p)->(%08lx)\n", This, d3dMatHandle);
655 HeapFree(GetProcessHeap(),0, (void *) d3dMatHandle);
660 HRESULT WINAPI IDirect3DDeviceImpl_BeginScene(LPDIRECT3DDEVICE iface)
662 ICOM_THIS(IDirect3DDeviceImpl,iface);
663 FIXME("(%p)->(): stub\n", This);
667 /* This is for the moment copy-pasted from IDirect3DDevice2...
668 Will make a common function ... */
669 HRESULT WINAPI IDirect3DDeviceImpl_EndScene(LPDIRECT3DDEVICE iface)
671 ICOM_THIS(IDirect3DDeviceImpl,iface);
672 FIXME("(%p)->(): stub\n", This);
676 HRESULT WINAPI IDirect3DDeviceImpl_GetDirect3D(
677 LPDIRECT3DDEVICE iface, LPDIRECT3D *lpDirect3D
679 ICOM_THIS(IDirect3DDeviceImpl,iface);
680 TRACE("(%p)->(%p): stub\n", This, lpDirect3D);
685 /*******************************************************************************
686 * Direct3DDevice VTable
688 static ICOM_VTABLE(IDirect3DDevice) WINE_UNUSED d3d_d3ddevice_vtbl =
690 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
691 IDirect3DDeviceImpl_QueryInterface,
692 IDirect3DDeviceImpl_AddRef,
693 IDirect3DDeviceImpl_Release,
694 IDirect3DDeviceImpl_Initialize,
695 IDirect3DDeviceImpl_GetCaps,
696 IDirect3DDeviceImpl_SwapTextureHandles,
697 IDirect3DDeviceImpl_CreateExecuteBuffer,
698 IDirect3DDeviceImpl_GetStats,
699 IDirect3DDeviceImpl_Execute,
700 IDirect3DDeviceImpl_AddViewport,
701 IDirect3DDeviceImpl_DeleteViewport,
702 IDirect3DDeviceImpl_NextViewport,
703 IDirect3DDeviceImpl_Pick,
704 IDirect3DDeviceImpl_GetPickRecords,
705 IDirect3DDeviceImpl_EnumTextureFormats,
706 IDirect3DDeviceImpl_CreateMatrix,
707 IDirect3DDeviceImpl_SetMatrix,
708 IDirect3DDeviceImpl_GetMatrix,
709 IDirect3DDeviceImpl_DeleteMatrix,
710 IDirect3DDeviceImpl_BeginScene,
711 IDirect3DDeviceImpl_EndScene,
712 IDirect3DDeviceImpl_GetDirect3D,