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