マイクロソフトが提供する基本的な効果のサンプルに基づいてプロジェクトを開始しました。次に、カメラを動かすために入力されたキーを追加しました。最後のステップは、DXFファイルからテスト3Dデータをロードすることです。DXFインポートを自分で作成しました。これは、3D三角形を表す単純な3Dfaceオブジェクトです。基本エフェクトサンプルのコードを調整して、バリアント頂点カウントを読み取りました。しかし、頂点が正しく設定されていても、頂点宣言と頂点バッファーが正しく設定されていても、Normal0が見つからないというエラーが発生します。問題は頂点宣言にあると思います。元のサンプルには12個の三角形しかありませんが、私の最初のサンプルDXFには約1000個あります。問題はここにあると思います:
private void CreateVertexBuffer()
{
vertexDeclaration = new VertexDeclaration(new VertexElement[]
{
new VertexElement(0, VertexElementFormat.Vector3, VertexElementUsage.Position, 0),
new VertexElement(12, VertexElementFormat.Vector3, VertexElementUsage.Normal, 0),
new VertexElement(24, VertexElementFormat.Vector2, VertexElementUsage.TextureCoordinate, 0)
}
);
vertexBuffer = new VertexBuffer(
graphics.GraphicsDevice,
vertexDeclaration,
number_of_vertices,
BufferUsage.None
);
Vertices = new VertexPositionNormalTexture[number_of_vertices];
InitializeVerts();
vertexBuffer.SetData<VertexPositionNormalTexture>(Vertices);
graphics.GraphicsDevice.SetVertexBuffer(vertexBuffer);
}
Vertex Element 12 ... Vertex Element 24 ...これらは問題のある領域ですか?