问题描述
for (auto iter = m_listMaterial.begin(); iter != m_listMaterial.end();++iter)
{
Material* pMat = (*iter);
pMat->GetBuffer()->Ready_Component();
_uint numPass;
//if effect is different Changing Effect
if (pEffect != pMat->GetShader()->GetEffect())
{
if (pEffect)
{
for (int i = 0; i < 10; ++i)
{
m_pTextures[i] = nullptr;
}
pEffect->EndPass();
pEffect->End();
}
pEffect = pMat->GetShader()->GetEffect();
pEffect->Begin(&numPass,D3DXFX_DONOTSAVESTATE);
pEffect->BeginPass(0);
}
vector<Texture*> vecTex = pMat->GetTextures();
for (_uint i = 0;i < vecTex.size(); ++i)
{
// if texture is different changing texture
if (vecTex[i]->GetTexture() != m_pTextures[i])
{
pDev->SetTexture(i,vecTex[i]->GetTexture());
m_pTextures[i] = vecTex[i]->GetTexture();
}
}
pMat->RenderSettingFunc();
pEffect->CommitChanges();
pMat->GetBuffer()->RenderBuffer();
}
pEffect->EndPass();
pEffect->End();
我在DirectX9中制作了批处理系统
但是我发现在调用Effect的EndPass()函数后,gpu中的纹理信息消失了
那么,如何保存纹理信息?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)