opengl顶点数组的问题
以前是用glBegin/glEnd画图的,这两天改用了VBO,工作正常。但是担心可能有些机器可能不支持VBO,所以想保留一个候选模式,因为glBegin/glEnd效率太低,所以想用顶点数组,但是很奇怪,下面这段代码会引起崩溃:
- C/C++ code
glEnableClientState(GL_VERTEX_ARRAY); glEnableClientState(GL_NORMAL_ARRAY); glEnableClientState( GL_TEXTURE_COORD_ARRAY ); glVertexPointer(3, GL_FLOAT, 0, &Vertex[0]); glNormalPointer(GL_FLOAT, 0, &Norm[0]); glTexCoordPointer(2,GL_FLOAT, 0,&UV[0]); glDrawArrays(GL_QUADS, 0, (int)Vertex.size()); glDisableClientState(GL_VERTEX_ARRAY); glDisableClientState(GL_NORMAL_ARRAY); glDisableClientState( GL_TEXTURE_COORD_ARRAY );
其中Vertex,Norm和UV都是vector<float>。
有经验的帮忙看看啊,am i missing anything?
[解决办法]
还有一点,vertex数组的大小也不是顶点的数量,三个float才组成一个顶点,如果第三个参数要用顶点的数量,也应该是vertx.size()/3吧。