我正在尝试让以下代码正常工作:
GLfloat *vbuffer = new GLfloat[24] {
0,0,0,
10,0,0,
0,10,0,
0,0,10,
10,10,0,
10,0,10,
0,10,10,
10,10,10
};
GLubyte *cbuffer = new GLubyte[32] {
255,0,0,255,
0,255,0,255,
0,0,255,255,
255,255,0,255,
255,0,255,255,
0,255,255,255,
0,0,0,255,
255,255,255,255
};
GLuint *ibuffer = new GLuint[24] {
0,1,4,2,
0,2,6,3,
0,3,5,1,
1,4,7,5,
5,7,6,3,
2,6,7,4
};
//...
glColor4f(1,1,1,1);
glEnableClientState(GL_VERTEX_ARRAY | GL_COLOR_ARRAY);
glColorPointer(4, GL_UNSIGNED_BYTE, 0, cbuffer);
glVertexPointer(3, GL_FLOAT, 0, vbuffer);
glDrawElements(GL_QUADS, 24, GL_UNSIGNED_INT, ibuffer);
glDisableClientState(GL_VERTEX_ARRAY | GL_COLOR_ARRAY);
没有绘制所需的立方体,而始终显示使用 glVertex3f
绘制的坐标轴。
当我从 glEnableClientState
中删除 GL_COLOR_ARRAY
时,立方体按照指示绘制为完全白色。
我做错了什么?为什么 glColorPointer 的东西不起作用?
系统:
- Kubuntu 13.04,64 位
- 英特尔高清显卡 3000
- OpenGL 3.0 (Mesa 9.1.7)
我是一名优秀的程序员,十分优秀!