JOGL でインターリーブされた頂点配列 (VBO ではない) をレンダリングする適切な方法に関する情報が見つかりません。具体的には、glVertexAttribPointer() を使用すると、インターリーブされたデータ (FloatBuffer) 内のオフセットを指定できないようです。C、C++、または Objective-C では、これを行う方法を正確に知っていますが、Java では勝利への明確な道はないようです。
私が試した唯一のことは、glVertexAttribPointer() を使用する前にバッファの位置を設定することでしたが、これは効果がありませんでした。
わかりやすくするために、レンダリング関数のコードのサンプルを次に示します。
gl.glEnableVertexAttribArray( POSITION_ATTRIB );
gl.glEnableVertexAttribArray( NORMAL_ATTRIB );
gl.glVertexAttribPointer( POSITION_ATTRIB, 4, GL.GL_FLOAT, false, 32, vertexBuffer );
// vertexBuffer.position( 4 ); if I try to specify an offset
gl.glVertexAttribPointer( NORMAL_ATTRIB, 4, GL.GL_FLOAT, false, 32, vertexBuffer );
gl.glDrawArrays( GL.GL_TRIANGLES, 0, nummy );
gl.glDisableVertexAttribArray( NORMAL_ATTRIB );
gl.glDisableVertexAttribArray( POSITION_ATTRIB );
持っている属性ごとに 4 つのフロートを使用しています。に基づいて 32 のストライドを選択しました
float あたり 4 バイト * アトリビュートあたり 4 float * 頂点あたり 2 アトリビュート。