我編寫了一個簡單的程序來加載directX .x網格文件。我加載的圖像顯示像這樣http://i37.tinypic.com/5dmo1s.png。將3D效果添加到2D對象 - DirectX
但MeshViewer顯示的是這樣的http://i34.tinypic.com/rkrhoh.png。
應該做些什麼來獲得3D外觀?我應該在DirectX庫中調用哪一個?
我編寫了一個簡單的程序來加載directX .x網格文件。我加載的圖像顯示像這樣http://i37.tinypic.com/5dmo1s.png。將3D效果添加到2D對象 - DirectX
但MeshViewer顯示的是這樣的http://i34.tinypic.com/rkrhoh.png。
應該做些什麼來獲得3D外觀?我應該在DirectX庫中調用哪一個?
你是否將相同的文件加載到查看器中作爲您自己的應用程序?因爲它看起來好像在網格中沒有任何法線。如果您使用與查看器相同的文件,它們應該位於網格文件中。
除此之外,您的照明非常明亮(所有值均爲1.0),我會將漫反射值設置爲0.0,並嘗試將環境設置爲0.5紅色。那麼至少你可以判斷你的燈是否在工作。
看起來你還沒有設置任何光線。
您必須加載網格中定義的材料,並設置至少一個燈。
一旦你設置一盞燈,使用固定管道在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);
}
如果仍然看不到任何東西,設定你自己定義的材料。
我設置了一些照明,如[this](http://pastebin.com/xj0BpGwn)。但我仍然得到相同的圖像! – bdhar 2010-08-10 11:35:12
你有沒有設置材料?爲了「看到」照明,您需要燈光和材料。順便說一句,我編輯了我的答案。 – KeatsPeeks 2010-08-10 11:39:38
[It](http://pastebin.com/bGpPkdf8)被包含在代碼中:(。仍然沒有效果!! – bdhar 2010-08-10 11:47:16
謝謝。問題出在法線之上。調用[D3DXComputeNormals](http:// msdn。 microsoft.com/en-us/library/bb172742%28VS.85%29.aspx)幫助了我 – bdhar 2010-08-25 06:04:51