2011-08-19 86 views
1

我有一个OpenGL场景,制作为VBO和IBO。我的VBO是一个3浮点系列:x,y,z,x,y,z,x,y,z ......除此之外,我有一个由3个浮点系列组成的颜色数组:r,我的目标是第一个顶点(x = vertice [0],y = vertice [1],z = vertice [2]), )链接到第一种颜色(r = color [0],g = color [1],b = color [2])。 不过,我无法显示与下面的代码的颜色:无法在OpenGL中设置颜色

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); 

是否有一个问题在上面的代码,或在我的阵列设置方式?

回答

3

给这个序列的尝试:

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

而且,看docs for glBindBuffer()

缓冲区对象名称是无符号整数。零值被保留, 但每个缓冲区对象目标没有默认缓冲区对象。 取而代之,buffer设置为零,可以有效地解除先前绑定的任何缓冲区对象 ,并恢复该缓冲区的客户端内存使用情况。 对象目标

+0

你是国王,谢谢! –