4

私はいくつかの OpenGL (2.1) テストを行っています。単純な立方体を作成しようとしているときに、複雑なメッシュを作成する方法を考えていました。私の立方体では、各頂点を手動で設定しましGL_TRIANGLESた。しかし、たとえばループ内で同じことを行う方法がわかりません。頂点の順序と、非常に多くの頂点が繰り返されているためです。

3つの頂点を「1回」(両方の三角形に対して)設定して、本当に面を作成する必要がありますか? それはとても遅いようです。最適化する方法は?

ここに画像の説明を入力

メッシュを作成/ロードするテクニックは何ですか?

ああ、私はいくつかの例をいただければ幸いです。

4

1 に答える 1

5

Jason Gregory 著の「Game Engine Architecture」という本に、あなたの質問に対する答えがあります。これがそれが言うことです:

メッシュを定義する最も簡単な方法は、ベクトルを 3 つのグループでコピーすることです [...] このデータ構造は Triangle List として知られています。[...] 多くの頂点が、多くの場合複数回重複していることにお気づきでしょう [...] このため、ほとんどのエンジンは、インデックス付きトライアングル リストとして知られる、より効率的なデータ構造を利用します。

インデックス付き三角形リストの背後にある考え方は、頂点を別の頂点バッファーに格納し、インデックスを別のインデックス バッファーに格納することです。

同じ章では、三角形のストリップ ( GL_TRIANGLE_STRIP) とファン ( GL_TRIANGLE_FAN)の使用も推奨されています。

頂点バッファー オブジェクトのインデックス作成に関するチュートリアルは、こちらにあります。

于 2012-11-10T00:22:29.473 に答える