0

directX.xメッシュファイルをロードする簡単なプログラムを作成しました。ロードした画像は次のように表示されます

しかし、MeshViewerが表示するのはこのようなもの です。

3Dの外観を得るには何をする必要がありますか?DirectXライブラリのどの呼び出しを行う必要がありますか?

4

2 に答える 2

1

ライトを設定していないようです。

メッシュで定義されたマテリアルをロードし、少なくとも 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);
}

それでも何も表示されない場合は、自分で定義したマテリアルを設定してください。

于 2010-08-10T11:26:52.910 に答える
1

独自のアプリケーションと同じファイルをビューアにロードしていますか? 実際には、メッシュに法線がないように見えるからです。ビューアと同じファイルを使用している場合、それらはメッシュ ファイルにあるはずです。

それ以外は、照明が信じられないほど明るい (すべての値が 1.0) ため、拡散値を 0.0 に設定し、アンビエントを 0.5 赤に設定してみます。その後、少なくとも、ライトが機能しているかどうかを確認できます。

于 2010-08-23T22:40:38.540 に答える