directX.xメッシュファイルをロードする簡単なプログラムを作成しました。ロードした画像は次のように表示されます
。
しかし、MeshViewerが表示するのはこのようなもの
です。
3Dの外観を得るには何をする必要がありますか?DirectXライブラリのどの呼び出しを行う必要がありますか?
ライトを設定していないようです。
メッシュで定義されたマテリアルをロードし、少なくとも 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);
}
それでも何も表示されない場合は、自分で定義したマテリアルを設定してください。
独自のアプリケーションと同じファイルをビューアにロードしていますか? 実際には、メッシュに法線がないように見えるからです。ビューアと同じファイルを使用している場合、それらはメッシュ ファイルにあるはずです。
それ以外は、照明が信じられないほど明るい (すべての値が 1.0) ため、拡散値を 0.0 に設定し、アンビエントを 0.5 赤に設定してみます。その後、少なくとも、ライトが機能しているかどうかを確認できます。