私は、自分で教えた(または教わった)学習の一環として、テクスチャマップされたキューブをレンダリングしようとしています。頂点のインデックスとテクスチャのコーディングを一緒にパックする
ので、同様に、私は、1つの配列に頂点COORDSとテクスチャCOORDSパックthis exampleオンラインが見つかりました:
Vertex Vertices[4] = { Vertex(Vector3f(-1.0f, -1.0f, 0.5773f), Vector2f(0.0f, 0.0f)),
Vertex(Vector3f(0.0f, -1.0f, -1.15475), Vector2f(0.5f, 0.0f)),
Vertex(Vector3f(1.0f, -1.0f, 0.5773f), Vector2f(1.0f, 0.0f)),
Vertex(Vector3f(0.0f, 1.0f, 0.0f), Vector2f(0.5f, 1.0f)) };
が、私はそれがピラミッド型のオブジェクトのために働くと思いますが、それはのためにとてもうまく動作しません。私の立方体。問題は、別の面と共有されている同じ頂点に対して異なるテクスチャ座標を使用する必要があることです。
私は「ああ、私は知っています!代わりにインデックスでテクスチャ座標をパックします!インデックスをテクスチャ座標にマッピングする私のデータ構造をうまく作成しましたが、今では、インデックスはGL_ELEMENT_ARRAY_BUFFER
に入り、テクスチャ座標はGL_ARRAY_BUFFER
に入る必要があります。
これは、このデータを1つのバッファにパックする方法がないことを意味しますか?インデックス配列とテクスチャ座標配列を2つの別々の構造に分割する必要がありますか?
さらに、頂点位置とテクスチャ座標の間に1:1マッピングが存在しなくなることに気付きました。頂点シェーダをどのように書き直すのか分かりません。
または、私はチュートリアル(頂点の位置とテクスチャ座標をまとめてパックする)と同じようにして、必要に応じて頂点を繰り返します。
最初にインデックスと頂点の位置を分離するという考えはデータの冗長性を減らすことだと思っていましたが、テクスチャを使用するとすぐにその冗長性を追加する必要がありますか?
十分に公正...私はこの事実を受け入れることができます:) – mpen