从网上下了全书代码中这个例子就是错的,他在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的代码有些变量好像不分大小写!!