私はBlenderからCollada形式をエクスポーズすることを実験しています。さらに複雑なオブジェクトとテクスチャを使用して、インデックス "p"同じ頂点情報ですが、異なる法線とuv座標を使用します。3Dモデルで異なるuv座標を持つ重複頂点位置があるのはなぜですか?
非常に重要な2つの主な質問があります。
1:なぜですか?その位置に1頂点位置と1 UV座標しか持たないのですか?
2(すべての中で最も重要な質問):この頂点情報がVertex Shaderに順不同で入れられるとどうなりますか?たとえば、インデックス1の頂点とインデックス10の頂点は同じ位置を共有しますが、法線とUV座標は異なります。インデックス10が最初に、そしてインデックス1が最初に行われたらどうなりますか? Pixel Shaderの内部で何か変更されていますか?これはパイプラインの残りの部分にどのように影響しますか?
ありがとうございました!
偉大な答えですが、質問1はどうですか? – Mike5050
GPUは「インタリーブされた頂点データ」で動作します。つまり、頂点ごとのデータはすべて、フォーマットとストライドで定義された同じブロックにパックされます。異なる法線、UV、ボーンインデックス、またはその他の頂点ごとのデータで同じ位置にしたい場合は、それを複製する必要があります(「分割」とも呼ばれます)。 GPUは「配列の構造」ではなく「構造の配列」を使用します。複数の頂点バッファストリームを使用する場合でも、頂点ごとにすべてのバッファに対して単一のインデックスしか持たない –
右。質問1への私の答えは:頂点は複製されません。頂点(x、y、z、u1、v1)と頂点(x、y、z、u2、v2)は、異なる(u、v)を持つため、異なる頂点です。 – Tommy