我使用以下代码渲染交错的vbo,效果很好。
glVertexPointer(3, GL_FLOAT, sizeof(InterleavedVertexData), (GLvoid*)((char*)0));
glNormalPointer(GL_FLOAT, sizeof(InterleavedVertexData), (GLvoid*)((char*)0+3*sizeof(GLfloat)));
glColorPointer(4, GL_UNSIGNED_BYTE, sizeof(InterleavedVertexData), (GLvoid*)((char*)0+6*sizeof(GL_UNSIGNED_BYTE)));
当我更改glColorPointer的指针参数以使用 GLubyte 时,我看不到屏幕上呈现的任何内容?我在我的结构中也将颜色定义为GLubyte。
glColorPointer(4, GL_UNSIGNED_BYTE, sizeof(InterleavedVertexData), (GLvoid*)((char*)0+6*sizeof(GLubyte)));
答案 0 :(得分:11)
GLubyte
是一种类型。 GL_UNSIGNED_BYTE
是一个整数常量,通常用于表示您将在指针中传递GLubyte
。
sizeof(GLubyte)
始终为1。取sizeof(GL_UNSIGNED_BYTE)
通常会返回4或8,因为它是一个整数常量,并且具有系统整数大小的大小。
答案 1 :(得分:2)
GL_UNSIGNED_BYTE
是符号const,而GLubyte
是一种类型。 GLubyte通常被实现为unsigned char
的typedef;您可以通过查看gl.h
。
您应该在OpenGL方法中使用GL_UNSIGNED_BYTE
来指定传递的数据类型,并使用GLubyte
来计算数据大小。