在 JOGL 中调用 glDrawElementsInstanced() 时,我无法理解将什么用作“索引”参数。
通过查看一些 C++ 教程,似乎只要您想从索引缓冲区的开头开始渲染顶点,您就可以只为索引传递 0。JOGL 要求 indices 参数是一个 Buffer 对象。我尝试在其中创建一个包含一个元素 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
)
我正在使用 OpenGL 4 和 Scala。我还将我的程序设置为使用 DebugGL4,并且没有收到任何错误消息。