2

頂点、テクスチャ座標、および法線を解析する OBJ ローダーを作成しました。それぞれが FloatBuffer に格納され、opengl に渡されます。

gl.glVertexPointer(3, GL10.GL_FLOAT, 0, fbVertices);
gl.glNormalPointer(GL10.GL_FLOAT, 0, fbNormals);

ただし、インデックス バッファを glDrawElements に渡す方法について困惑しています。インデックスは、頂点、テクスチャ、および法線の配列内のインデックスを参照することを読みましたが、OBJ ファイルの説明を読むと、顔は次のような形式で保存されているようです。

f 1/2/3 4/5/6 7/8/9

フォーマットは

vertice/texture/normal

glDrawElements は、3 つすべてを参照する必要がある 1 つのインデックスのみを受け入れますが、実際の OBJ ファイルを見ると、これは可能ではないようです。3つすべてのインデックスをどのように渡しますか?

ここでコードのコピーを見つけることができます: http://codepad.org/melc1HIC

4

2 に答える 2

1

直接はできません。データを OpenGL に渡す前に前処理を行う必要があるため、頂点ごとに 1 つのインデックスのみが使用され、このインデックスはテクスチャ座標、法線などにも機能します。

于 2010-09-28T14:26:45.377 に答える
0

.obj ファイルを解析する小さなライブラリを作成し、OpenGL (LWJGL) でモデルをレンダリングするためのサンプル コードを含めました。VBO を作成するコードは、うまくいけば、それがどのように機能するかを理解するのに十分単純明快であり、ライブラリを使用するか、ライブラリからカット アンド ペーストすることもできます。(ライセンスはパブリック ドメインです。) それを見てください。

http://darksleep.com/oObjLoader/

于 2012-01-08T12:39:09.627 に答える