我使用下面的代碼正常渲染交錯式vbo。GLubyte和GL_UNSIGNED_BYTE有區別嗎?
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的指針paramater使用GLubyte我沒有看到呈現在屏幕上的東西嗎?我在我的結構中也將GLubyte定義爲顏色。
glColorPointer(4, GL_UNSIGNED_BYTE, sizeof(InterleavedVertexData), (GLvoid*)((char*)0+6*sizeof(GLubyte)));
'GLubyte'沒有被定義爲'unsigned char'的typedef。這是一個常見的實現,但OpenGL爲了某個原因添加了新類型,它具有另一個更具體的含義,而不是'unsigned char'。 C/C++在字體大小方面相當寬鬆,例如'OpenGL'不是。 – KillianDS
你有沒有看過我在XCode中提到的gl.h,因爲GLubyte完全是這樣定義的:typedef unsigned char GLubyte;? – tiguero
任何實現的gl.h都只是一個實現,它實際上是定義GLubyte的規範。例如,假設在某個平臺上char是2個字節以默認啓用UTF-16,那麼這將不是一個正確的typedef,並且這將會實現不同。 – KillianDS