让glVertexPointer和glDrawElements工作?

时间:2013-03-11 18:54:06

标签: c++ opengl

我无法让glDrawElements工作。我目前正在使用一个网格类来读取文档中的值,并将顶点,面和规范读入它们的数组中。对于顶点,我给出的代码改进了用途:

Class Point3{
   public:
       GLfloat x,y,z;
       and other functions here...
}

我将每个顶点存储在这个类中,我有一个这些类的数组,存储了所有可供使用的东西,称为pt。给我的文件没有给出索引,但确实有规范和面孔所以我使用给定的工具来创建索引列表

    indices = new GLubyte[numIndices]; 
    for(int f = 0; f < numFaces; f++){
    for(int v = 0; v < face[f].nVerts; v++){        
        int in = face[f].vert[v].normIndex ; // index of this normal
                assert(in >= 0 && in < numNormals);
        int iv =  face[f].vert[v].vertIndex ; // index of this vertex
        indices[i] = iv;
        i++;
    }

我使用它来创建一个索引列表,虽然我不是百分百肯定这是正常的。然后我有一个名为drawVertexArray的函数来获取该信息,并且假设在完成时和/或当另一个函数调用它时绘制对象。

Mesh::drawVertexArray(){
    glEnableClientstate(GL_Vertex_Array);
    glVertexPointer(3,GL_FLOAT,sizeof(Point3),&pt[0].x);
    glDrawElements(GL_TRIANGLES,numIndices,GL_UNSIGNED_BYTE,&indices[0]);
    glDisableClientState(GL_VERTEX_ARRAY);
    glFlush(); 

我也尝试过使用glDrawArrays(GL_TRIANGLE,0,numVerts),但这并没有为我打印任何内容。我不知道我是如何将信息输入VertexPointer的,这是问题,还是在我不知道的过度函数的背景中还有另一个问题。

0 个答案:

没有答案