2011-08-19 115 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

你是國王,謝謝! –