ddraw: Implement GetRenderState for D3DRENDERSTATE_TEXTUREHANDLE.
This commit is contained in:
parent
1c86290bd5
commit
e92d7cbf2b
@ -2094,16 +2094,53 @@ IDirect3DDeviceImpl_7_GetRenderState(IDirect3DDevice7 *iface,
|
|||||||
DWORD *Value)
|
DWORD *Value)
|
||||||
{
|
{
|
||||||
ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice7, iface);
|
ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice7, iface);
|
||||||
|
HRESULT hr;
|
||||||
TRACE("(%p)->(%08x,%p): Relay\n", This, RenderStateType, Value);
|
TRACE("(%p)->(%08x,%p): Relay\n", This, RenderStateType, Value);
|
||||||
|
|
||||||
if(!Value)
|
if(!Value)
|
||||||
return DDERR_INVALIDPARAMS;
|
return DDERR_INVALIDPARAMS;
|
||||||
|
|
||||||
/* FIXME: Unhandled: D3DRENDERSTATE_STIPPLEPATTERN00 - 31 */
|
switch(RenderStateType)
|
||||||
|
{
|
||||||
|
case D3DRENDERSTATE_TEXTUREHANDLE:
|
||||||
|
{
|
||||||
|
/* This state is wrapped to SetTexture in SetRenderState, so
|
||||||
|
* it has to be wrapped to GetTexture here
|
||||||
|
*/
|
||||||
|
IWineD3DBaseTexture *tex = NULL;
|
||||||
|
*Value = 0;
|
||||||
|
|
||||||
return IWineD3DDevice_GetRenderState(This->wineD3DDevice,
|
hr = IWineD3DDevice_GetTexture(This->wineD3DDevice,
|
||||||
RenderStateType,
|
0,
|
||||||
Value);
|
&tex);
|
||||||
|
|
||||||
|
if(hr == WINED3D_OK && tex)
|
||||||
|
{
|
||||||
|
IDirectDrawSurface7 *parent = NULL;
|
||||||
|
hr = IWineD3DBaseTexture_GetParent(tex,
|
||||||
|
(IUnknown **) &parent);
|
||||||
|
if(parent)
|
||||||
|
{
|
||||||
|
/* The parent of the texture is the IDirectDrawSurface7 interface
|
||||||
|
* of the ddraw surface
|
||||||
|
*/
|
||||||
|
IDirectDrawSurfaceImpl *texImpl = ICOM_OBJECT(IDirectDrawSurfaceImpl,
|
||||||
|
IDirectDrawSurface7,
|
||||||
|
parent);
|
||||||
|
*Value = texImpl->Handle;
|
||||||
|
IDirectDrawSurface7_Release(parent);
|
||||||
|
}
|
||||||
|
IWineD3DBaseTexture_Release(tex);
|
||||||
|
}
|
||||||
|
return hr;
|
||||||
|
}
|
||||||
|
|
||||||
|
default:
|
||||||
|
/* FIXME: Unhandled: D3DRENDERSTATE_STIPPLEPATTERN00 - 31 */
|
||||||
|
return IWineD3DDevice_GetRenderState(This->wineD3DDevice,
|
||||||
|
RenderStateType,
|
||||||
|
Value);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static HRESULT WINAPI
|
static HRESULT WINAPI
|
||||||
|
Loading…
x
Reference in New Issue
Block a user