当我查看glVertexAttribPointer
函数的javadoc时,我看到它是“ C语言函数的入口点:void glVertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void * pointer)
。
除了最后一个参数外,参数之间的对应关系大部分都是向前移动的。 “ C”版本似乎合乎逻辑:必须指定数据,并且为此必须使用一个指针。在Java版本中,我更加困惑,因为期望使用long
整数...
谁能解释我这个long
整数如何表示“ C”指针?
最佳答案
glVertexAttribPointer
的最后一个参数具有不同的含义,具体取决于使用该功能的情况。
如果没有缓冲区对象(零)绑定到GL_ARRAY_BUFFER
目标,则它是指向数组(Legacy OpenGL)中第一个通用顶点属性的第一部分的指针。
如果将命名缓冲区对象绑定到目标GL_ARRAY_BUFFER
,则将其视为缓冲区对象的数据存储区中的字节偏移量(请参见glBindBuffer
和Vertex Specification)