從網上下了全書代碼中這個例子就是錯的,他在display裏
LightTexEffect->Begin(&numPasses, 0);
for(int i = 0; i < numPasses; i++)
{
LightTexEffect->BeginPass(i);
for(int j = 0; j < Mtrls.size(); j++)
{
Mesh->DrawSubset(j);
}
LightTexEffect->EndPass();
}
少了 LightTexEffect->EndPass();
這個錯誤還是相當隱蔽的,因爲這個例子恰好就一個pass,如果你不多次訪問
D3DXVECTOR3 position( cosf(angle) * 10.0f, height, sinf(angle) * 10.0f );
D3DXVECTOR3 target(0.0f, 0.0f, 0.0f);
D3DXVECTOR3 up(0.0f, 1.0f, 0.0f);
D3DXMATRIX V;
D3DXMatrixLookAtLH(&V, &position, &target, &up);
LightTexEffect->SetMatrix(ViewMatrixHandle, &V);
就矇混過關了
還有就是HLSL的代碼有些變量好像不分大小寫!!