2010-08-10 58 views

回答

1

你是否将相同的文件加载到查看器中作为您自己的应用程序?因为它看起来好像在网格中没有任何法线。如果您使用与查看器相同的文件,它们应该位于网格文件中。

除此之外,您的照明非常明亮(所有值均为1.0),我会将漫反射值设置为0.0,并尝试将环境设置为0.5红色。那么至少你可以判断你的灯是否在工作。

+1

谢谢。问题出在法线之上。调用[D3DXComputeNormals](http:// msdn。 microsoft.com/en-us/library/bb172742%28VS.85%29.aspx)帮助了我 – bdhar 2010-08-25 06:04:51

1

看起来你还没有设置任何光线。

您必须加载网格中定义的材料,并设置至少一个灯。

一旦你设置一盏灯,使用固定管道在DirectX 9渲染代码如下所示:

// NumMaterials and ShipMaterialshave already been loaded with the call to D3DXLoadMeshFromX 
D3DXMATERIAL* ShipMats = (D3DXMATERIAL*) ShipMaterials->GetBufferPointer(); 
device->SetTexture(0, NULL); // assume a mesh with no texture 
for (DWORD i = 0; i < NumMaterials; ++i) 
{ 
    device->SetMaterial(&ShipMats[i].MatD3D); 
    this->pShipMesh->DrawSubset(i); 
} 

如果仍然看不到任何东西,设定你自己定义的材料。

+0

我设置了一些照明,如[this](http://pastebin.com/xj0BpGwn)。但我仍然得到相同的图像! – bdhar 2010-08-10 11:35:12

+0

你有没有设置材料?为了“看到”照明,您需要灯光和材料。顺便说一句,我编辑了我的答案。 – KeatsPeeks 2010-08-10 11:39:38

+0

[It](http://pastebin.com/bGpPkdf8)被包含在代码中:(。仍然没有效果!! – bdhar 2010-08-10 11:47:16