2013-01-19 34 views
1

我无法理解的“指数”参数调用glDrawElementsInstanced()在JOGL时使用什么glDrawElementsInstanced(的指标参数善有善报)。使用JOGL

从找过一些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和斯卡拉。我也设置我的程序使用DebugGL4,并没有收到任何错误消息。

回答

2

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

+0

谢谢!它的工作原理是在没有投射的情况下传入null。 – bwroga