2012-12-22 65 views
1

我正在使用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(),但沒有成功......任何想法?

回答

1

問題固定...我不得不設置像素着色器在該過程的結束與所述頂點着色器爲NULL沿着:

m_d3ddev->SetPixelShader(NULL)...