0
我有一個大量的點,我正從一個文件讀取具有3D位置和RGB值。我努力通過Java + Android + OpenGL(ES)渲染這些圖像。OpenGL ES:頂點/顏色緩衝區/指針
我創建了一個頂點緩衝和顏色緩衝:
private FloatBuffer vertexBuffer, colorBuffer;
引腳我的頂點緩衝區:
ByteBuffer vbb = ByteBuffer.allocateDirect(lasVertices.length * 4);
vbb.order(ByteOrder.nativeOrder());
vertexBuffer = vbb.asFloatBuffer();
vertexBuffer.put(lasVertices);
vertexBuffer.position(0);
在我的平局(GL10 GL):
gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
gl.glColorPointer(3, GL10.GL_FLOAT, 0, colorBuffer);
gl.glVertexPointer(3, GL10.GL_FLOAT, 0, vertexBuffer);
gl.glPointSize(3);
gl.glDrawArrays(GL10.GL_POINTS, 0, 100);
gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);
它在屏幕上繪製了100點的小樣本,但沒有顏色。我已經固定的顏色到我上面創建的同時運行的代碼,因爲這樣的colorBuffer:在步驟與頂點的位置
lasColors[i*3] = array[i].red;
lasColors[i*3+1] = array[i].green;
lasColors[i*3+2] = array[i].blue;
但如何呈現獨特的價值?
我想我所做的與位置:
vbb = ByteBuffer.allocateDirect(lasColors.length * 4);
vbb.order(ByteOrder.nativeOrder());
colorBuffer = vbb.asFloatBuffer();
colorBuffer.put(lasColors);
colorBuffer.position(0);
,並顯示在我的繪製函數如下:
gl.glColorPointer(3, GL10.GL_FLOAT, 0, colorBuffer);
...但沒有得到任何結果。
謝謝你的幫助!
我試過了,(並禁用了它)。但是沒有運氣:( – RedLeader
嗯,你說的是,雖然它們都是相同的顏色,如果是這樣的話,是什麼顏色? – theisenp
我做了一點挖掘,即使它不能解決你的整個問題,您必須根據[documentation](http://www.opengl.org/sdk/docs/man/xhtml/glColorPointer.xml)包含glEnableClientState()行。您也可以嘗試使用顏色的RGBA值代替只使用RGB,過去只使用3個值導致[others](http://www.machwerx.com/2009/01/26/glcolorpointer-size-must-be-4/)出現問題 – theisenp