2013-03-24 266 views
0

每当我看一个教程,解释如何使用glDrawArrays和glVertexPointer命令,他们使用的参数是不同的,我可用。正确使用glVertexPointer?

例如:一个教程调用glVertexPointer像这样的参数:(顶点是float数组)

glVertexPointer(3, GL_FLOAT, 0, Vertices); 

我有可用的参数是:

glVertexPointer(int size, int stride, FloatBuffer pointer); 

我的问题是:什么是使用glVertexPointer()的正确方法?

回答

2

glVertexPointer,顾名思义,是基于使用指针。您正在使用Java,其中指针不存在。因此,Java等价物必须以不同的方式工作。它需要一个特殊的内存数组对象,它可以在内部被转换成一个C指针,该指针将被传递给实际的glVertexPointer调用。

由于Java在缓冲区的内容上放置了一个类型,因此不需要显式类型字段。有several overloads of glVertexPointer in LWJGL,每个都采用不同类型的缓冲区。

+0

好吧,我明白了。我将不得不这样做:IntBuffer verts = IntBuffer.wrap(Vertices)? – lightice11 2013-03-24 21:00:57

+0

@ lightice11:你为什么要在一个* IntBuffer *中放入“一个浮点数组”? – 2013-03-24 21:18:04

+0

浮动从我正在阅读的教程中,我在我的程序中使用整数:D反正,它给了我一个错误,说缓冲区不是直接的。我应该使用ByteBuffer.allocateDirect()吗? – lightice11 2013-03-24 21:21:23