私は DX11 に手を出していますが、DX10 に ID3DX10Mesh があったように、ID3DX11Mesh がないことに気付きました。DX11 はほとんど DX10 を拡張するだけなので、ID3DX10Mesh を置き換える必要がなかったか、それとも XNA フレームワークの何かに置き換えられたのでしょうか。
正確には問題ではありません。DX10 のものは DX11 でも動作するようですが、独自のメッシュ クラスを実装した方がよいと考えました。
ID3DX10Mesh::DrawSubSet はどのように機能するのでしょうか。異なるマテリアル/プロパティを持つメッシュのサブセットを描画できることは、私が必要とするものです。
ある種の属性テーブルを使用していることは知っています-これがどのように保存および使用されているかは不明です。
私が考えることができる簡単な解決策は、サブセットごとに 1 つずつ、メッシュに複数のインデックス バッファーを単純に格納することです。ただし、多くのプロパティがあると、これは多数のインデックス バッファーになる可能性があります。
別の方法として、メッシュの面を保存し (頂点をインデックスで参照)、それらにプロパティを割り当てることで、特定のプロパティを持つすべての面からインデックス バッファーを構築することで、そのプロパティを持つ面のサブセットを描画できます。
これら 2 つのうち、面を保存する方がすっきりしているように見えますが、とにかくインデックス バッファーを保存する必要があると思います。(フレームごとにこれらのバッファを再構築する時間を犠牲にすることは不要に思えます)
描画呼び出しの数を低く抑えるために、とにかく多くのサブセットを回避する必要があると思います。その場合、追加のバッファーが追加のメモリをあまり占有しないようにする必要があります。
ただし、どちらのアイデアも最適とは思えないので、DrawSubSet の実際の実装に関する他のアイデアや手がかりを歓迎します :)