使用JOGL在glDrawElementsInstanced()的indices参数中有什么

时间:2013-01-19 02:38:35

标签: opengl jogl

在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,并没有收到任何错误消息。

1 个答案:

答案 0 :(得分:2)

在LWJGL中,它的工作方式非常相似,当我需要在索引槽中传递零时,我这样做了: (IntBuffer)空。只需将null转换为缓冲区类型。