1

JOGLでglDrawElementsInstanced()を呼び出すときに、「インデックス」パラメーターとして何を使用するかを理解するのに問題があります。

いくつかのC++チュートリアルを見ると、インデックスバッファの先頭から頂点のレンダリングを開始する限り、インデックスに0を渡すことができるようです。JOGLでは、indexesパラメーターがBufferオブジェクトである必要があります。1つの要素0を内部に含むIntBufferを作成しようとしましたが、機能しませんでした。

これを使用して頂点を描画すると、画面に描画されたものが表示されます。

gl.glDrawElements(GL.GL_TRIANGLES, 10, GL.GL_UNSIGNED_BYTE, 0)

しかし、代わりにこれを使用すると、画面が黒くなります。

gl.glDrawElementsInstanced(
    GL.GL_TRIANGLES, 10, GL.GL_UNSIGNED_BYTE, IntBuffer.wrap(Array(0)), 1
)

これを使用すると、タイプの不一致エラーが発生します。

gl.glDrawElementsInstanced(
    GL.GL_TRIANGLES, 10, GL.GL_UNSIGNED_BYTE, 0, 1
)

私はOpenGL4とScalaを使用しています。また、DebugGL4を使用するようにプログラムを設定しましたが、エラーメッセージは表示されません。

4

1 に答える 1

2

ほぼ同じように機能するLWJGLでは、インデックススロットでゼロを渡す必要がある場合、次のようにしました:(IntBuffer)null。nullをキャストしてバッファタイプにするだけです。

于 2013-01-19T10:46:27.190 に答える