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 TRACE("(%p)->() decrementing from %lu.\n", This, This->ref );
64 /* Release texture associated with the device */
65 if (This->current_texture)
66 IDirect3DTexture2Impl_Release((LPDIRECT3DTEXTURE2)This->current_texture);
68 HeapFree(GetProcessHeap(),0,This);
75 /*** IDirect3DDevice2 methods ***/
76 HRESULT WINAPI IDirect3DDevice2Impl_GetCaps(
77 LPDIRECT3DDEVICE2 iface, LPD3DDEVICEDESC lpdescsoft,
78 LPD3DDEVICEDESC lpdeschard
80 ICOM_THIS(IDirect3DDevice2Impl,iface);
81 FIXME("(%p)->(%p,%p), stub!\n", This, lpdescsoft, lpdeschard);
87 HRESULT WINAPI IDirect3DDevice2Impl_SwapTextureHandles(
88 LPDIRECT3DDEVICE2 iface,LPDIRECT3DTEXTURE2 lpD3DTex1,LPDIRECT3DTEXTURE2 lpD3DTex2
90 ICOM_THIS(IDirect3DDevice2Impl,iface);
91 IDirect3DTexture2Impl tmp;
92 TRACE("(%p)->(%p,%p)\n", This, lpD3DTex1, lpD3DTex2);
94 tmp = *(IDirect3DTexture2Impl*)lpD3DTex1;
95 *(IDirect3DTexture2Impl*)lpD3DTex1 = *(IDirect3DTexture2Impl*)lpD3DTex2;
96 *(IDirect3DTexture2Impl*)lpD3DTex2 = tmp;
101 HRESULT WINAPI IDirect3DDevice2Impl_GetStats(
102 LPDIRECT3DDEVICE2 iface, LPD3DSTATS lpstats)
104 ICOM_THIS(IDirect3DDevice2Impl,iface);
105 FIXME("(%p)->(%p): stub\n", This, lpstats);
110 HRESULT WINAPI IDirect3DDevice2Impl_AddViewport(
111 LPDIRECT3DDEVICE2 iface, LPDIRECT3DVIEWPORT2 lpvp
113 ICOM_THIS(IDirect3DDevice2Impl,iface);
114 IDirect3DViewport2Impl* ilpvp=(IDirect3DViewport2Impl*)lpvp;
115 TRACE("(%p)->(%p)\n", This, ilpvp);
117 /* Adds this viewport to the viewport list */
118 ilpvp->next = This->viewport_list;
119 This->viewport_list = ilpvp;
124 HRESULT WINAPI IDirect3DDevice2Impl_DeleteViewport(
125 LPDIRECT3DDEVICE2 iface, LPDIRECT3DVIEWPORT2 lpvp)
127 ICOM_THIS(IDirect3DDevice2Impl,iface);
128 IDirect3DViewport2Impl* ilpvp=(IDirect3DViewport2Impl*)lpvp;
129 IDirect3DViewport2Impl *cur, *prev;
130 TRACE("(%p)->(%p)\n", This, lpvp);
132 /* Finds this viewport in the list */
134 cur = This->viewport_list;
135 while ((cur != NULL) && (cur != ilpvp)) {
140 return DDERR_INVALIDOBJECT;
144 This->viewport_list = cur->next;
146 prev->next = cur->next;
150 HRESULT WINAPI IDirect3DDevice2Impl_NextViewport(
151 LPDIRECT3DDEVICE2 iface, LPDIRECT3DVIEWPORT2 lpvp,
152 LPDIRECT3DVIEWPORT2* lplpvp, DWORD dwFlags
154 ICOM_THIS(IDirect3DDevice2Impl,iface);
155 IDirect3DViewport2Impl* ilpvp=(IDirect3DViewport2Impl*)lpvp;
156 IDirect3DViewport2Impl** ilplpvp=(IDirect3DViewport2Impl**)lplpvp;
157 TRACE("(%p)->(%p,%p,%08lx)\n", This, lpvp, lpvp, dwFlags);
161 *ilplpvp = ilpvp->next;
164 *ilplpvp = This->viewport_list;
167 ilpvp = This->viewport_list;
168 while (ilpvp->next != NULL)
173 return DDERR_INVALIDPARAMS;
178 HRESULT WINAPI IDirect3DDevice2Impl_EnumTextureFormats(
179 LPDIRECT3DDEVICE2 iface, LPD3DENUMTEXTUREFORMATSCALLBACK cb, LPVOID context
181 ICOM_THIS(IDirect3DDevice2Impl,iface);
182 FIXME("(%p)->(%p,%p), stub!\n", This, cb, context);
184 return DD_OK; /* no texture formats in stub implementation */
189 HRESULT WINAPI IDirect3DDevice2Impl_BeginScene(LPDIRECT3DDEVICE2 iface)
191 ICOM_THIS(IDirect3DDevice2Impl,iface);
193 FIXME("(%p)->(), stub!\n", This);
195 /* Here, we should get the DDraw surface and 'copy it' to the
196 OpenGL surface.... */
200 HRESULT WINAPI IDirect3DDevice2Impl_EndScene(LPDIRECT3DDEVICE2 iface)
202 ICOM_THIS(IDirect3DDevice2Impl,iface);
203 FIXME("(%p)->(): stub\n", This);
207 HRESULT WINAPI IDirect3DDevice2Impl_GetDirect3D(
208 LPDIRECT3DDEVICE2 iface, LPDIRECT3D2 *lpd3d2
210 ICOM_THIS(IDirect3DDevice2Impl,iface);
211 TRACE("(%p)->(%p)\n", This, lpd3d2);
212 *lpd3d2 = (LPDIRECT3D2)This->d3d;
216 /*** DrawPrimitive API ***/
217 HRESULT WINAPI IDirect3DDevice2Impl_SetCurrentViewport(
218 LPDIRECT3DDEVICE2 iface, LPDIRECT3DVIEWPORT2 lpvp
220 ICOM_THIS(IDirect3DDevice2Impl,iface);
221 IDirect3DViewport2Impl* ilpvp=(IDirect3DViewport2Impl*)lpvp;
222 TRACE("(%p)->(%p)\n", This, ilpvp);
224 /* Should check if the viewport was added or not */
226 /* Set this viewport as the current viewport */
227 This->current_viewport = ilpvp;
229 /* Activate this viewport */
230 ilpvp->device.active_device2 = This;
231 ilpvp->activate(ilpvp);
238 HRESULT WINAPI IDirect3DDevice2Impl_GetCurrentViewport(
239 LPDIRECT3DDEVICE2 iface, LPDIRECT3DVIEWPORT2 *lplpvp
241 ICOM_THIS(IDirect3DDevice2Impl,iface);
242 FIXME("(%p)->(%p): stub\n", This, lplpvp);
244 /* Returns the current viewport */
245 *lplpvp = (LPDIRECT3DVIEWPORT2)This->current_viewport;
250 HRESULT WINAPI IDirect3DDevice2Impl_SetRenderTarget(
251 LPDIRECT3DDEVICE2 iface, LPDIRECTDRAWSURFACE lpdds, DWORD dwFlags
253 ICOM_THIS(IDirect3DDevice2Impl,iface);
254 FIXME("(%p)->(%p,%08lx): stub\n", This, lpdds, dwFlags);
259 HRESULT WINAPI IDirect3DDevice2Impl_GetRenderTarget(
260 LPDIRECT3DDEVICE2 iface, LPDIRECTDRAWSURFACE *lplpdds
262 ICOM_THIS(IDirect3DDevice2Impl,iface);
263 TRACE("(%p)->(%p)\n", This, lplpdds);
265 /* Returns the current rendering target (the surface on wich we render) */
266 *lplpdds = (LPDIRECTDRAWSURFACE)This->surface;
271 HRESULT WINAPI IDirect3DDevice2Impl_Begin(
272 LPDIRECT3DDEVICE2 iface, D3DPRIMITIVETYPE d3dp, D3DVERTEXTYPE d3dv,
275 ICOM_THIS(IDirect3DDevice2Impl,iface);
276 FIXME("(%p)->(%d,%d,%08lx): stub\n", This, d3dp, d3dv, dwFlags);
281 HRESULT WINAPI IDirect3DDevice2Impl_BeginIndexed(
282 LPDIRECT3DDEVICE2 iface, D3DPRIMITIVETYPE d3dp, D3DVERTEXTYPE d3dv,
283 LPVOID lpvert, DWORD numvert, DWORD dwFlags
285 ICOM_THIS(IDirect3DDevice2Impl,iface);
286 FIXME("(%p)->(%d,%d,%p,%ld,%08lx): stub\n", This, d3dp, d3dv, lpvert, numvert, dwFlags);
291 HRESULT WINAPI IDirect3DDevice2Impl_Vertex(
292 LPDIRECT3DDEVICE2 iface,LPVOID lpvert
294 ICOM_THIS(IDirect3DDevice2Impl,iface);
295 FIXME("(%p)->(%p): stub\n", This, lpvert);
300 HRESULT WINAPI IDirect3DDevice2Impl_Index(LPDIRECT3DDEVICE2 iface, WORD index) {
301 ICOM_THIS(IDirect3DDevice2Impl,iface);
302 FIXME("(%p)->(%d): stub\n", This, index);
309 HRESULT WINAPI IDirect3DDevice2Impl_End(LPDIRECT3DDEVICE2 iface,DWORD dwFlags) {
310 ICOM_THIS(IDirect3DDevice2Impl,iface);
311 FIXME("(%p)->(%08lx): stub\n", This, dwFlags);
316 HRESULT WINAPI IDirect3DDevice2Impl_GetRenderState(
317 LPDIRECT3DDEVICE2 iface, D3DRENDERSTATETYPE d3drs, LPDWORD lprstate
319 ICOM_THIS(IDirect3DDevice2Impl,iface);
320 FIXME("(%p)->(%d,%p): stub\n", This, d3drs, lprstate);
325 HRESULT WINAPI IDirect3DDevice2Impl_SetRenderState(
326 LPDIRECT3DDEVICE2 iface, D3DRENDERSTATETYPE dwRenderStateType,
329 ICOM_THIS(IDirect3DDevice2Impl,iface);
331 FIXME("(%p)->(%d,%ld)\n", This, dwRenderStateType, dwRenderState);
336 HRESULT WINAPI IDirect3DDevice2Impl_GetLightState(
337 LPDIRECT3DDEVICE2 iface, D3DLIGHTSTATETYPE d3dls, LPDWORD lplstate
339 ICOM_THIS(IDirect3DDevice2Impl,iface);
340 FIXME("(%p)->(%d,%p): stub\n", This, d3dls, lplstate);
347 HRESULT WINAPI IDirect3DDevice2Impl_SetLightState(
348 LPDIRECT3DDEVICE2 iface, D3DLIGHTSTATETYPE dwLightStateType,
351 ICOM_THIS(IDirect3DDevice2Impl,iface);
352 FIXME("(%p)->(%d,%08lx): stub\n", This, dwLightStateType, dwLightState);
356 HRESULT WINAPI IDirect3DDevice2Impl_SetTransform(
357 LPDIRECT3DDEVICE2 iface, D3DTRANSFORMSTATETYPE d3dts, LPD3DMATRIX lpmatrix
359 ICOM_THIS(IDirect3DDevice2Impl,iface);
360 FIXME("(%p)->(%d,%p),stub!\n",This,d3dts,lpmatrix);
366 HRESULT WINAPI IDirect3DDevice2Impl_GetTransform(
367 LPDIRECT3DDEVICE2 iface, D3DTRANSFORMSTATETYPE d3dts, LPD3DMATRIX lpmatrix
369 ICOM_THIS(IDirect3DDevice2Impl,iface);
370 FIXME("(%p)->(%d,%p): stub\n", This, d3dts, lpmatrix);
377 HRESULT WINAPI IDirect3DDevice2Impl_MultiplyTransform(
378 LPDIRECT3DDEVICE2 iface, D3DTRANSFORMSTATETYPE d3dts, LPD3DMATRIX lpmatrix
380 ICOM_THIS(IDirect3DDevice2Impl,iface);
381 FIXME("(%p)->(%d,%p): stub\n", This, d3dts, lpmatrix);
386 HRESULT WINAPI IDirect3DDevice2Impl_DrawPrimitive(
387 LPDIRECT3DDEVICE2 iface, D3DPRIMITIVETYPE d3dp, D3DVERTEXTYPE d3dv,
388 LPVOID lpvertex, DWORD vertcount, DWORD dwFlags
390 ICOM_THIS(IDirect3DDevice2Impl,iface);
392 FIXME("(%p)->(%d,%d,%p,%ld,%08lx): stub\n", This, d3dp, d3dv, lpvertex, vertcount, dwFlags);
397 HRESULT WINAPI IDirect3DDevice2Impl_DrawIndexedPrimitive(
398 LPDIRECT3DDEVICE2 iface, D3DPRIMITIVETYPE d3dp, D3DVERTEXTYPE d3dv,
399 LPVOID lpvertex, DWORD vertcount, LPWORD lpindexes, DWORD indexcount,
402 ICOM_THIS(IDirect3DDevice2Impl,iface);
403 FIXME("(%p)->(%d,%d,%p,%ld,%p,%ld,%08lx): stub\n", This, d3dp, d3dv, lpvertex, vertcount, lpindexes, indexcount, dwFlags);
407 HRESULT WINAPI IDirect3DDevice2Impl_SetClipStatus(
408 LPDIRECT3DDEVICE2 iface, LPD3DCLIPSTATUS lpcs
410 ICOM_THIS(IDirect3DDevice2Impl,iface);
411 FIXME("(%p)->(%p): stub\n", This, lpcs);
416 HRESULT WINAPI IDirect3DDevice2Impl_GetClipStatus(
417 LPDIRECT3DDEVICE2 iface, LPD3DCLIPSTATUS lpcs
419 ICOM_THIS(IDirect3DDevice2Impl,iface);
420 FIXME("(%p)->(%p): stub\n", This, lpcs);
425 /*******************************************************************************
428 HRESULT WINAPI IDirect3DDeviceImpl_QueryInterface(
429 LPDIRECT3DDEVICE iface, REFIID riid, LPVOID* ppvObj
431 ICOM_THIS(IDirect3DDeviceImpl,iface);
432 FIXME("(%p)->(%s,%p): stub\n", This, debugstr_guid(riid),ppvObj);
436 ULONG WINAPI IDirect3DDeviceImpl_AddRef(LPDIRECT3DDEVICE iface)
438 ICOM_THIS(IDirect3DDeviceImpl,iface);
439 TRACE("(%p)->()incrementing from %lu.\n", This, This->ref );
441 return ++(This->ref);
444 ULONG WINAPI IDirect3DDeviceImpl_Release(LPDIRECT3DDEVICE iface)
446 ICOM_THIS(IDirect3DDeviceImpl,iface);
447 TRACE("(%p)->() decrementing from %lu.\n", This, This->ref );
449 if (!--(This->ref)) {
450 /* Release texture associated with the device */
451 if (This->current_texture)
452 IDirect3DTexture2Impl_Release((LPDIRECT3DTEXTURE2)This->current_texture);
454 HeapFree(GetProcessHeap(),0,This);
460 HRESULT WINAPI IDirect3DDeviceImpl_Initialize(
461 LPDIRECT3DDEVICE iface, LPDIRECT3D lpd3d, LPGUID lpGUID,
462 LPD3DDEVICEDESC lpd3ddvdesc
464 ICOM_THIS(IDirect3DDeviceImpl,iface);
465 FIXME("(%p)->(%p,%p,%p): stub\n", This, lpd3d,lpGUID, lpd3ddvdesc);
467 return DDERR_ALREADYINITIALIZED;
471 HRESULT WINAPI IDirect3DDeviceImpl_GetCaps(
472 LPDIRECT3DDEVICE iface, LPD3DDEVICEDESC lpD3DHWDevDesc,
473 LPD3DDEVICEDESC lpD3DSWDevDesc
475 ICOM_THIS(IDirect3DDeviceImpl,iface);
476 FIXME("(%p)->(%p,%p): stub\n", This, lpD3DHWDevDesc, lpD3DSWDevDesc);
482 HRESULT WINAPI IDirect3DDeviceImpl_SwapTextureHandles(
483 LPDIRECT3DDEVICE iface, LPDIRECT3DTEXTURE lpD3DTex1,
484 LPDIRECT3DTEXTURE lpD3DTex2
486 ICOM_THIS(IDirect3DDeviceImpl,iface);
487 IDirect3DTexture2Impl tmp;
488 TRACE("(%p)->(%p,%p)\n", This, lpD3DTex1, lpD3DTex2);
490 tmp = *(IDirect3DTexture2Impl*)lpD3DTex1;
491 *(IDirect3DTexture2Impl*)lpD3DTex1 = *(IDirect3DTexture2Impl*)lpD3DTex2;
492 *(IDirect3DTexture2Impl*)lpD3DTex2 = tmp;
497 HRESULT WINAPI IDirect3DDeviceImpl_CreateExecuteBuffer(
498 LPDIRECT3DDEVICE iface, LPD3DEXECUTEBUFFERDESC lpDesc,
499 LPDIRECT3DEXECUTEBUFFER *lplpDirect3DExecuteBuffer, IUnknown *pUnkOuter
501 ICOM_THIS(IDirect3DDeviceImpl,iface);
502 FIXME("(%p)->(%p,%p,%p): stub\n", This, lpDesc, lplpDirect3DExecuteBuffer, pUnkOuter);
506 HRESULT WINAPI IDirect3DDeviceImpl_GetStats(
507 LPDIRECT3DDEVICE iface, LPD3DSTATS lpD3DStats
509 ICOM_THIS(IDirect3DDeviceImpl,iface);
510 FIXME("(%p)->(%p): stub\n", This, lpD3DStats);
516 HRESULT WINAPI IDirect3DDeviceImpl_Execute(
517 LPDIRECT3DDEVICE iface, LPDIRECT3DEXECUTEBUFFER lpDirect3DExecuteBuffer,
518 LPDIRECT3DVIEWPORT lpDirect3DViewport, DWORD dwFlags
520 ICOM_THIS(IDirect3DDeviceImpl,iface);
521 TRACE("(%p)->(%p,%p,%08ld)\n", This, lpDirect3DExecuteBuffer, lpDirect3DViewport, dwFlags);
523 /* Put this as the default context */
526 ((IDirect3DExecuteBufferImpl*)lpDirect3DExecuteBuffer)->execute(lpDirect3DExecuteBuffer, iface, (IDirect3DViewport*)lpDirect3DViewport);
531 HRESULT WINAPI IDirect3DDeviceImpl_AddViewport(
532 LPDIRECT3DDEVICE iface, LPDIRECT3DVIEWPORT lpvp
534 ICOM_THIS(IDirect3DDeviceImpl,iface);
535 IDirect3DViewport2Impl* ilpvp=(IDirect3DViewport2Impl*)lpvp;
536 TRACE("(%p)->(%p)\n", This, ilpvp);
538 /* Adds this viewport to the viewport list */
539 ilpvp->next = This->viewport_list;
540 This->viewport_list = ilpvp;
547 HRESULT WINAPI IDirect3DDeviceImpl_DeleteViewport(
548 LPDIRECT3DDEVICE iface, LPDIRECT3DVIEWPORT lpvp
550 ICOM_THIS(IDirect3DDeviceImpl,iface);
551 IDirect3DViewport2Impl* ilpvp=(IDirect3DViewport2Impl*)lpvp;
552 IDirect3DViewport2Impl *cur, *prev;
553 TRACE("(%p)->(%p)\n", This, lpvp);
555 /* Finds this viewport in the list */
557 cur = This->viewport_list;
558 while ((cur != NULL) && (cur != ilpvp)) {
563 return DDERR_INVALIDOBJECT;
567 This->viewport_list = cur->next;
569 prev->next = cur->next;
573 HRESULT WINAPI IDirect3DDeviceImpl_NextViewport(
574 LPDIRECT3DDEVICE iface, LPDIRECT3DVIEWPORT lpvp,
575 LPDIRECT3DVIEWPORT* lplpvp, DWORD dwFlags
577 ICOM_THIS(IDirect3DDeviceImpl,iface);
578 IDirect3DViewport2Impl* ilpvp=(IDirect3DViewport2Impl*)lpvp;
579 IDirect3DViewport2Impl** ilplpvp=(IDirect3DViewport2Impl**)lplpvp;
580 TRACE("(%p)->(%p,%p,%08lx)\n", This, ilpvp, ilplpvp, dwFlags);
584 *ilplpvp = ilpvp->next;
587 *ilplpvp = This->viewport_list;
590 ilpvp = This->viewport_list;
591 while (ilpvp->next != NULL)
596 return DDERR_INVALIDPARAMS;
601 HRESULT WINAPI IDirect3DDeviceImpl_Pick(
602 LPDIRECT3DDEVICE iface, LPDIRECT3DEXECUTEBUFFER lpDirect3DExecuteBuffer,
603 LPDIRECT3DVIEWPORT lpDirect3DViewport, DWORD dwFlags, LPD3DRECT lpRect
605 ICOM_THIS(IDirect3DDeviceImpl,iface);
606 TRACE("(%p)->(%p,%p,%08lx,%p): stub\n", This, lpDirect3DExecuteBuffer, lpDirect3DViewport, dwFlags, lpRect);
610 HRESULT WINAPI IDirect3DDeviceImpl_GetPickRecords(
611 LPDIRECT3DDEVICE iface, LPDWORD lpCount, LPD3DPICKRECORD lpD3DPickRec
613 ICOM_THIS(IDirect3DDeviceImpl,iface);
614 FIXME("(%p)->(%p,%p): stub\n", This, lpCount, lpD3DPickRec);
620 HRESULT WINAPI IDirect3DDeviceImpl_EnumTextureFormats(
621 LPDIRECT3DDEVICE iface,LPD3DENUMTEXTUREFORMATSCALLBACK lpd3dEnumTextureProc,
624 ICOM_THIS(IDirect3DDeviceImpl,iface);
625 FIXME("(%p)->(%p,%p): stub\n", This, lpd3dEnumTextureProc, lpArg);
630 HRESULT WINAPI IDirect3DDeviceImpl_CreateMatrix(
631 LPDIRECT3DDEVICE iface, LPD3DMATRIXHANDLE lpD3DMatHandle
634 ICOM_THIS(IDirect3DDeviceImpl,iface);
635 TRACE("(%p)->(%p)\n", This, lpD3DMatHandle);
637 *lpD3DMatHandle = (D3DMATRIXHANDLE) HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,sizeof(D3DMATRIX));
643 HRESULT WINAPI IDirect3DDeviceImpl_SetMatrix(
644 LPDIRECT3DDEVICE iface, D3DMATRIXHANDLE d3dMatHandle,
645 const LPD3DMATRIX lpD3DMatrix)
647 ICOM_THIS(IDirect3DDeviceImpl,iface);
648 TRACE("(%p)->(%08lx,%p)\n", This, d3dMatHandle, lpD3DMatrix);
650 dump_mat(lpD3DMatrix);
651 *((D3DMATRIX *) d3dMatHandle) = *lpD3DMatrix;
656 HRESULT WINAPI IDirect3DDeviceImpl_GetMatrix(
657 LPDIRECT3DDEVICE iface,D3DMATRIXHANDLE D3DMatHandle,LPD3DMATRIX lpD3DMatrix
659 ICOM_THIS(IDirect3DDeviceImpl,iface);
660 TRACE("(%p)->(%08lx,%p)\n", This, D3DMatHandle, lpD3DMatrix);
662 *lpD3DMatrix = *((D3DMATRIX *) D3DMatHandle);
668 HRESULT WINAPI IDirect3DDeviceImpl_DeleteMatrix(
669 LPDIRECT3DDEVICE iface, D3DMATRIXHANDLE d3dMatHandle
671 ICOM_THIS(IDirect3DDeviceImpl,iface);
672 TRACE("(%p)->(%08lx)\n", This, d3dMatHandle);
673 HeapFree(GetProcessHeap(),0, (void *) d3dMatHandle);
678 HRESULT WINAPI IDirect3DDeviceImpl_BeginScene(LPDIRECT3DDEVICE iface)
680 ICOM_THIS(IDirect3DDeviceImpl,iface);
681 FIXME("(%p)->(): stub\n", This);
685 /* This is for the moment copy-pasted from IDirect3DDevice2...
686 Will make a common function ... */
687 HRESULT WINAPI IDirect3DDeviceImpl_EndScene(LPDIRECT3DDEVICE iface)
689 ICOM_THIS(IDirect3DDeviceImpl,iface);
690 FIXME("(%p)->(): stub\n", This);
694 HRESULT WINAPI IDirect3DDeviceImpl_GetDirect3D(
695 LPDIRECT3DDEVICE iface, LPDIRECT3D *lpDirect3D
697 ICOM_THIS(IDirect3DDeviceImpl,iface);
698 FIXME("(%p)->(%p): stub\n", This, lpDirect3D);
703 /*******************************************************************************
704 * Direct3DDevice VTable
706 static ICOM_VTABLE(IDirect3DDevice) WINE_UNUSED d3d_d3ddevice_vtbl =
708 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
709 IDirect3DDeviceImpl_QueryInterface,
710 IDirect3DDeviceImpl_AddRef,
711 IDirect3DDeviceImpl_Release,
712 IDirect3DDeviceImpl_Initialize,
713 IDirect3DDeviceImpl_GetCaps,
714 IDirect3DDeviceImpl_SwapTextureHandles,
715 IDirect3DDeviceImpl_CreateExecuteBuffer,
716 IDirect3DDeviceImpl_GetStats,
717 IDirect3DDeviceImpl_Execute,
718 IDirect3DDeviceImpl_AddViewport,
719 IDirect3DDeviceImpl_DeleteViewport,
720 IDirect3DDeviceImpl_NextViewport,
721 IDirect3DDeviceImpl_Pick,
722 IDirect3DDeviceImpl_GetPickRecords,
723 IDirect3DDeviceImpl_EnumTextureFormats,
724 IDirect3DDeviceImpl_CreateMatrix,
725 IDirect3DDeviceImpl_SetMatrix,
726 IDirect3DDeviceImpl_GetMatrix,
727 IDirect3DDeviceImpl_DeleteMatrix,
728 IDirect3DDeviceImpl_BeginScene,
729 IDirect3DDeviceImpl_EndScene,
730 IDirect3DDeviceImpl_GetDirect3D,