mirror of
https://github.com/reactos/wine.git
synced 2024-11-29 14:40:56 +00:00
e37c6e18d0
headers (with help from Dimitrie O. Paun).
440 lines
16 KiB
C
440 lines
16 KiB
C
/*
|
|
* Copyright 2000 Marcus Meissner
|
|
*
|
|
* This library is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
* License as published by the Free Software Foundation; either
|
|
* version 2.1 of the License, or (at your option) any later version.
|
|
*
|
|
* This library is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* Lesser General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
* License along with this library; if not, write to the Free Software
|
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
*/
|
|
|
|
#include "config.h"
|
|
|
|
#include <assert.h>
|
|
#ifdef HAVE_UNISTD_H
|
|
# include <unistd.h>
|
|
#endif
|
|
#include <fcntl.h>
|
|
#include <stdarg.h>
|
|
#include <string.h>
|
|
#include <stdio.h>
|
|
|
|
#include "winerror.h"
|
|
#include "windef.h"
|
|
#include "winbase.h"
|
|
#include "wingdi.h"
|
|
#include "ddraw.h"
|
|
#include "d3d.h"
|
|
#include "wine/debug.h"
|
|
|
|
#include "d3d_private.h"
|
|
|
|
WINE_DEFAULT_DEBUG_CHANNEL(ddraw);
|
|
|
|
|
|
HRESULT WINAPI
|
|
Main_IDirect3DImpl_1_Initialize(LPDIRECT3D iface,
|
|
REFIID riid)
|
|
{
|
|
ICOM_THIS_FROM(IDirectDrawImpl, IDirect3D, iface);
|
|
TRACE("(%p/%p)->(%s) no-op...\n", This, iface, debugstr_guid(riid));
|
|
return D3D_OK;
|
|
}
|
|
|
|
HRESULT WINAPI
|
|
Main_IDirect3DImpl_3_2T_1T_EnumDevices(LPDIRECT3D3 iface,
|
|
LPD3DENUMDEVICESCALLBACK lpEnumDevicesCallback,
|
|
LPVOID lpUserArg)
|
|
{
|
|
ICOM_THIS_FROM(IDirectDrawImpl, IDirect3D3, iface);
|
|
FIXME("(%p/%p)->(%p,%p): stub!\n", This, iface, lpEnumDevicesCallback, lpUserArg);
|
|
return D3D_OK;
|
|
}
|
|
|
|
HRESULT WINAPI
|
|
Main_IDirect3DImpl_3_2T_1T_CreateLight(LPDIRECT3D3 iface,
|
|
LPDIRECT3DLIGHT* lplpDirect3DLight,
|
|
IUnknown* pUnkOuter)
|
|
{
|
|
ICOM_THIS_FROM(IDirectDrawImpl, IDirect3D3, iface);
|
|
FIXME("(%p/%p)->(%p,%p): stub!\n", This, iface, lplpDirect3DLight, pUnkOuter);
|
|
return D3D_OK;
|
|
}
|
|
|
|
HRESULT WINAPI
|
|
Main_IDirect3DImpl_3_2T_1T_CreateMaterial(LPDIRECT3D3 iface,
|
|
LPDIRECT3DMATERIAL3* lplpDirect3DMaterial3,
|
|
IUnknown* pUnkOuter)
|
|
{
|
|
ICOM_THIS_FROM(IDirectDrawImpl, IDirect3D3, iface);
|
|
FIXME("(%p/%p)->(%p,%p): stub!\n", This, iface, lplpDirect3DMaterial3, pUnkOuter);
|
|
return D3D_OK;
|
|
}
|
|
|
|
HRESULT WINAPI
|
|
Main_IDirect3DImpl_3_2T_1T_CreateViewport(LPDIRECT3D3 iface,
|
|
LPDIRECT3DVIEWPORT3* lplpD3DViewport3,
|
|
IUnknown* pUnkOuter)
|
|
{
|
|
ICOM_THIS_FROM(IDirectDrawImpl, IDirect3D3, iface);
|
|
FIXME("(%p/%p)->(%p,%p): stub!\n", This, iface, lplpD3DViewport3, pUnkOuter);
|
|
return D3D_OK;
|
|
}
|
|
|
|
HRESULT WINAPI
|
|
Main_IDirect3DImpl_3_2T_1T_FindDevice(LPDIRECT3D3 iface,
|
|
LPD3DFINDDEVICESEARCH lpD3DDFS,
|
|
LPD3DFINDDEVICERESULT lpD3DFDR)
|
|
{
|
|
ICOM_THIS_FROM(IDirectDrawImpl, IDirect3D3, iface);
|
|
FIXME("(%p/%p)->(%p,%p): stub!\n", This, iface, lpD3DDFS, lpD3DFDR);
|
|
return D3D_OK;
|
|
}
|
|
|
|
HRESULT WINAPI
|
|
Main_IDirect3DImpl_2_CreateDevice(LPDIRECT3D2 iface,
|
|
REFCLSID rclsid,
|
|
LPDIRECTDRAWSURFACE lpDDS,
|
|
LPDIRECT3DDEVICE2* lplpD3DDevice2)
|
|
{
|
|
ICOM_THIS_FROM(IDirectDrawImpl, IDirect3D2, iface);
|
|
FIXME("(%p/%p)->(%s,%p,%p): stub!\n", This, iface, debugstr_guid(rclsid), lpDDS, lplpD3DDevice2);
|
|
return D3D_OK;
|
|
}
|
|
|
|
HRESULT WINAPI
|
|
Main_IDirect3DImpl_3_CreateDevice(LPDIRECT3D3 iface,
|
|
REFCLSID rclsid,
|
|
LPDIRECTDRAWSURFACE4 lpDDS,
|
|
LPDIRECT3DDEVICE3* lplpD3DDevice3,
|
|
LPUNKNOWN lpUnk)
|
|
{
|
|
ICOM_THIS_FROM(IDirectDrawImpl, IDirect3D3, iface);
|
|
FIXME("(%p/%p)->(%s,%p,%p,%p): stub!\n", This, iface, debugstr_guid(rclsid), lpDDS, lplpD3DDevice3, lpUnk);
|
|
return D3D_OK;
|
|
}
|
|
|
|
HRESULT WINAPI
|
|
Main_IDirect3DImpl_7_3T_EnumZBufferFormats(LPDIRECT3D7 iface,
|
|
REFCLSID riidDevice,
|
|
LPD3DENUMPIXELFORMATSCALLBACK lpEnumCallback,
|
|
LPVOID lpContext)
|
|
{
|
|
ICOM_THIS_FROM(IDirectDrawImpl, IDirect3D7, iface);
|
|
FIXME("(%p/%p)->(%s,%p,%p): stub!\n", This, iface, debugstr_guid(riidDevice), lpEnumCallback, lpContext);
|
|
return D3D_OK;
|
|
}
|
|
|
|
HRESULT WINAPI
|
|
Main_IDirect3DImpl_7_3T_EvictManagedTextures(LPDIRECT3D7 iface)
|
|
{
|
|
ICOM_THIS_FROM(IDirectDrawImpl, IDirect3D7, iface);
|
|
FIXME("(%p/%p)->(): stub!\n", This, iface);
|
|
return D3D_OK;
|
|
}
|
|
|
|
HRESULT WINAPI
|
|
Main_IDirect3DImpl_7_EnumDevices(LPDIRECT3D7 iface,
|
|
LPD3DENUMDEVICESCALLBACK7 lpEnumDevicesCallback,
|
|
LPVOID lpUserArg)
|
|
{
|
|
ICOM_THIS_FROM(IDirectDrawImpl, IDirect3D7, iface);
|
|
FIXME("(%p/%p)->(%p,%p): stub!\n", This, iface, lpEnumDevicesCallback, lpUserArg);
|
|
return D3D_OK;
|
|
}
|
|
|
|
HRESULT WINAPI
|
|
Main_IDirect3DImpl_7_CreateDevice(LPDIRECT3D7 iface,
|
|
REFCLSID rclsid,
|
|
LPDIRECTDRAWSURFACE7 lpDDS,
|
|
LPDIRECT3DDEVICE7* lplpD3DDevice)
|
|
{
|
|
ICOM_THIS_FROM(IDirectDrawImpl, IDirect3D7, iface);
|
|
FIXME("(%p/%p)->(%s,%p,%p): stub!\n", This, iface, debugstr_guid(rclsid), lpDDS, lplpD3DDevice);
|
|
return D3D_OK;
|
|
}
|
|
|
|
HRESULT WINAPI
|
|
Main_IDirect3DImpl_7_3T_CreateVertexBuffer(LPDIRECT3D7 iface,
|
|
LPD3DVERTEXBUFFERDESC lpD3DVertBufDesc,
|
|
LPDIRECT3DVERTEXBUFFER7* lplpD3DVertBuf,
|
|
DWORD dwFlags)
|
|
{
|
|
ICOM_THIS_FROM(IDirectDrawImpl, IDirect3D7, iface);
|
|
FIXME("(%p/%p)->(%p,%p,%08lx): stub!\n", This, iface, lpD3DVertBufDesc, lplpD3DVertBuf, dwFlags);
|
|
return D3D_OK;
|
|
}
|
|
|
|
HRESULT WINAPI
|
|
Thunk_IDirect3DImpl_7_QueryInterface(LPDIRECT3D7 iface,
|
|
REFIID riid,
|
|
LPVOID* obp)
|
|
{
|
|
TRACE("(%p)->(%s,%p) thunking to IDirectDraw7 interface.\n", iface, debugstr_guid(riid), obp);
|
|
return IDirectDraw7_QueryInterface(COM_INTERFACE_CAST(IDirectDrawImpl, IDirect3D7, IDirectDraw7, iface),
|
|
riid,
|
|
obp);
|
|
}
|
|
|
|
HRESULT WINAPI
|
|
Thunk_IDirect3DImpl_3_QueryInterface(LPDIRECT3D3 iface,
|
|
REFIID riid,
|
|
LPVOID* obp)
|
|
{
|
|
TRACE("(%p)->(%s,%p) thunking to IDirectDraw7 interface.\n", iface, debugstr_guid(riid), obp);
|
|
return IDirectDraw7_QueryInterface(COM_INTERFACE_CAST(IDirectDrawImpl, IDirect3D3, IDirectDraw7, iface),
|
|
riid,
|
|
obp);
|
|
}
|
|
|
|
HRESULT WINAPI
|
|
Thunk_IDirect3DImpl_2_QueryInterface(LPDIRECT3D2 iface,
|
|
REFIID riid,
|
|
LPVOID* obp)
|
|
{
|
|
TRACE("(%p)->(%s,%p) thunking to IDirectDraw7 interface.\n", iface, debugstr_guid(riid), obp);
|
|
return IDirectDraw7_QueryInterface(COM_INTERFACE_CAST(IDirectDrawImpl, IDirect3D2, IDirectDraw7, iface),
|
|
riid,
|
|
obp);
|
|
}
|
|
|
|
HRESULT WINAPI
|
|
Thunk_IDirect3DImpl_1_QueryInterface(LPDIRECT3D iface,
|
|
REFIID riid,
|
|
LPVOID* obp)
|
|
{
|
|
TRACE("(%p)->(%s,%p) thunking to IDirectDraw7 interface.\n", iface, debugstr_guid(riid), obp);
|
|
return IDirectDraw7_QueryInterface(COM_INTERFACE_CAST(IDirectDrawImpl, IDirect3D, IDirectDraw7, iface),
|
|
riid,
|
|
obp);
|
|
}
|
|
|
|
ULONG WINAPI
|
|
Thunk_IDirect3DImpl_7_AddRef(LPDIRECT3D7 iface)
|
|
{
|
|
TRACE("(%p)->() thunking to IDirectDraw7 interface.\n", iface);
|
|
return IDirectDraw7_AddRef(COM_INTERFACE_CAST(IDirectDrawImpl, IDirect3D7, IDirectDraw7, iface));
|
|
}
|
|
|
|
ULONG WINAPI
|
|
Thunk_IDirect3DImpl_3_AddRef(LPDIRECT3D3 iface)
|
|
{
|
|
TRACE("(%p)->() thunking to IDirectDraw7 interface.\n", iface);
|
|
return IDirectDraw7_AddRef(COM_INTERFACE_CAST(IDirectDrawImpl, IDirect3D3, IDirectDraw7, iface));
|
|
}
|
|
|
|
ULONG WINAPI
|
|
Thunk_IDirect3DImpl_2_AddRef(LPDIRECT3D2 iface)
|
|
{
|
|
TRACE("(%p)->() thunking to IDirectDraw7 interface.\n", iface);
|
|
return IDirectDraw7_AddRef(COM_INTERFACE_CAST(IDirectDrawImpl, IDirect3D2, IDirectDraw7, iface));
|
|
}
|
|
|
|
ULONG WINAPI
|
|
Thunk_IDirect3DImpl_1_AddRef(LPDIRECT3D iface)
|
|
{
|
|
TRACE("(%p)->() thunking to IDirectDraw7 interface.\n", iface);
|
|
return IDirectDraw7_AddRef(COM_INTERFACE_CAST(IDirectDrawImpl, IDirect3D, IDirectDraw7, iface));
|
|
}
|
|
|
|
ULONG WINAPI
|
|
Thunk_IDirect3DImpl_7_Release(LPDIRECT3D7 iface)
|
|
{
|
|
TRACE("(%p)->() thunking to IDirectDraw7 interface.\n", iface);
|
|
return IDirectDraw7_Release(COM_INTERFACE_CAST(IDirectDrawImpl, IDirect3D7, IDirectDraw7, iface));
|
|
}
|
|
|
|
ULONG WINAPI
|
|
Thunk_IDirect3DImpl_3_Release(LPDIRECT3D3 iface)
|
|
{
|
|
TRACE("(%p)->() thunking to IDirectDraw7 interface.\n", iface);
|
|
return IDirectDraw7_Release(COM_INTERFACE_CAST(IDirectDrawImpl, IDirect3D3, IDirectDraw7, iface));
|
|
}
|
|
|
|
ULONG WINAPI
|
|
Thunk_IDirect3DImpl_2_Release(LPDIRECT3D2 iface)
|
|
{
|
|
TRACE("(%p)->() thunking to IDirectDraw7 interface.\n", iface);
|
|
return IDirectDraw7_Release(COM_INTERFACE_CAST(IDirectDrawImpl, IDirect3D2, IDirectDraw7, iface));
|
|
}
|
|
|
|
ULONG WINAPI
|
|
Thunk_IDirect3DImpl_1_Release(LPDIRECT3D iface)
|
|
{
|
|
TRACE("(%p)->() thunking to IDirectDraw7 interface.\n", iface);
|
|
return IDirectDraw7_Release(COM_INTERFACE_CAST(IDirectDrawImpl, IDirect3D, IDirectDraw7, iface));
|
|
}
|
|
|
|
HRESULT WINAPI
|
|
Thunk_IDirect3DImpl_3_EnumZBufferFormats(LPDIRECT3D3 iface,
|
|
REFCLSID riidDevice,
|
|
LPD3DENUMPIXELFORMATSCALLBACK lpEnumCallback,
|
|
LPVOID lpContext)
|
|
{
|
|
TRACE("(%p)->(%s,%p,%p) thunking to IDirect3D7 interface.\n", iface, debugstr_guid(riidDevice), lpEnumCallback, lpContext);
|
|
return IDirect3D7_EnumZBufferFormats(COM_INTERFACE_CAST(IDirectDrawImpl, IDirect3D3, IDirect3D7, iface),
|
|
riidDevice,
|
|
lpEnumCallback,
|
|
lpContext);
|
|
}
|
|
|
|
HRESULT WINAPI
|
|
Thunk_IDirect3DImpl_3_EvictManagedTextures(LPDIRECT3D3 iface)
|
|
{
|
|
TRACE("(%p)->() thunking to IDirect3D7 interface.\n", iface);
|
|
return IDirect3D7_EvictManagedTextures(COM_INTERFACE_CAST(IDirectDrawImpl, IDirect3D3, IDirect3D7, iface));
|
|
}
|
|
|
|
HRESULT WINAPI
|
|
Thunk_IDirect3DImpl_2_EnumDevices(LPDIRECT3D2 iface,
|
|
LPD3DENUMDEVICESCALLBACK lpEnumDevicesCallback,
|
|
LPVOID lpUserArg)
|
|
{
|
|
TRACE("(%p)->(%p,%p) thunking to IDirect3D3 interface.\n", iface, lpEnumDevicesCallback, lpUserArg);
|
|
return IDirect3D3_EnumDevices(COM_INTERFACE_CAST(IDirectDrawImpl, IDirect3D2, IDirect3D3, iface),
|
|
lpEnumDevicesCallback,
|
|
lpUserArg);
|
|
}
|
|
|
|
HRESULT WINAPI
|
|
Thunk_IDirect3DImpl_2_CreateLight(LPDIRECT3D2 iface,
|
|
LPDIRECT3DLIGHT* lplpDirect3DLight,
|
|
IUnknown* pUnkOuter)
|
|
{
|
|
TRACE("(%p)->(%p,%p) thunking to IDirect3D3 interface.\n", iface, lplpDirect3DLight, pUnkOuter);
|
|
return IDirect3D3_CreateLight(COM_INTERFACE_CAST(IDirectDrawImpl, IDirect3D2, IDirect3D3, iface),
|
|
lplpDirect3DLight,
|
|
pUnkOuter);
|
|
}
|
|
|
|
HRESULT WINAPI
|
|
Thunk_IDirect3DImpl_1_CreateLight(LPDIRECT3D iface,
|
|
LPDIRECT3DLIGHT* lplpDirect3DLight,
|
|
IUnknown* pUnkOuter)
|
|
{
|
|
TRACE("(%p)->(%p,%p) thunking to IDirect3D3 interface.\n", iface, lplpDirect3DLight, pUnkOuter);
|
|
return IDirect3D3_CreateLight(COM_INTERFACE_CAST(IDirectDrawImpl, IDirect3D, IDirect3D3, iface),
|
|
lplpDirect3DLight,
|
|
pUnkOuter);
|
|
}
|
|
|
|
HRESULT WINAPI
|
|
Thunk_IDirect3DImpl_1_CreateMaterial(LPDIRECT3D iface,
|
|
LPDIRECT3DMATERIAL* lplpDirect3DMaterial,
|
|
IUnknown* pUnkOuter)
|
|
{
|
|
HRESULT ret;
|
|
LPDIRECT3DMATERIAL3 ret_val;
|
|
|
|
TRACE("(%p)->(%p,%p) thunking to IDirect3D3 interface.\n", iface, lplpDirect3DMaterial, pUnkOuter);
|
|
ret = IDirect3D3_CreateMaterial(COM_INTERFACE_CAST(IDirectDrawImpl, IDirect3D, IDirect3D3, iface),
|
|
&ret_val,
|
|
pUnkOuter);
|
|
|
|
*lplpDirect3DMaterial = COM_INTERFACE_CAST(IDirect3DMaterialImpl, IDirect3DMaterial3, IDirect3DMaterial, ret_val);
|
|
|
|
TRACE(" returning interface %p.\n", *lplpDirect3DMaterial);
|
|
|
|
return ret;
|
|
}
|
|
|
|
HRESULT WINAPI
|
|
Thunk_IDirect3DImpl_1_CreateViewport(LPDIRECT3D iface,
|
|
LPDIRECT3DVIEWPORT* lplpD3DViewport,
|
|
IUnknown* pUnkOuter)
|
|
{
|
|
TRACE("(%p)->(%p,%p) thunking to IDirect3D3 interface.\n", iface, lplpD3DViewport, pUnkOuter);
|
|
return IDirect3D3_CreateViewport(COM_INTERFACE_CAST(IDirectDrawImpl, IDirect3D, IDirect3D3, iface),
|
|
(LPDIRECT3DVIEWPORT3 *) lplpD3DViewport /* No need to cast here */,
|
|
pUnkOuter);
|
|
}
|
|
|
|
HRESULT WINAPI
|
|
Thunk_IDirect3DImpl_2_CreateMaterial(LPDIRECT3D2 iface,
|
|
LPDIRECT3DMATERIAL2* lplpDirect3DMaterial2,
|
|
IUnknown* pUnkOuter)
|
|
{
|
|
HRESULT ret;
|
|
LPDIRECT3DMATERIAL3 ret_val;
|
|
|
|
TRACE("(%p)->(%p,%p) thunking to IDirect3D3 interface.\n", iface, lplpDirect3DMaterial2, pUnkOuter);
|
|
ret = IDirect3D3_CreateMaterial(COM_INTERFACE_CAST(IDirectDrawImpl, IDirect3D2, IDirect3D3, iface),
|
|
&ret_val,
|
|
pUnkOuter);
|
|
|
|
*lplpDirect3DMaterial2 = COM_INTERFACE_CAST(IDirect3DMaterialImpl, IDirect3DMaterial3, IDirect3DMaterial2, ret_val);
|
|
|
|
TRACE(" returning interface %p.\n", *lplpDirect3DMaterial2);
|
|
|
|
return ret;
|
|
}
|
|
|
|
HRESULT WINAPI
|
|
Thunk_IDirect3DImpl_2_CreateViewport(LPDIRECT3D2 iface,
|
|
LPDIRECT3DVIEWPORT* lplpD3DViewport2,
|
|
IUnknown* pUnkOuter)
|
|
{
|
|
TRACE("(%p)->(%p,%p) thunking to IDirect3D3 interface.\n", iface, lplpD3DViewport2, pUnkOuter);
|
|
return IDirect3D3_CreateViewport(COM_INTERFACE_CAST(IDirectDrawImpl, IDirect3D2, IDirect3D3, iface),
|
|
(LPDIRECT3DVIEWPORT3 *) lplpD3DViewport2 /* No need to cast here */,
|
|
pUnkOuter);
|
|
}
|
|
|
|
|
|
HRESULT WINAPI
|
|
Thunk_IDirect3DImpl_3_CreateVertexBuffer(LPDIRECT3D3 iface,
|
|
LPD3DVERTEXBUFFERDESC lpD3DVertBufDesc,
|
|
LPDIRECT3DVERTEXBUFFER* lplpD3DVertBuf,
|
|
DWORD dwFlags,
|
|
LPUNKNOWN lpUnk)
|
|
{
|
|
HRESULT ret;
|
|
LPDIRECT3DVERTEXBUFFER7 ret_val;
|
|
|
|
TRACE("(%p)->(%p,%p,%08lx,%p) thunking to IDirect3D7 interface.\n", iface, lpD3DVertBufDesc, lplpD3DVertBuf, dwFlags, lpUnk);
|
|
|
|
/* dwFlags is not used in the D3D7 interface, use the vertex buffer description instead */
|
|
if (dwFlags & D3DDP_DONOTCLIP) lpD3DVertBufDesc->dwCaps |= D3DVBCAPS_DONOTCLIP;
|
|
|
|
ret = IDirect3D7_CreateVertexBuffer(COM_INTERFACE_CAST(IDirectDrawImpl, IDirect3D3, IDirect3D7, iface),
|
|
lpD3DVertBufDesc,
|
|
&ret_val,
|
|
dwFlags);
|
|
|
|
*lplpD3DVertBuf = COM_INTERFACE_CAST(IDirect3DVertexBufferImpl, IDirect3DVertexBuffer7, IDirect3DVertexBuffer, ret_val);
|
|
|
|
TRACE(" returning interface %p.\n", *lplpD3DVertBuf);
|
|
|
|
return ret;
|
|
}
|
|
|
|
HRESULT WINAPI
|
|
Thunk_IDirect3DImpl_1_FindDevice(LPDIRECT3D iface,
|
|
LPD3DFINDDEVICESEARCH lpD3DDFS,
|
|
LPD3DFINDDEVICERESULT lplpD3DDevice)
|
|
{
|
|
TRACE("(%p)->(%p,%p) thunking to IDirect3D3 interface.\n", iface, lpD3DDFS, lplpD3DDevice);
|
|
return IDirect3D3_FindDevice(COM_INTERFACE_CAST(IDirectDrawImpl, IDirect3D, IDirect3D3, iface),
|
|
lpD3DDFS,
|
|
lplpD3DDevice);
|
|
}
|
|
|
|
HRESULT WINAPI
|
|
Thunk_IDirect3DImpl_2_FindDevice(LPDIRECT3D2 iface,
|
|
LPD3DFINDDEVICESEARCH lpD3DDFS,
|
|
LPD3DFINDDEVICERESULT lpD3DFDR)
|
|
{
|
|
TRACE("(%p)->(%p,%p) thunking to IDirect3D3 interface.\n", iface, lpD3DDFS, lpD3DFDR);
|
|
return IDirect3D3_FindDevice(COM_INTERFACE_CAST(IDirectDrawImpl, IDirect3D2, IDirect3D3, iface),
|
|
lpD3DDFS,
|
|
lpD3DFDR);
|
|
}
|