我正在使用DirectX 9 w /影響3D模型。我已經正確加載了所有模型和效果,並使用此方法渲染了蒙皮網格,過去沒有問題...但是,最近我開始在項目中使用DXUT。現在,在DXUT中,當我嘗試渲染具有效果問題的蒙皮網格時,會出現問題。我已經跟蹤了這個問題,但不知道如何解決。在調用DrawMeshContainer(LPD3DXMESHCONTAINER pMeshContainer)期間發生以下代碼。問題是調用BeginPass()/ EndPass()。所有使用此效果的網格都可以正確渲染,但是當我嘗試渲染不使用效果的對象時,它們呈現完全黑色......您可以看到對象,但沒有顏色。我在對對象進行渲染調用之前和之後檢查了照明狀態,但似乎按順序。這是問題行的代碼。如果我評論的線條勾勒出,其他對象正確呈現DirectX ID3DXEFFECT :: BeginPass()/ EndPass()問題
for(DWORD iAttrib = 0; iAttrib < numAttributes; ++iAttrib)
{
...
DWORD numPasses = 0;
g_pEffect->Begin(&numPasses D3DFX_DONOTSAVESTATE); // writing from memory...2nd param may use different identifier
for(DWORD iPass = 0; iPass < numPasses; ++iPass)
{
g_pEffect->BeginPass(iPass); // Begin Problem
pMeshContainer->MeshData.pMesh->DrawSubset(iAttrib);
g_pEffect->EndPass(); // End Problem
}
g_pEffect->End();
m_d3ddev->SetVertexShader(NULL);
}
}
不BeginPass()/ EndPass()導致某些類型的,我需要考慮的狀態變化?我也嘗試過使用g_pEffect-> CommitChanges()來調用ID3DXMESH :: DrawSubset(),但沒有成功......任何想法?