最初にコードを指定せずに問題を説明してください。8つのインデックス付き頂点を使用しているときに、面の色が一意ではない
回転キューブの基本レッスンを再作成しました。レッスン4 Webglの学習
コードには、各面に4つの頂点がリストされ、合計24個の頂点があります。これらの24個の頂点0〜23にインデックスを使用してdrawElements(...)を行い、24個の異なる色のカラーバッファ配列を使用します。
最終的な結果はもちろん、それぞれの顔に異なる色が割り当てられた回転キューブです。
私がしたことは、実際にキューブは24個ではなく8個の頂点しか持たないという事実を利用したことでした。そこで私は8個の頂点の配列を作成しました。 0から23までのインデックスではなく、0から7までのインデックスで動作するように位置インデックス配列を再作成しました。オリジナルのレッスンと同じように、顔の作成に同じ順序を入れていたので、私はカラーバッファ配列を残しました。
私がdrawElements(...)を完成したとき、私は完璧な回転キューブを持っていました。しかし、キューブは正しく着色されていません。各頂点は単一の色を有するので、カラー配列要素のうちの最初の8個(24個のうち)のみが使用された。基本的に上半分は1色、下半分は別の色です。キューブの顔にはユニークな色がありません。
問題は:頂点ではなく頂点インデックスに色を割り当てる方法はありますか? シェーダでgl_vertexIDを使うことができると疑われていますが、最初に意見を聞くと思いましたか?
ありがとう...
直接回答ありがとうございます。ちなみにいいチュートリアルです。私はケース2で作業し、シェイダーに基づいて顔の色を計算します。 – SteveWeber