2011-05-08 62 views
2

我想繪製一個漸變,但首先我只想讓glcolorpointer工作。如果我使用glColor4f(...),它會正確繪製顏色,但glcolorpointer只會繪製黑色。請幫助OpenGL(ES)Android - 爲什麼這個glcolorpointer只有黑色?


gl11.glPushMatrix(); 
//gl11.glColor4f(RGBBorder[0], RGBBorder[1], RGBBorder[2], alpha); 
gl11.glBindBuffer(GL11.GL_ARRAY_BUFFER, vertexPointerCube); 
gl11.glBindBuffer(GL11.GL_ELEMENT_ARRAY_BUFFER, indexPointerCube); 

gl.glEnableClientState(GL10.GL_COLOR_ARRAY);  
float colors[] = {.7f,.7f,.7f,.5f}; 
ByteBuffer vbb = ByteBuffer.allocateDirect(colors.length * 4); 
vbb.order(ByteOrder.nativeOrder()); 
FloatBuffer buff = vbb.asFloatBuffer(); 
buff.put(colors); 
buff.position(0);    

gl.glColorPointer(4, GL10.GL_FLOAT, 0, buff); 
gl11.glVertexPointer(3, GL10.GL_FLOAT, 0, 0); 
gl11.glDrawElements(GL11.GL_TRIANGLES, indicesCube, GL11.GL_UNSIGNED_SHORT, 0); 

gl.glDisableClientState(GL10.GL_COLOR_ARRAY); 
gl11.glPopMatrix(); 

回答

5

我認爲問題是,你只有一個頂點添加顏色,並留下buff太小,無法處理你的所有頂點。使用顏色緩衝區,你應該有,在這種情況下,每個頂點有4個浮點數,乘以8(假設它是一個你正在繪製的立方體)。它應該與引入頂點座標非常相似,儘管我從未玩過GL11.glBindBuffer。這次有了差別,它是您爲每個頂點分配的顏色值。

This tutorial非常好閱讀,如果你還沒有做過。

+0

這是一個問題,我得到它爲非VBO對象工作。該VBO .......你應該看看VBO,他們提高性能。 – 2011-05-09 00:23:44

+0

感謝您的建議,絕對會做到這一點,但會繼續使用GL10,稍後再檢查GL11/20。 – harism 2011-05-09 06:08:42

相關問題