微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在directX中,是否可以保存Texture After效果的EndPass函数?

如何解决在directX中,是否可以保存Texture After效果的EndPass函数?

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中制作了批处理系统

因为我只想调用SetTexture()函数一次

但是我发现在调用Effect的EndPass()函数后,gpu中的纹理信息消失了

那么,如何保存纹理信息?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。