在JOGL中调用glDrawElementsInstanced()时,我无法理解要用作“indices”参数的内容。
通过查看一些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,并没有收到任何错误消息。
答案 0 :(得分:2)
在LWJGL中,它的工作方式非常相似,当我需要在索引槽中传递零时,我这样做了: (IntBuffer)空。只需将null转换为缓冲区类型。