1 /* Direct3D private include file
2 * Copyright (c) 1998 Lionel ULMER
4 * This file contains all the structure that are not exported
5 * through d3d.h and all common macros.
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version.
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with this library; if not, write to the Free Software
19 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
22 #ifndef __GRAPHICS_WINE_D3D_PRIVATE_H
23 #define __GRAPHICS_WINE_D3D_PRIVATE_H
25 /* THIS FILE MUST NOT CONTAIN X11 or MESA DEFINES */
29 /*****************************************************************************
30 * Predeclare the interface implementation structures
32 typedef struct IDirect3DImpl IDirect3DImpl
;
33 typedef struct IDirect3D2Impl IDirect3D2Impl
;
34 typedef struct IDirect3D3Impl IDirect3D3Impl
;
36 typedef struct IDirect3DLightImpl IDirect3DLightImpl
;
37 typedef struct IDirect3DMaterial2Impl IDirect3DMaterial2Impl
;
38 typedef struct IDirect3DTexture2Impl IDirect3DTexture2Impl
;
39 typedef struct IDirect3DViewport2Impl IDirect3DViewport2Impl
;
40 typedef struct IDirect3DExecuteBufferImpl IDirect3DExecuteBufferImpl
;
41 typedef struct IDirect3DDeviceImpl IDirect3DDeviceImpl
;
42 typedef struct IDirect3DDevice2Impl IDirect3DDevice2Impl
;
44 #include "ddraw_private.h"
46 extern ICOM_VTABLE(IDirect3D
) mesa_d3dvt
;
47 extern ICOM_VTABLE(IDirect3D2
) mesa_d3d2vt
;
48 extern ICOM_VTABLE(IDirect3D3
) mesa_d3d3vt
;
50 /*****************************************************************************
51 * IDirect3D implementation structure
56 ICOM_VFIELD(IDirect3D
);
58 /* IDirect3D fields */
59 IDirectDrawImpl
* ddraw
;
63 /*****************************************************************************
64 * IDirect3D2 implementation structure
69 ICOM_VFIELD(IDirect3D2
);
71 /* IDirect3D2 fields */
72 IDirectDrawImpl
* ddraw
;
79 ICOM_VFIELD(IDirect3D3
);
81 /* IDirect3D2 fields */
82 IDirectDrawImpl
* ddraw
;
84 /* IDirect3D3 fields */
88 extern HRESULT WINAPI
IDirect3DImpl_QueryInterface(
89 LPDIRECT3D iface
,REFIID refiid
,LPVOID
*obj
91 extern ULONG WINAPI
IDirect3DImpl_AddRef(LPDIRECT3D iface
);
92 extern ULONG WINAPI
IDirect3DImpl_Release(LPDIRECT3D iface
)
94 extern HRESULT WINAPI
IDirect3DImpl_Initialize(LPDIRECT3D iface
,REFIID refiid
);
95 extern HRESULT WINAPI
IDirect3DImpl_EnumDevices(
96 LPDIRECT3D iface
, LPD3DENUMDEVICESCALLBACK cb
, LPVOID context
98 extern HRESULT WINAPI
IDirect3DImpl_CreateLight(
99 LPDIRECT3D iface
, LPDIRECT3DLIGHT
*lplight
, IUnknown
*lpunk
101 extern HRESULT WINAPI
IDirect3DImpl_CreateMaterial(
102 LPDIRECT3D iface
, LPDIRECT3DMATERIAL
*lpmaterial
, IUnknown
*lpunk
104 extern HRESULT WINAPI
IDirect3DImpl_CreateViewport(
105 LPDIRECT3D iface
, LPDIRECT3DVIEWPORT
*lpviewport
, IUnknown
*lpunk
107 extern HRESULT WINAPI
IDirect3DImpl_FindDevice(
108 LPDIRECT3D iface
, LPD3DFINDDEVICESEARCH lpfinddevsrc
,
109 LPD3DFINDDEVICERESULT lpfinddevrst
)
111 extern HRESULT WINAPI
IDirect3D2Impl_QueryInterface(LPDIRECT3D2 iface
,REFIID refiid
,LPVOID
*obj
);
112 extern ULONG WINAPI
IDirect3D2Impl_AddRef(LPDIRECT3D2 iface
);
113 extern ULONG WINAPI
IDirect3D2Impl_Release(LPDIRECT3D2 iface
);
114 extern HRESULT WINAPI
IDirect3D2Impl_EnumDevices(
115 LPDIRECT3D2 iface
,LPD3DENUMDEVICESCALLBACK cb
, LPVOID context
117 extern HRESULT WINAPI
IDirect3D2Impl_CreateLight(
118 LPDIRECT3D2 iface
, LPDIRECT3DLIGHT
*lplight
, IUnknown
*lpunk
120 extern HRESULT WINAPI
IDirect3D2Impl_CreateMaterial(
121 LPDIRECT3D2 iface
, LPDIRECT3DMATERIAL2
*lpmaterial
, IUnknown
*lpunk
123 extern HRESULT WINAPI
IDirect3D2Impl_CreateViewport(
124 LPDIRECT3D2 iface
, LPDIRECT3DVIEWPORT2
*lpviewport
, IUnknown
*lpunk
126 extern HRESULT WINAPI
IDirect3D2Impl_FindDevice(
127 LPDIRECT3D2 iface
, LPD3DFINDDEVICESEARCH lpfinddevsrc
,
128 LPD3DFINDDEVICERESULT lpfinddevrst
);
129 extern HRESULT WINAPI
IDirect3D2Impl_CreateDevice(
130 LPDIRECT3D2 iface
, REFCLSID rguid
, LPDIRECTDRAWSURFACE surface
,
131 LPDIRECT3DDEVICE2
*device
);
133 /*****************************************************************************
134 * IDirect3DLight implementation structure
136 struct IDirect3DLightImpl
138 /* IUnknown fields */
139 ICOM_VFIELD(IDirect3DLight
);
141 /* IDirect3DLight fields */
144 IDirect3D2Impl
* d3d2
;
150 /* Chained list used for adding / removing from viewports */
151 IDirect3DLightImpl
*next
, *prev
;
153 /* Activation function */
154 void (*activate
)(IDirect3DLightImpl
*);
160 /*****************************************************************************
161 * IDirect3DMaterial2 implementation structure
163 struct IDirect3DMaterial2Impl
165 /* IUnknown fields */
166 ICOM_VFIELD(IDirect3DMaterial2
);
168 /* IDirect3DMaterial2 fields */
171 IDirect3D2Impl
* d3d2
;
174 IDirect3DDeviceImpl
* active_device1
;
175 IDirect3DDevice2Impl
* active_device2
;
181 void (*activate
)(IDirect3DMaterial2Impl
* this);
185 /*****************************************************************************
186 * IDirect3DTexture2 implementation structure
188 struct IDirect3DTexture2Impl
190 /* IUnknown fields */
191 ICOM_VFIELD(IDirect3DTexture2
);
193 /* IDirect3DTexture2 fields */
194 void* D3Ddevice
; /* (void *) to use the same pointer
195 * for both Direct3D and Direct3D2 */
196 IDirectDrawSurfaceImpl
* surface
;
200 extern HRESULT WINAPI
IDirect3DTexture2Impl_QueryInterface(
201 LPDIRECT3DTEXTURE2 iface
, REFIID riid
, LPVOID
* ppvObj
203 extern ULONG WINAPI
IDirect3DTexture2Impl_AddRef(LPDIRECT3DTEXTURE2 iface
);
204 extern ULONG WINAPI
IDirect3DTexture2Impl_Release(LPDIRECT3DTEXTURE2 iface
);
205 extern HRESULT WINAPI
IDirect3DTextureImpl_GetHandle(LPDIRECT3DTEXTURE iface
,
206 LPDIRECT3DDEVICE lpD3DDevice
,
207 LPD3DTEXTUREHANDLE lpHandle
)
209 extern HRESULT WINAPI
IDirect3DTextureImpl_Initialize(LPDIRECT3DTEXTURE iface
,
210 LPDIRECT3DDEVICE lpD3DDevice
,
211 LPDIRECTDRAWSURFACE lpSurface
)
213 extern HRESULT WINAPI
IDirect3DTextureImpl_Unload(LPDIRECT3DTEXTURE iface
);
214 extern HRESULT WINAPI
IDirect3DTexture2Impl_GetHandle(
215 LPDIRECT3DTEXTURE2 iface
, LPDIRECT3DDEVICE2 lpD3DDevice2
,
216 LPD3DTEXTUREHANDLE lpHandle
218 extern HRESULT WINAPI
IDirect3DTexture2Impl_PaletteChanged(
219 LPDIRECT3DTEXTURE2 iface
, DWORD dwStart
, DWORD dwCount
221 extern HRESULT WINAPI
IDirect3DTexture2Impl_Load(
222 LPDIRECT3DTEXTURE2 iface
, LPDIRECT3DTEXTURE2 lpD3DTexture2
225 /*****************************************************************************
226 * IDirect3DViewport2 implementation structure
228 struct IDirect3DViewport2Impl
230 /* IUnknown fields */
231 ICOM_VFIELD(IDirect3DViewport2
);
233 /* IDirect3DViewport2 fields */
236 IDirect3D2Impl
* d3d2
;
238 /* If this viewport is active for one device, put the device here */
240 IDirect3DDeviceImpl
* active_device1
;
241 IDirect3DDevice2Impl
* active_device2
;
251 /* Activation function */
252 void (*activate
)(IDirect3DViewport2Impl
*);
254 /* Field used to chain viewports together */
255 IDirect3DViewport2Impl
* next
;
258 IDirect3DLightImpl
* lights
;
263 extern HRESULT WINAPI
IDirect3DViewport2Impl_QueryInterface(
264 LPDIRECT3DVIEWPORT2 iface
, REFIID riid
, LPVOID
* ppvObj
266 extern ULONG WINAPI
IDirect3DViewport2Impl_AddRef(LPDIRECT3DVIEWPORT2 iface
)
268 extern ULONG WINAPI
IDirect3DViewport2Impl_Release(LPDIRECT3DVIEWPORT2 iface
)
270 extern HRESULT WINAPI
IDirect3DViewport2Impl_Initialize(
271 LPDIRECT3DVIEWPORT2 iface
, LPDIRECT3D d3d
273 extern HRESULT WINAPI
IDirect3DViewport2Impl_GetViewport(
274 LPDIRECT3DVIEWPORT2 iface
, LPD3DVIEWPORT lpvp
276 extern HRESULT WINAPI
IDirect3DViewport2Impl_SetViewport(
277 LPDIRECT3DVIEWPORT2 iface
,LPD3DVIEWPORT lpvp
279 extern HRESULT WINAPI
IDirect3DViewport2Impl_TransformVertices(
280 LPDIRECT3DVIEWPORT2 iface
,DWORD dwVertexCount
,LPD3DTRANSFORMDATA lpData
,
281 DWORD dwFlags
,LPDWORD lpOffScreen
283 extern HRESULT WINAPI
IDirect3DViewport2Impl_LightElements(
284 LPDIRECT3DVIEWPORT2 iface
,DWORD dwElementCount
,LPD3DLIGHTDATA lpData
286 extern HRESULT WINAPI
IDirect3DViewport2Impl_SetBackground(
287 LPDIRECT3DVIEWPORT2 iface
, D3DMATERIALHANDLE hMat
289 extern HRESULT WINAPI
IDirect3DViewport2Impl_GetBackground(
290 LPDIRECT3DVIEWPORT2 iface
,LPD3DMATERIALHANDLE lphMat
,LPBOOL lpValid
292 extern HRESULT WINAPI
IDirect3DViewport2Impl_SetBackgroundDepth(
293 LPDIRECT3DVIEWPORT2 iface
,LPDIRECTDRAWSURFACE lpDDSurface
295 extern HRESULT WINAPI
IDirect3DViewport2Impl_GetBackgroundDepth(
296 LPDIRECT3DVIEWPORT2 iface
,LPDIRECTDRAWSURFACE
* lplpDDSurface
,LPBOOL lpValid
298 extern HRESULT WINAPI
IDirect3DViewport2Impl_Clear(
299 LPDIRECT3DVIEWPORT2 iface
, DWORD dwCount
, LPD3DRECT lpRects
, DWORD dwFlags
301 extern HRESULT WINAPI
IDirect3DViewport2Impl_AddLight(
302 LPDIRECT3DVIEWPORT2 iface
,LPDIRECT3DLIGHT lpLight
304 extern HRESULT WINAPI
IDirect3DViewport2Impl_DeleteLight(
305 LPDIRECT3DVIEWPORT2 iface
,LPDIRECT3DLIGHT lpLight
307 extern HRESULT WINAPI
IDirect3DViewport2Impl_NextLight(
308 LPDIRECT3DVIEWPORT2 iface
, LPDIRECT3DLIGHT lpLight
,
309 LPDIRECT3DLIGHT
* lplpLight
, DWORD dwFlags
311 extern HRESULT WINAPI
IDirect3DViewport2Impl_GetViewport2(
312 LPDIRECT3DVIEWPORT2 iface
, LPD3DVIEWPORT2 lpViewport2
314 extern HRESULT WINAPI
IDirect3DViewport2Impl_SetViewport2(
315 LPDIRECT3DVIEWPORT2 iface
, LPD3DVIEWPORT2 lpViewport2
318 /*****************************************************************************
319 * IDirect3DExecuteBuffer implementation structure
321 struct IDirect3DExecuteBufferImpl
323 /* IUnknown fields */
324 ICOM_VFIELD(IDirect3DExecuteBuffer
);
326 /* IDirect3DExecuteBuffer fields */
327 IDirect3DDeviceImpl
* d3ddev
;
329 D3DEXECUTEBUFFERDESC desc
;
332 /* This buffer will store the transformed vertices */
334 D3DVERTEXTYPE vertex_type
;
336 /* This flags is set to TRUE if we allocated ourselves the
340 void (*execute
)(IDirect3DExecuteBuffer
* this,
341 IDirect3DDevice
* dev
,
342 IDirect3DViewport
* vp
);
345 extern LPDIRECT3DEXECUTEBUFFER
d3dexecutebuffer_create(IDirect3DDeviceImpl
* d3ddev
, LPD3DEXECUTEBUFFERDESC lpDesc
);
347 /*****************************************************************************
348 * IDirect3DDevice implementation structure
350 struct IDirect3DDeviceImpl
352 /* IUnknown fields */
353 ICOM_VFIELD(IDirect3DDevice
);
355 /* IDirect3DDevice fields */
357 IDirectDrawSurfaceImpl
* surface
;
359 IDirect3DViewport2Impl
* viewport_list
;
360 IDirect3DViewport2Impl
* current_viewport
;
362 void (*set_context
)(IDirect3DDeviceImpl
*);
366 /*****************************************************************************
367 * IDirect3DDevice2 implementation structure
369 struct IDirect3DDevice2Impl
371 /* IUnknown fields */
372 ICOM_VFIELD(IDirect3DDevice2
);
374 /* IDirect3DDevice fields */
376 IDirectDrawSurfaceImpl
* surface
;
378 IDirect3DViewport2Impl
* viewport_list
;
379 IDirect3DViewport2Impl
* current_viewport
;
381 void (*set_context
)(IDirect3DDevice2Impl
*);
384 extern HRESULT WINAPI
IDirect3DDevice2Impl_QueryInterface(
385 LPDIRECT3DDEVICE2 iface
, REFIID riid
, LPVOID
* ppvObj
387 extern ULONG WINAPI
IDirect3DDevice2Impl_AddRef(LPDIRECT3DDEVICE2 iface
);
388 extern ULONG WINAPI
IDirect3DDevice2Impl_Release(LPDIRECT3DDEVICE2 iface
)
390 extern HRESULT WINAPI
IDirect3DDevice2Impl_GetCaps(
391 LPDIRECT3DDEVICE2 iface
, LPD3DDEVICEDESC lpdescsoft
,
392 LPD3DDEVICEDESC lpdeschard
394 extern HRESULT WINAPI
IDirect3DDevice2Impl_SwapTextureHandles(
395 LPDIRECT3DDEVICE2 iface
,LPDIRECT3DTEXTURE2 lptex1
,LPDIRECT3DTEXTURE2 lptex2
397 extern HRESULT WINAPI
IDirect3DDevice2Impl_GetStats(
398 LPDIRECT3DDEVICE2 iface
, LPD3DSTATS lpstats
)
400 extern HRESULT WINAPI
IDirect3DDevice2Impl_AddViewport(
401 LPDIRECT3DDEVICE2 iface
, LPDIRECT3DVIEWPORT2 lpvp
403 extern HRESULT WINAPI
IDirect3DDevice2Impl_DeleteViewport(
404 LPDIRECT3DDEVICE2 iface
, LPDIRECT3DVIEWPORT2 lpvp
)
406 extern HRESULT WINAPI
IDirect3DDevice2Impl_NextViewport(
407 LPDIRECT3DDEVICE2 iface
, LPDIRECT3DVIEWPORT2 lpvp
,
408 LPDIRECT3DVIEWPORT2
* lplpvp
, DWORD dwFlags
410 extern HRESULT WINAPI
IDirect3DDevice2Impl_EnumTextureFormats(
411 LPDIRECT3DDEVICE2 iface
, LPD3DENUMTEXTUREFORMATSCALLBACK cb
, LPVOID context
413 extern HRESULT WINAPI
IDirect3DDevice2Impl_BeginScene(LPDIRECT3DDEVICE2 iface
);
414 extern HRESULT WINAPI
IDirect3DDevice2Impl_EndScene(LPDIRECT3DDEVICE2 iface
);
415 extern HRESULT WINAPI
IDirect3DDevice2Impl_GetDirect3D(
416 LPDIRECT3DDEVICE2 iface
, LPDIRECT3D2
*lpd3d2
418 extern HRESULT WINAPI
IDirect3DDevice2Impl_SetCurrentViewport(
419 LPDIRECT3DDEVICE2 iface
, LPDIRECT3DVIEWPORT2 lpvp
421 extern HRESULT WINAPI
IDirect3DDevice2Impl_GetCurrentViewport(
422 LPDIRECT3DDEVICE2 iface
, LPDIRECT3DVIEWPORT2
*lplpvp
424 extern HRESULT WINAPI
IDirect3DDevice2Impl_SetRenderTarget(
425 LPDIRECT3DDEVICE2 iface
, LPDIRECTDRAWSURFACE lpdds
, DWORD dwFlags
427 extern HRESULT WINAPI
IDirect3DDevice2Impl_GetRenderTarget(
428 LPDIRECT3DDEVICE2 iface
, LPDIRECTDRAWSURFACE
*lplpdds
430 extern HRESULT WINAPI
IDirect3DDevice2Impl_Begin(
431 LPDIRECT3DDEVICE2 iface
, D3DPRIMITIVETYPE d3dp
, D3DVERTEXTYPE d3dv
,
434 extern HRESULT WINAPI
IDirect3DDevice2Impl_BeginIndexed(
435 LPDIRECT3DDEVICE2 iface
, D3DPRIMITIVETYPE d3dp
, D3DVERTEXTYPE d3dv
,
436 LPVOID lpvert
, DWORD numvert
, DWORD dwFlags
438 extern HRESULT WINAPI
IDirect3DDevice2Impl_Vertex(
439 LPDIRECT3DDEVICE2 iface
,LPVOID lpvert
441 extern HRESULT WINAPI
IDirect3DDevice2Impl_Index(LPDIRECT3DDEVICE2 iface
, WORD index
);
442 extern HRESULT WINAPI
IDirect3DDevice2Impl_End(LPDIRECT3DDEVICE2 iface
,DWORD dwFlags
);
443 extern HRESULT WINAPI
IDirect3DDevice2Impl_GetRenderState(
444 LPDIRECT3DDEVICE2 iface
, D3DRENDERSTATETYPE d3drs
, LPDWORD lprstate
446 extern HRESULT WINAPI
IDirect3DDevice2Impl_SetRenderState(
447 LPDIRECT3DDEVICE2 iface
, D3DRENDERSTATETYPE dwRenderStateType
,
450 extern HRESULT WINAPI
IDirect3DDevice2Impl_GetLightState(
451 LPDIRECT3DDEVICE2 iface
, D3DLIGHTSTATETYPE d3dls
, LPDWORD lplstate
453 extern HRESULT WINAPI
IDirect3DDevice2Impl_SetLightState(
454 LPDIRECT3DDEVICE2 iface
, D3DLIGHTSTATETYPE dwLightStateType
,
457 extern HRESULT WINAPI
IDirect3DDevice2Impl_SetTransform(
458 LPDIRECT3DDEVICE2 iface
, D3DTRANSFORMSTATETYPE d3dts
, LPD3DMATRIX lpmatrix
460 extern HRESULT WINAPI
IDirect3DDevice2Impl_GetTransform(
461 LPDIRECT3DDEVICE2 iface
, D3DTRANSFORMSTATETYPE d3dts
, LPD3DMATRIX lpmatrix
463 extern HRESULT WINAPI
IDirect3DDevice2Impl_MultiplyTransform(
464 LPDIRECT3DDEVICE2 iface
, D3DTRANSFORMSTATETYPE d3dts
, LPD3DMATRIX lpmatrix
466 extern HRESULT WINAPI
IDirect3DDevice2Impl_DrawPrimitive(
467 LPDIRECT3DDEVICE2 iface
, D3DPRIMITIVETYPE d3dp
, D3DVERTEXTYPE d3dv
,
468 LPVOID lpvertex
, DWORD vertcount
, DWORD dwFlags
470 extern HRESULT WINAPI
IDirect3DDevice2Impl_DrawIndexedPrimitive(
471 LPDIRECT3DDEVICE2 iface
, D3DPRIMITIVETYPE d3dp
, D3DVERTEXTYPE d3dv
,
472 LPVOID lpvertex
, DWORD vertcount
, LPWORD lpindexes
, DWORD indexcount
,
475 extern HRESULT WINAPI
IDirect3DDevice2Impl_SetClipStatus(
476 LPDIRECT3DDEVICE2 iface
, LPD3DCLIPSTATUS lpcs
478 extern HRESULT WINAPI
IDirect3DDevice2Impl_GetClipStatus(
479 LPDIRECT3DDEVICE2 iface
, LPD3DCLIPSTATUS lpcs
481 extern HRESULT WINAPI
IDirect3DDeviceImpl_QueryInterface(
482 LPDIRECT3DDEVICE iface
, REFIID riid
, LPVOID
* ppvObj
484 extern ULONG WINAPI
IDirect3DDeviceImpl_AddRef(LPDIRECT3DDEVICE iface
);
485 extern ULONG WINAPI
IDirect3DDeviceImpl_Release(LPDIRECT3DDEVICE iface
);
486 extern HRESULT WINAPI
IDirect3DDeviceImpl_Initialize(
487 LPDIRECT3DDEVICE iface
, LPDIRECT3D lpd3d
, LPGUID lpGUID
,
488 LPD3DDEVICEDESC lpd3ddvdesc
490 extern HRESULT WINAPI
IDirect3DDeviceImpl_GetCaps(
491 LPDIRECT3DDEVICE iface
, LPD3DDEVICEDESC lpD3DHWDevDesc
,
492 LPD3DDEVICEDESC lpD3DSWDevDesc
494 extern HRESULT WINAPI
IDirect3DDeviceImpl_SwapTextureHandles(
495 LPDIRECT3DDEVICE iface
, LPDIRECT3DTEXTURE lpD3DTex1
,
496 LPDIRECT3DTEXTURE lpD3DTex2
498 extern HRESULT WINAPI
IDirect3DDeviceImpl_CreateExecuteBuffer(
499 LPDIRECT3DDEVICE iface
, LPD3DEXECUTEBUFFERDESC lpDesc
,
500 LPDIRECT3DEXECUTEBUFFER
*lplpDirect3DExecuteBuffer
, IUnknown
*pUnkOuter
502 extern HRESULT WINAPI
IDirect3DDeviceImpl_GetStats(
503 LPDIRECT3DDEVICE iface
, LPD3DSTATS lpD3DStats
505 extern HRESULT WINAPI
IDirect3DDeviceImpl_Execute(
506 LPDIRECT3DDEVICE iface
, LPDIRECT3DEXECUTEBUFFER lpDirect3DExecuteBuffer
,
507 LPDIRECT3DVIEWPORT lpDirect3DViewport
, DWORD dwFlags
509 extern HRESULT WINAPI
IDirect3DDeviceImpl_AddViewport(
510 LPDIRECT3DDEVICE iface
, LPDIRECT3DVIEWPORT lpvp
512 extern HRESULT WINAPI
IDirect3DDeviceImpl_DeleteViewport(
513 LPDIRECT3DDEVICE iface
, LPDIRECT3DVIEWPORT lpvp
515 extern HRESULT WINAPI
IDirect3DDeviceImpl_NextViewport(
516 LPDIRECT3DDEVICE iface
, LPDIRECT3DVIEWPORT lpvp
,
517 LPDIRECT3DVIEWPORT
* lplpvp
, DWORD dwFlags
519 extern HRESULT WINAPI
IDirect3DDeviceImpl_Pick(
520 LPDIRECT3DDEVICE iface
, LPDIRECT3DEXECUTEBUFFER lpDirect3DExecuteBuffer
,
521 LPDIRECT3DVIEWPORT lpDirect3DViewport
, DWORD dwFlags
, LPD3DRECT lpRect
523 extern HRESULT WINAPI
IDirect3DDeviceImpl_GetPickRecords(
524 LPDIRECT3DDEVICE iface
, LPDWORD lpCount
, LPD3DPICKRECORD lpD3DPickRec
526 extern HRESULT WINAPI
IDirect3DDeviceImpl_EnumTextureFormats(
527 LPDIRECT3DDEVICE iface
,LPD3DENUMTEXTUREFORMATSCALLBACK lpd3dEnumTextureProc
,
530 extern HRESULT WINAPI
IDirect3DDeviceImpl_CreateMatrix(
531 LPDIRECT3DDEVICE iface
, LPD3DMATRIXHANDLE lpD3DMatHandle
534 extern HRESULT WINAPI
IDirect3DDeviceImpl_SetMatrix(
535 LPDIRECT3DDEVICE iface
, D3DMATRIXHANDLE d3dMatHandle
,
536 const LPD3DMATRIX lpD3DMatrix
)
538 extern HRESULT WINAPI
IDirect3DDeviceImpl_GetMatrix(
539 LPDIRECT3DDEVICE iface
,D3DMATRIXHANDLE D3DMatHandle
,LPD3DMATRIX lpD3DMatrix
541 extern HRESULT WINAPI
IDirect3DDeviceImpl_DeleteMatrix(
542 LPDIRECT3DDEVICE iface
, D3DMATRIXHANDLE d3dMatHandle
544 extern HRESULT WINAPI
IDirect3DDeviceImpl_BeginScene(LPDIRECT3DDEVICE iface
)
546 extern HRESULT WINAPI
IDirect3DDeviceImpl_EndScene(LPDIRECT3DDEVICE iface
)
548 extern HRESULT WINAPI
IDirect3DDeviceImpl_GetDirect3D(
549 LPDIRECT3DDEVICE iface
, LPDIRECT3D
*lpDirect3D
552 /* All non-static functions 'exported' by various sub-objects */
553 extern LPDIRECT3DTEXTURE2
d3dtexture2_create(IDirectDrawSurfaceImpl
* surf
);
554 extern LPDIRECT3DTEXTURE
d3dtexture_create(IDirectDrawSurfaceImpl
* surf
);
556 extern LPDIRECT3DLIGHT
d3dlight_create_dx3(IDirect3DImpl
* d3d1
);
557 extern LPDIRECT3DLIGHT
d3dlight_create(IDirect3D2Impl
* d3d2
);
559 extern LPDIRECT3DEXECUTEBUFFER
d3dexecutebuffer_create(IDirect3DDeviceImpl
* d3ddev
, LPD3DEXECUTEBUFFERDESC lpDesc
);
561 extern LPDIRECT3DMATERIAL
d3dmaterial_create(IDirect3DImpl
* d3d1
);
562 extern LPDIRECT3DMATERIAL2
d3dmaterial2_create(IDirect3D2Impl
* d3d2
);
564 extern LPDIRECT3DVIEWPORT
d3dviewport_create(IDirect3DImpl
* d3d1
);
565 extern LPDIRECT3DVIEWPORT2
d3dviewport2_create(IDirect3D2Impl
* d3d2
);
567 extern int is_OpenGL_dx3(REFCLSID rguid
, IDirectDrawSurfaceImpl
* surface
, IDirect3DDeviceImpl
** device
);
568 extern int d3d_OpenGL_dx3(LPD3DENUMDEVICESCALLBACK cb
, LPVOID context
) ;
569 extern int d3d_OpenGL(LPD3DENUMDEVICESCALLBACK cb
, LPVOID context
) ;
570 extern int is_OpenGL(REFCLSID rguid
, IDirectDrawSurfaceImpl
* surface
, IDirect3DDevice2Impl
** device
, IDirect3D2Impl
* d3d
);
573 extern const char *_get_renderstate(D3DRENDERSTATETYPE type
);
575 #define dump_mat(mat) \
576 TRACE("%f %f %f %f\n", (mat)->_11, (mat)->_12, (mat)->_13, (mat)->_14); \
577 TRACE("%f %f %f %f\n", (mat)->_21, (mat)->_22, (mat)->_23, (mat)->_24); \
578 TRACE("%f %f %f %f\n", (mat)->_31, (mat)->_32, (mat)->_33, (mat)->_34); \
579 TRACE("%f %f %f %f\n", (mat)->_41, (mat)->_42, (mat)->_43, (mat)->_44);
581 #endif /* __GRAPHICS_WINE_D3D_PRIVATE_H */