OpenTKOpenTKがGitHubで更新されるようになりました。NuGetから手に入れることができるようになりました。Coreに対応する機運があるようです。以前VBOを扱ったときは、頂点の位置だけを情報として保持していました。今回は法線と色情報を保持させたVBOを追加します。Object)というバッファも用います。通常の3Dモデルデータは、頂点を複数のポリゴンが共有する場合がほとんどで、今までの方法ではポリゴンごとに同じ頂点を作成して描画しているので無駄が多く発生しています。その無駄を解消する仕組みは、頂点に対して配列のように番号を付けておいて、ポリゴンの描画時に使う頂点を番号(インデックス)で指定する、というものです。簡単なモデルでは実感を得にくいですが、ソフトウェア側で頂点や法線のリストや配列を作り、番号を使って指定するよりは確実に速く動作します。一つの頂点の定義が一度で済むので、モデルデータを生成する立場から見ても楽になります。IBOの使い方IBOを使うには、VBO同様にバッファを生成するための関数を実行しますが、VBOのBufferTargetがArrayBufferなのに対し、IBOのBufferTargetはElementArrayBufferとなっています。IBOとVBOはターゲットが違うため同時にひも付けができますが、不必要なときは両方のひも付けを解除しておくことを忘れないでください。虹色ドーナツカラフルなトーラスを描画ソースコードは、バッファの数を増やしたので、それに伴って記述が増えました。VBOはvbo[0]を位置情報用、vbo[1]を法線情報用、vbo[2]を色情報用として用います。0);ここで新しく出てきたものはColorMaterialです。前回は材質によって色を表現していましたが、今回は175行目と176行目で、材質のDiffuseに色情報を使うと指定します。IBOは、BufferTargetの値をElementArrayBufferにすることで使用できます。ポリゴンの使用頂点がまとめられた、インデックス情報を持った配列を用います。今回はGL.BindBufferの第2引数やGL.BindBufferの第1引数に気を付けてください。増えた分のバッファやOpenGLの配列の許可は、終了時にしっかり解除するようにしましょう。0);GL.VertexPointer関数、GL.NormalPointer関数、GL.ColorPointer関数を使う前に、対応する変数をひも付けしておきます。重要なのは310行目です。これはひも付けされたIBOに従って、第1引数の図形で描画します。第2引数は使用する頂点インデックスの長さ、第4引数は頂点インデックスの開始位置です。補足など100万ポリゴンのトーラス上のサンプル画像では、ちょっとぎこちなく描画してしまうグローシェーディングですが、ポリゴンの数を増やすときれいに見えます。MasuqaT.NET。