C 无法在OpenGL中设置颜色

C 无法在OpenGL中设置颜色,c,opengl,colors,vbo,C,Opengl,Colors,Vbo,我有一个OpenGL场景,制作为VBO和IBO。 我的VBO是由3个浮点数组成的系列:x,y,z,x,y,z,x,y,z。。。 除此之外,我还有一个由三个浮点数组成的彩色数组:r,g,b,r,g,b,r,g,b 我的目标是将第一个vertice(x=vertice[0],y=vertice[1],z=vertice[2])链接到第一个颜色(r=color[0],g=color[1],b=color[2])。 但是,我无法使用以下代码显示颜色: glGenBuffers(1, &V

我有一个OpenGL场景,制作为VBO和IBO。 我的VBO是由3个浮点数组成的系列:x,y,z,x,y,z,x,y,z。。。 除此之外,我还有一个由三个浮点数组成的彩色数组:r,g,b,r,g,b,r,g,b

我的目标是将第一个vertice(x=vertice[0],y=vertice[1],z=vertice[2])链接到第一个颜色(r=color[0],g=color[1],b=color[2])。 但是,我无法使用以下代码显示颜色:

    glGenBuffers(1, &VertexVBOID);

    glBindBuffer(GL_ARRAY_BUFFER, VertexVBOID);
    glBufferData(GL_ARRAY_BUFFER, sizeof(GLfloat)*nbVertex*3, glVertex, GL_STATIC_DRAW);

    glGenBuffers(1, &IndexVBOID);
    glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, IndexVBOID);
    glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(int)*nbVBOInd, VBOInd, GL_STATIC_DRAW);

    glEnableClientState(GL_VERTEX_ARRAY);
    glEnableClientState(GL_COLOR_ARRAY);

    glBindBuffer(GL_ARRAY_BUFFER, VertexVBOID);
    glVertexPointer(3, GL_FLOAT,0,0);
    glColorPointer(3, GL_FLOAT, 0, glColors);

    glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, IndexVBOID);

    glDrawElements(GL_TRIANGLES, nbVBOInd, GL_UNSIGNED_INT, 0);

上面的代码或我的数组设置方式是否存在问题?

请尝试以下顺序:

glBindBuffer(GL_ARRAY_BUFFER, VertexVBOID);
glVertexPointer(3, GL_FLOAT,0,0);
glBindBuffer(GL_ARRAY_BUFFER, 0);
glColorPointer(3, GL_FLOAT, 0, glColors);
另外,请看以下内容:

缓冲区对象名称是无符号整数。保留值0, 但每个缓冲区对象目标都没有默认的缓冲区对象。 相反,
buffer
设置为零会有效地解除任何缓冲区对象的绑定 并恢复该缓冲区的客户端内存使用情况 对象目标