/* Direct3D private include file (c) 1998 Lionel ULMER This files contains all the structure that are not exported through d3d.h and all common macros. */ #ifndef __GRAPHICS_WINE_D3D_PRIVATE_H #define __GRAPHICS_WINE_D3D_PRIVATE_H /* THIS FILE MUST NOT CONTAIN X11 or MESA DEFINES */ #include "d3d.h" /***************************************************************************** * Predeclare the interface implementation structures */ typedef struct IDirect3DImpl IDirect3DImpl; typedef struct IDirect3D2Impl IDirect3D2Impl; typedef struct IDirect3D3Impl IDirect3D3Impl; typedef struct IDirect3DLightImpl IDirect3DLightImpl; typedef struct IDirect3DMaterial2Impl IDirect3DMaterial2Impl; typedef struct IDirect3DTexture2Impl IDirect3DTexture2Impl; typedef struct IDirect3DViewport2Impl IDirect3DViewport2Impl; typedef struct IDirect3DExecuteBufferImpl IDirect3DExecuteBufferImpl; typedef struct IDirect3DDeviceImpl IDirect3DDeviceImpl; typedef struct IDirect3DDevice2Impl IDirect3DDevice2Impl; #include "ddraw_private.h" extern ICOM_VTABLE(IDirect3D) mesa_d3dvt; extern ICOM_VTABLE(IDirect3D2) mesa_d3d2vt; extern ICOM_VTABLE(IDirect3D3) mesa_d3d3vt; /***************************************************************************** * IDirect3D implementation structure */ struct IDirect3DImpl { /* IUnknown fields */ ICOM_VFIELD(IDirect3D); DWORD ref; /* IDirect3D fields */ IDirectDrawImpl* ddraw; LPVOID private; }; /***************************************************************************** * IDirect3D2 implementation structure */ struct IDirect3D2Impl { /* IUnknown fields */ ICOM_VFIELD(IDirect3D2); DWORD ref; /* IDirect3D2 fields */ IDirectDrawImpl* ddraw; LPVOID private; }; struct IDirect3D3Impl { /* IUnknown fields */ ICOM_VFIELD(IDirect3D3); DWORD ref; /* IDirect3D2 fields */ IDirectDrawImpl* ddraw; LPVOID private; /* IDirect3D3 fields */ }; extern HRESULT WINAPI IDirect3DImpl_QueryInterface( LPDIRECT3D iface,REFIID refiid,LPVOID *obj ); extern ULONG WINAPI IDirect3DImpl_AddRef(LPDIRECT3D iface); extern ULONG WINAPI IDirect3DImpl_Release(LPDIRECT3D iface) ; extern HRESULT WINAPI IDirect3DImpl_Initialize(LPDIRECT3D iface,REFIID refiid); extern HRESULT WINAPI IDirect3DImpl_EnumDevices( LPDIRECT3D iface, LPD3DENUMDEVICESCALLBACK cb, LPVOID context ); extern HRESULT WINAPI IDirect3DImpl_CreateLight( LPDIRECT3D iface, LPDIRECT3DLIGHT *lplight, IUnknown *lpunk ); extern HRESULT WINAPI IDirect3DImpl_CreateMaterial( LPDIRECT3D iface, LPDIRECT3DMATERIAL *lpmaterial, IUnknown *lpunk ); extern HRESULT WINAPI IDirect3DImpl_CreateViewport( LPDIRECT3D iface, LPDIRECT3DVIEWPORT *lpviewport, IUnknown *lpunk ); extern HRESULT WINAPI IDirect3DImpl_FindDevice( LPDIRECT3D iface, LPD3DFINDDEVICESEARCH lpfinddevsrc, LPD3DFINDDEVICERESULT lpfinddevrst) ; extern HRESULT WINAPI IDirect3D2Impl_QueryInterface(LPDIRECT3D2 iface,REFIID refiid,LPVOID *obj); extern ULONG WINAPI IDirect3D2Impl_AddRef(LPDIRECT3D2 iface); extern ULONG WINAPI IDirect3D2Impl_Release(LPDIRECT3D2 iface); extern HRESULT WINAPI IDirect3D2Impl_EnumDevices( LPDIRECT3D2 iface,LPD3DENUMDEVICESCALLBACK cb, LPVOID context ); extern HRESULT WINAPI IDirect3D2Impl_CreateLight( LPDIRECT3D2 iface, LPDIRECT3DLIGHT *lplight, IUnknown *lpunk ); extern HRESULT WINAPI IDirect3D2Impl_CreateMaterial( LPDIRECT3D2 iface, LPDIRECT3DMATERIAL2 *lpmaterial, IUnknown *lpunk ); extern HRESULT WINAPI IDirect3D2Impl_CreateViewport( LPDIRECT3D2 iface, LPDIRECT3DVIEWPORT2 *lpviewport, IUnknown *lpunk ); extern HRESULT WINAPI IDirect3D2Impl_FindDevice( LPDIRECT3D2 iface, LPD3DFINDDEVICESEARCH lpfinddevsrc, LPD3DFINDDEVICERESULT lpfinddevrst); extern HRESULT WINAPI IDirect3D2Impl_CreateDevice( LPDIRECT3D2 iface, REFCLSID rguid, LPDIRECTDRAWSURFACE surface, LPDIRECT3DDEVICE2 *device); /***************************************************************************** * IDirect3DLight implementation structure */ struct IDirect3DLightImpl { /* IUnknown fields */ ICOM_VFIELD(IDirect3DLight); DWORD ref; /* IDirect3DLight fields */ union { IDirect3DImpl* d3d1; IDirect3D2Impl* d3d2; } d3d; int type; D3DLIGHT2 light; /* Chained list used for adding / removing from viewports */ IDirect3DLightImpl *next, *prev; /* Activation function */ void (*activate)(IDirect3DLightImpl*); int is_active; LPVOID private; }; /***************************************************************************** * IDirect3DMaterial2 implementation structure */ struct IDirect3DMaterial2Impl { /* IUnknown fields */ ICOM_VFIELD(IDirect3DMaterial2); DWORD ref; /* IDirect3DMaterial2 fields */ union { IDirect3DImpl* d3d1; IDirect3D2Impl* d3d2; } d3d; union { IDirect3DDeviceImpl* active_device1; IDirect3DDevice2Impl* active_device2; } device; int use_d3d2; D3DMATERIAL mat; void (*activate)(IDirect3DMaterial2Impl* this); LPVOID private; }; /***************************************************************************** * IDirect3DTexture2 implementation structure */ struct IDirect3DTexture2Impl { /* IUnknown fields */ ICOM_VFIELD(IDirect3DTexture2); DWORD ref; /* IDirect3DTexture2 fields */ void* D3Ddevice; /* (void *) to use the same pointer * for both Direct3D and Direct3D2 */ IDirectDrawSurfaceImpl* surface; LPVOID private; }; extern HRESULT WINAPI IDirect3DTexture2Impl_QueryInterface( LPDIRECT3DTEXTURE2 iface, REFIID riid, LPVOID* ppvObj ); extern ULONG WINAPI IDirect3DTexture2Impl_AddRef(LPDIRECT3DTEXTURE2 iface); extern ULONG WINAPI IDirect3DTexture2Impl_Release(LPDIRECT3DTEXTURE2 iface); extern HRESULT WINAPI IDirect3DTextureImpl_GetHandle(LPDIRECT3DTEXTURE iface, LPDIRECT3DDEVICE lpD3DDevice, LPD3DTEXTUREHANDLE lpHandle) ; extern HRESULT WINAPI IDirect3DTextureImpl_Initialize(LPDIRECT3DTEXTURE iface, LPDIRECT3DDEVICE lpD3DDevice, LPDIRECTDRAWSURFACE lpSurface) ; extern HRESULT WINAPI IDirect3DTextureImpl_Unload(LPDIRECT3DTEXTURE iface); extern HRESULT WINAPI IDirect3DTexture2Impl_GetHandle( LPDIRECT3DTEXTURE2 iface, LPDIRECT3DDEVICE2 lpD3DDevice2, LPD3DTEXTUREHANDLE lpHandle ); extern HRESULT WINAPI IDirect3DTexture2Impl_PaletteChanged( LPDIRECT3DTEXTURE2 iface, DWORD dwStart, DWORD dwCount ); extern HRESULT WINAPI IDirect3DTexture2Impl_Load( LPDIRECT3DTEXTURE2 iface, LPDIRECT3DTEXTURE2 lpD3DTexture2 ); /***************************************************************************** * IDirect3DViewport2 implementation structure */ struct IDirect3DViewport2Impl { /* IUnknown fields */ ICOM_VFIELD(IDirect3DViewport2); DWORD ref; /* IDirect3DViewport2 fields */ union { IDirect3DImpl* d3d1; IDirect3D2Impl* d3d2; } d3d; /* If this viewport is active for one device, put the device here */ union { IDirect3DDeviceImpl* active_device1; IDirect3DDevice2Impl* active_device2; } device; int use_d3d2; union { D3DVIEWPORT vp1; D3DVIEWPORT2 vp2; } viewport; int use_vp2; /* Activation function */ void (*activate)(IDirect3DViewport2Impl*); /* Field used to chain viewports together */ IDirect3DViewport2Impl* next; /* Lights list */ IDirect3DLightImpl* lights; LPVOID private; }; extern HRESULT WINAPI IDirect3DViewport2Impl_QueryInterface( LPDIRECT3DVIEWPORT2 iface, REFIID riid, LPVOID* ppvObj ); extern ULONG WINAPI IDirect3DViewport2Impl_AddRef(LPDIRECT3DVIEWPORT2 iface) ; extern ULONG WINAPI IDirect3DViewport2Impl_Release(LPDIRECT3DVIEWPORT2 iface) ; extern HRESULT WINAPI IDirect3DViewport2Impl_Initialize( LPDIRECT3DVIEWPORT2 iface, LPDIRECT3D d3d ); extern HRESULT WINAPI IDirect3DViewport2Impl_GetViewport( LPDIRECT3DVIEWPORT2 iface, LPD3DVIEWPORT lpvp ); extern HRESULT WINAPI IDirect3DViewport2Impl_SetViewport( LPDIRECT3DVIEWPORT2 iface,LPD3DVIEWPORT lpvp ); extern HRESULT WINAPI IDirect3DViewport2Impl_TransformVertices( LPDIRECT3DVIEWPORT2 iface,DWORD dwVertexCount,LPD3DTRANSFORMDATA lpData, DWORD dwFlags,LPDWORD lpOffScreen ); extern HRESULT WINAPI IDirect3DViewport2Impl_LightElements( LPDIRECT3DVIEWPORT2 iface,DWORD dwElementCount,LPD3DLIGHTDATA lpData ); extern HRESULT WINAPI IDirect3DViewport2Impl_SetBackground( LPDIRECT3DVIEWPORT2 iface, D3DMATERIALHANDLE hMat ); extern HRESULT WINAPI IDirect3DViewport2Impl_GetBackground( LPDIRECT3DVIEWPORT2 iface,LPD3DMATERIALHANDLE lphMat,LPBOOL lpValid ); extern HRESULT WINAPI IDirect3DViewport2Impl_SetBackgroundDepth( LPDIRECT3DVIEWPORT2 iface,LPDIRECTDRAWSURFACE lpDDSurface ); extern HRESULT WINAPI IDirect3DViewport2Impl_GetBackgroundDepth( LPDIRECT3DVIEWPORT2 iface,LPDIRECTDRAWSURFACE* lplpDDSurface,LPBOOL lpValid ); extern HRESULT WINAPI IDirect3DViewport2Impl_Clear( LPDIRECT3DVIEWPORT2 iface, DWORD dwCount, LPD3DRECT lpRects, DWORD dwFlags ); extern HRESULT WINAPI IDirect3DViewport2Impl_AddLight( LPDIRECT3DVIEWPORT2 iface,LPDIRECT3DLIGHT lpLight ); extern HRESULT WINAPI IDirect3DViewport2Impl_DeleteLight( LPDIRECT3DVIEWPORT2 iface,LPDIRECT3DLIGHT lpLight ); extern HRESULT WINAPI IDirect3DViewport2Impl_NextLight( LPDIRECT3DVIEWPORT2 iface, LPDIRECT3DLIGHT lpLight, LPDIRECT3DLIGHT* lplpLight, DWORD dwFlags ); extern HRESULT WINAPI IDirect3DViewport2Impl_GetViewport2( LPDIRECT3DVIEWPORT2 iface, LPD3DVIEWPORT2 lpViewport2 ); extern HRESULT WINAPI IDirect3DViewport2Impl_SetViewport2( LPDIRECT3DVIEWPORT2 iface, LPD3DVIEWPORT2 lpViewport2 ); /***************************************************************************** * IDirect3DExecuteBuffer implementation structure */ struct IDirect3DExecuteBufferImpl { /* IUnknown fields */ ICOM_VFIELD(IDirect3DExecuteBuffer); DWORD ref; /* IDirect3DExecuteBuffer fields */ IDirect3DDeviceImpl* d3ddev; D3DEXECUTEBUFFERDESC desc; D3DEXECUTEDATA data; /* This buffer will store the transformed vertices */ void* vertex_data; D3DVERTEXTYPE vertex_type; /* This flags is set to TRUE if we allocated ourselves the data buffer */ BOOL need_free; void (*execute)(IDirect3DExecuteBuffer* this, IDirect3DDevice* dev, IDirect3DViewport* vp); LPVOID private; }; extern LPDIRECT3DEXECUTEBUFFER d3dexecutebuffer_create(IDirect3DDeviceImpl* d3ddev, LPD3DEXECUTEBUFFERDESC lpDesc); /***************************************************************************** * IDirect3DDevice implementation structure */ struct IDirect3DDeviceImpl { /* IUnknown fields */ ICOM_VFIELD(IDirect3DDevice); DWORD ref; /* IDirect3DDevice fields */ IDirect3DImpl* d3d; IDirectDrawSurfaceImpl* surface; IDirect3DViewport2Impl* viewport_list; IDirect3DViewport2Impl* current_viewport; void (*set_context)(IDirect3DDeviceImpl*); LPVOID private; }; /***************************************************************************** * IDirect3DDevice2 implementation structure */ struct IDirect3DDevice2Impl { /* IUnknown fields */ ICOM_VFIELD(IDirect3DDevice2); DWORD ref; /* IDirect3DDevice fields */ IDirect3D2Impl* d3d; IDirectDrawSurfaceImpl* surface; IDirect3DViewport2Impl* viewport_list; IDirect3DViewport2Impl* current_viewport; void (*set_context)(IDirect3DDevice2Impl*); LPVOID private; }; extern HRESULT WINAPI IDirect3DDevice2Impl_QueryInterface( LPDIRECT3DDEVICE2 iface, REFIID riid, LPVOID* ppvObj ); extern ULONG WINAPI IDirect3DDevice2Impl_AddRef(LPDIRECT3DDEVICE2 iface); extern ULONG WINAPI IDirect3DDevice2Impl_Release(LPDIRECT3DDEVICE2 iface) ; extern HRESULT WINAPI IDirect3DDevice2Impl_GetCaps( LPDIRECT3DDEVICE2 iface, LPD3DDEVICEDESC lpdescsoft, LPD3DDEVICEDESC lpdeschard ); extern HRESULT WINAPI IDirect3DDevice2Impl_SwapTextureHandles( LPDIRECT3DDEVICE2 iface,LPDIRECT3DTEXTURE2 lptex1,LPDIRECT3DTEXTURE2 lptex2 ); extern HRESULT WINAPI IDirect3DDevice2Impl_GetStats( LPDIRECT3DDEVICE2 iface, LPD3DSTATS lpstats) ; extern HRESULT WINAPI IDirect3DDevice2Impl_AddViewport( LPDIRECT3DDEVICE2 iface, LPDIRECT3DVIEWPORT2 lpvp ); extern HRESULT WINAPI IDirect3DDevice2Impl_DeleteViewport( LPDIRECT3DDEVICE2 iface, LPDIRECT3DVIEWPORT2 lpvp) ; extern HRESULT WINAPI IDirect3DDevice2Impl_NextViewport( LPDIRECT3DDEVICE2 iface, LPDIRECT3DVIEWPORT2 lpvp, LPDIRECT3DVIEWPORT2* lplpvp, DWORD dwFlags ); extern HRESULT WINAPI IDirect3DDevice2Impl_EnumTextureFormats( LPDIRECT3DDEVICE2 iface, LPD3DENUMTEXTUREFORMATSCALLBACK cb, LPVOID context ); extern HRESULT WINAPI IDirect3DDevice2Impl_BeginScene(LPDIRECT3DDEVICE2 iface); extern HRESULT WINAPI IDirect3DDevice2Impl_EndScene(LPDIRECT3DDEVICE2 iface); extern HRESULT WINAPI IDirect3DDevice2Impl_GetDirect3D( LPDIRECT3DDEVICE2 iface, LPDIRECT3D2 *lpd3d2 ); extern HRESULT WINAPI IDirect3DDevice2Impl_SetCurrentViewport( LPDIRECT3DDEVICE2 iface, LPDIRECT3DVIEWPORT2 lpvp ); extern HRESULT WINAPI IDirect3DDevice2Impl_GetCurrentViewport( LPDIRECT3DDEVICE2 iface, LPDIRECT3DVIEWPORT2 *lplpvp ); extern HRESULT WINAPI IDirect3DDevice2Impl_SetRenderTarget( LPDIRECT3DDEVICE2 iface, LPDIRECTDRAWSURFACE lpdds, DWORD dwFlags ); extern HRESULT WINAPI IDirect3DDevice2Impl_GetRenderTarget( LPDIRECT3DDEVICE2 iface, LPDIRECTDRAWSURFACE *lplpdds ); extern HRESULT WINAPI IDirect3DDevice2Impl_Begin( LPDIRECT3DDEVICE2 iface, D3DPRIMITIVETYPE d3dp, D3DVERTEXTYPE d3dv, DWORD dwFlags ); extern HRESULT WINAPI IDirect3DDevice2Impl_BeginIndexed( LPDIRECT3DDEVICE2 iface, D3DPRIMITIVETYPE d3dp, D3DVERTEXTYPE d3dv, LPVOID lpvert, DWORD numvert, DWORD dwFlags ); extern HRESULT WINAPI IDirect3DDevice2Impl_Vertex( LPDIRECT3DDEVICE2 iface,LPVOID lpvert ); extern HRESULT WINAPI IDirect3DDevice2Impl_Index(LPDIRECT3DDEVICE2 iface, WORD index); extern HRESULT WINAPI IDirect3DDevice2Impl_End(LPDIRECT3DDEVICE2 iface,DWORD dwFlags); extern HRESULT WINAPI IDirect3DDevice2Impl_GetRenderState( LPDIRECT3DDEVICE2 iface, D3DRENDERSTATETYPE d3drs, LPDWORD lprstate ); extern HRESULT WINAPI IDirect3DDevice2Impl_SetRenderState( LPDIRECT3DDEVICE2 iface, D3DRENDERSTATETYPE dwRenderStateType, DWORD dwRenderState ); extern HRESULT WINAPI IDirect3DDevice2Impl_GetLightState( LPDIRECT3DDEVICE2 iface, D3DLIGHTSTATETYPE d3dls, LPDWORD lplstate ); extern HRESULT WINAPI IDirect3DDevice2Impl_SetLightState( LPDIRECT3DDEVICE2 iface, D3DLIGHTSTATETYPE dwLightStateType, DWORD dwLightState ); extern HRESULT WINAPI IDirect3DDevice2Impl_SetTransform( LPDIRECT3DDEVICE2 iface, D3DTRANSFORMSTATETYPE d3dts, LPD3DMATRIX lpmatrix ); extern HRESULT WINAPI IDirect3DDevice2Impl_GetTransform( LPDIRECT3DDEVICE2 iface, D3DTRANSFORMSTATETYPE d3dts, LPD3DMATRIX lpmatrix ); extern HRESULT WINAPI IDirect3DDevice2Impl_MultiplyTransform( LPDIRECT3DDEVICE2 iface, D3DTRANSFORMSTATETYPE d3dts, LPD3DMATRIX lpmatrix ); extern HRESULT WINAPI IDirect3DDevice2Impl_DrawPrimitive( LPDIRECT3DDEVICE2 iface, D3DPRIMITIVETYPE d3dp, D3DVERTEXTYPE d3dv, LPVOID lpvertex, DWORD vertcount, DWORD dwFlags ); extern HRESULT WINAPI IDirect3DDevice2Impl_DrawIndexedPrimitive( LPDIRECT3DDEVICE2 iface, D3DPRIMITIVETYPE d3dp, D3DVERTEXTYPE d3dv, LPVOID lpvertex, DWORD vertcount, LPWORD lpindexes, DWORD indexcount, DWORD dwFlags ); extern HRESULT WINAPI IDirect3DDevice2Impl_SetClipStatus( LPDIRECT3DDEVICE2 iface, LPD3DCLIPSTATUS lpcs ); extern HRESULT WINAPI IDirect3DDevice2Impl_GetClipStatus( LPDIRECT3DDEVICE2 iface, LPD3DCLIPSTATUS lpcs ); extern HRESULT WINAPI IDirect3DDeviceImpl_QueryInterface( LPDIRECT3DDEVICE iface, REFIID riid, LPVOID* ppvObj ); extern ULONG WINAPI IDirect3DDeviceImpl_AddRef(LPDIRECT3DDEVICE iface); extern ULONG WINAPI IDirect3DDeviceImpl_Release(LPDIRECT3DDEVICE iface); extern HRESULT WINAPI IDirect3DDeviceImpl_Initialize( LPDIRECT3DDEVICE iface, LPDIRECT3D lpd3d, LPGUID lpGUID, LPD3DDEVICEDESC lpd3ddvdesc ); extern HRESULT WINAPI IDirect3DDeviceImpl_GetCaps( LPDIRECT3DDEVICE iface, LPD3DDEVICEDESC lpD3DHWDevDesc, LPD3DDEVICEDESC lpD3DSWDevDesc ); extern HRESULT WINAPI IDirect3DDeviceImpl_SwapTextureHandles( LPDIRECT3DDEVICE iface, LPDIRECT3DTEXTURE lpD3DTex1, LPDIRECT3DTEXTURE lpD3DTex2 ); extern HRESULT WINAPI IDirect3DDeviceImpl_CreateExecuteBuffer( LPDIRECT3DDEVICE iface, LPD3DEXECUTEBUFFERDESC lpDesc, LPDIRECT3DEXECUTEBUFFER *lplpDirect3DExecuteBuffer, IUnknown *pUnkOuter ); extern HRESULT WINAPI IDirect3DDeviceImpl_GetStats( LPDIRECT3DDEVICE iface, LPD3DSTATS lpD3DStats ); extern HRESULT WINAPI IDirect3DDeviceImpl_Execute( LPDIRECT3DDEVICE iface, LPDIRECT3DEXECUTEBUFFER lpDirect3DExecuteBuffer, LPDIRECT3DVIEWPORT lpDirect3DViewport, DWORD dwFlags ); extern HRESULT WINAPI IDirect3DDeviceImpl_AddViewport( LPDIRECT3DDEVICE iface, LPDIRECT3DVIEWPORT lpvp ); extern HRESULT WINAPI IDirect3DDeviceImpl_DeleteViewport( LPDIRECT3DDEVICE iface, LPDIRECT3DVIEWPORT lpvp ); extern HRESULT WINAPI IDirect3DDeviceImpl_NextViewport( LPDIRECT3DDEVICE iface, LPDIRECT3DVIEWPORT lpvp, LPDIRECT3DVIEWPORT* lplpvp, DWORD dwFlags ); extern HRESULT WINAPI IDirect3DDeviceImpl_Pick( LPDIRECT3DDEVICE iface, LPDIRECT3DEXECUTEBUFFER lpDirect3DExecuteBuffer, LPDIRECT3DVIEWPORT lpDirect3DViewport, DWORD dwFlags, LPD3DRECT lpRect ); extern HRESULT WINAPI IDirect3DDeviceImpl_GetPickRecords( LPDIRECT3DDEVICE iface, LPDWORD lpCount, LPD3DPICKRECORD lpD3DPickRec ); extern HRESULT WINAPI IDirect3DDeviceImpl_EnumTextureFormats( LPDIRECT3DDEVICE iface,LPD3DENUMTEXTUREFORMATSCALLBACK lpd3dEnumTextureProc, LPVOID lpArg ); extern HRESULT WINAPI IDirect3DDeviceImpl_CreateMatrix( LPDIRECT3DDEVICE iface, LPD3DMATRIXHANDLE lpD3DMatHandle ) ; extern HRESULT WINAPI IDirect3DDeviceImpl_SetMatrix( LPDIRECT3DDEVICE iface, D3DMATRIXHANDLE d3dMatHandle, const LPD3DMATRIX lpD3DMatrix) ; extern HRESULT WINAPI IDirect3DDeviceImpl_GetMatrix( LPDIRECT3DDEVICE iface,D3DMATRIXHANDLE D3DMatHandle,LPD3DMATRIX lpD3DMatrix ); extern HRESULT WINAPI IDirect3DDeviceImpl_DeleteMatrix( LPDIRECT3DDEVICE iface, D3DMATRIXHANDLE d3dMatHandle ); extern HRESULT WINAPI IDirect3DDeviceImpl_BeginScene(LPDIRECT3DDEVICE iface) ; extern HRESULT WINAPI IDirect3DDeviceImpl_EndScene(LPDIRECT3DDEVICE iface) ; extern HRESULT WINAPI IDirect3DDeviceImpl_GetDirect3D( LPDIRECT3DDEVICE iface, LPDIRECT3D *lpDirect3D ); /* All non-static functions 'exported' by various sub-objects */ extern LPDIRECT3DTEXTURE2 d3dtexture2_create(IDirectDrawSurfaceImpl* surf); extern LPDIRECT3DTEXTURE d3dtexture_create(IDirectDrawSurfaceImpl* surf); extern LPDIRECT3DLIGHT d3dlight_create_dx3(IDirect3DImpl* d3d1); extern LPDIRECT3DLIGHT d3dlight_create(IDirect3D2Impl* d3d2); extern LPDIRECT3DEXECUTEBUFFER d3dexecutebuffer_create(IDirect3DDeviceImpl* d3ddev, LPD3DEXECUTEBUFFERDESC lpDesc); extern LPDIRECT3DMATERIAL d3dmaterial_create(IDirect3DImpl* d3d1); extern LPDIRECT3DMATERIAL2 d3dmaterial2_create(IDirect3D2Impl* d3d2); extern LPDIRECT3DVIEWPORT d3dviewport_create(IDirect3DImpl* d3d1); extern LPDIRECT3DVIEWPORT2 d3dviewport2_create(IDirect3D2Impl* d3d2); extern int is_OpenGL_dx3(REFCLSID rguid, IDirectDrawSurfaceImpl* surface, IDirect3DDeviceImpl** device); extern int d3d_OpenGL_dx3(LPD3DENUMDEVICESCALLBACK cb, LPVOID context) ; extern int d3d_OpenGL(LPD3DENUMDEVICESCALLBACK cb, LPVOID context) ; extern int is_OpenGL(REFCLSID rguid, IDirectDrawSurfaceImpl* surface, IDirect3DDevice2Impl** device, IDirect3D2Impl* d3d); extern void _dump_renderstate(D3DRENDERSTATETYPE type, DWORD value); #define dump_mat(mat) \ TRACE("%f %f %f %f\n", (mat)->_11, (mat)->_12, (mat)->_13, (mat)->_14); \ TRACE("%f %f %f %f\n", (mat)->_21, (mat)->_22, (mat)->_23, (mat)->_24); \ TRACE("%f %f %f %f\n", (mat)->_31, (mat)->_32, (mat)->_33, (mat)->_34); \ TRACE("%f %f %f %f\n", (mat)->_41, (mat)->_42, (mat)->_43, (mat)->_44); #endif /* __GRAPHICS_WINE_D3D_PRIVATE_H */