d3dx9: Implement ID3DXEffect::SetTechnique().

This commit is contained in:
Rico Schüller 2011-06-27 11:58:35 +02:00 committed by Alexandre Julliard
parent 69c3b4baf6
commit b7919e65fd
1 changed files with 26 additions and 3 deletions

View File

@ -2747,13 +2747,36 @@ static HRESULT WINAPI ID3DXEffectImpl_GetPool(ID3DXEffect *iface, LPD3DXEFFECTPO
return S_OK;
}
static HRESULT WINAPI ID3DXEffectImpl_SetTechnique(ID3DXEffect* iface, D3DXHANDLE technique)
static HRESULT WINAPI ID3DXEffectImpl_SetTechnique(ID3DXEffect *iface, D3DXHANDLE technique)
{
struct ID3DXEffectImpl *This = impl_from_ID3DXEffect(iface);
struct ID3DXBaseEffectImpl *base = impl_from_ID3DXBaseEffect(This->base_effect);
struct d3dx_technique *tech = is_valid_technique(base, technique);
FIXME("(%p)->(%p): stub\n", This, technique);
TRACE("iface %p, technique %p\n", This, technique);
return E_NOTIMPL;
if (!tech) tech = get_technique_struct(iface->lpVtbl->GetTechniqueByName(iface, technique));
if (tech)
{
UINT i;
for (i = 0; i < base->technique_count; ++i)
{
struct d3dx_technique *t = get_technique_struct(base->technique_handles[i]);
if (tech == t)
{
This->active_technique = get_technique_handle(t);
TRACE("Technique %u (%p)\n", i, tech);
return D3D_OK;
}
}
}
WARN("Invalid argument supplied.\n");
return D3DERR_INVALIDCALL;
}
static D3DXHANDLE WINAPI ID3DXEffectImpl_GetCurrentTechnique(ID3DXEffect *iface)