2

8 つの頂点と 1 つのDrawIndexedPrimitives呼び出しだけを使用して、テクスチャ付きの立方体を描画しようとしています。これは可能ですか?

UV 座標に問題があります。立方体のすべての面で機能する適切な UV 値を考え出すことは不可能です。

例として、次の番号付けを取り上げます。

UV 値を持つキューブ

頂点 A の UV は (0, 0) に設定されています。A の対角線上にあるすべての頂点 (A を頂点として共有する 3 つの面すべて) について、UV を (1, 1) に設定しています。ここで、頂点として A を持たない 3 つの面は、それぞれ (1, 1) の UV 値を持つ 2 つの頂点を持つことになります。これが事実であってはならないことは私の理解です。

解決策は何ですか?

4

1 に答える 1

4

1 つの頂点に複数の UV 座標がある場合は不可能です。

この問題を回避するには、頂点位置を複製し、各コピーに一意の UV 座標を割り当てます。これにより、最悪の場合、立方体の頂点の数が 24 に増えます (側面ごとに 4 つ)。

これは、OpenGL を使用しているか DirectX を使用しているかに関係なく、誰もが行うことです。立方体の場合、これは多くの無駄なメモリのように見えるかもしれませんが、実際には (実際のモデルでは) 頂点の重複の量はそれほど多くありません。

その後、DrawIndexedprimitive を 1 回呼び出すだけで立方体を描画できます。

于 2010-03-01T13:05:31.783 に答える