当我查看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,则将其视为缓冲区对象的数据存储区中的字节偏移量(请参见glBindBufferVertex Specification

10-07 21:00