Opengl 使用JOGL时,GLDrawerElementsInstanced()的Indexes参数中有什么内容

Opengl 使用JOGL时,GLDrawerElementsInstanced()的Indexes参数中有什么内容,opengl,jogl,Opengl,Jogl,在JOGL中调用glDrawerElementsInstanced()时,我很难理解使用什么作为“索引”参数 从一些C++教程中看,似乎你可以在索引中传递0,只要你想从索引缓冲区开始渲染你的顶点。JOGL要求索引参数是缓冲区对象。我尝试创建一个内部有一个元素0的IntBuffer,但没有成功 当我使用它绘制顶点时,我会在屏幕上看到绘制的内容: gl.glDrawElements(GL.GL_TRIANGLES, 10, GL.GL_UNSIGNED_BYTE, 0) 但是当我用这个替代时,屏幕

在JOGL中调用glDrawerElementsInstanced()时,我很难理解使用什么作为“索引”参数

从一些C++教程中看,似乎你可以在索引中传递0,只要你想从索引缓冲区开始渲染你的顶点。JOGL要求索引参数是缓冲区对象。我尝试创建一个内部有一个元素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,并且没有收到任何错误消息。

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

谢谢大家!!只传入null而不进行强制转换也是有效的。