void CD3DEffect::Release()
{
g_Windowing.Unregister(this);
- SAFE_RELEASE(m_effect);
- SAFE_RELEASE(m_techniquie);
- SAFE_RELEASE(m_currentPass);
+ OnDestroyDevice();
}
void CD3DEffect::OnDestroyDevice()
{
SAFE_RELEASE(m_effect);
+ m_techniquie = nullptr;
+ m_currentPass = nullptr;
}
void CD3DEffect::OnCreateDevice()
{
m_techniquie = m_effect->GetTechniqueByName(handle);
if (!m_techniquie->IsValid())
- SAFE_RELEASE(m_techniquie);
+ m_techniquie = nullptr;
- return NULL != m_techniquie;
+ return nullptr != m_techniquie;
}
return false;
}
{
if (m_effect)
{
- m_effect->GetVariableByName(handle)->AsShaderResource()->SetResource(nullptr);
- return (S_OK == m_effect->GetVariableByName(handle)->AsShaderResource()->SetResource(texture.GetShaderResource()));
+ ID3DX11EffectShaderResourceVariable* var = m_effect->GetVariableByName(handle)->AsShaderResource();
+ if (var->IsValid())
+ return (var->SetResource(texture.GetShaderResource()));
}
return false;
}
{
if (m_effect)
{
- return (S_OK == m_effect->GetConstantBufferByName(handle)->SetConstantBuffer(buffer));
+ ID3DX11EffectConstantBuffer* effectbuffer = m_effect->GetConstantBufferByName(handle);
+ if (effectbuffer->IsValid())
+ return (S_OK == effectbuffer->SetConstantBuffer(buffer));
}
return false;
}
bool CD3DEffect::SetScalar(LPCSTR handle, float value)
{
if (m_effect)
- return (S_OK == m_effect->GetVariableByName(handle)->AsScalar()->SetFloat(value));
+ {
+ ID3DX11EffectScalarVariable* scalar = m_effect->GetVariableByName(handle)->AsScalar();
+ if (scalar->IsValid())
+ return (S_OK == scalar->SetFloat(value));
+ }
return false;
}
m_currentPass = m_techniquie->GetPassByIndex(pass);
if (!m_currentPass || !m_currentPass->IsValid())
{
- SAFE_RELEASE(m_currentPass);
+ m_currentPass = nullptr;
return false;
}
return (S_OK == m_currentPass->Apply(0, g_Windowing.Get3D11Context()));
{
if (m_effect && m_currentPass)
{
- SAFE_RELEASE(m_currentPass);
+ m_currentPass = nullptr;
return true;
}
return false;
{
if (m_effect && m_techniquie)
{
- SAFE_RELEASE(m_techniquie);
+ m_techniquie = nullptr;
return true;
}
return false;