Android OpenGL ES:顶点/颜色缓冲区/指针

Android OpenGL ES:顶点/颜色缓冲区/指针,android,colors,buffer,opengl-es-2.0,Android,Colors,Buffer,Opengl Es 2.0,我从一个包含3D位置和RGB值的文件中读取了大量的点。我正在努力通过Java+Android+OpenGL(ES)呈现这些 我创建顶点缓冲区和颜色缓冲区: private FloatBuffer vertexBuffer, colorBuffer; 将我的顶点固定到缓冲区: ByteBuffer vbb = ByteBuffer.allocateDirect(lasVertices.length * 4); vbb.order(ByteOrder.nativeOrder()); vertexB

我从一个包含3D位置和RGB值的文件中读取了大量的点。我正在努力通过Java+Android+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)中:

它确实在屏幕上绘制了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);

…但没有得到任何结果。

尝试启用颜色数组和顶点数组,看看是否有效

gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
gl.glEnableClientState(GL10.GL_COLOR_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);

嗯,你说这些点都出现了?它们的颜色都一样吗?如果是,什么颜色?我做了一点挖掘,即使它不能解决您的整个问题,您也必须根据。您还可以尝试为颜色使用RGBA值,而不仅仅是RGB。在过去,仅使用3个值会导致的问题。谢谢。我确实得到了颜色(这不是我想要的,但它是颜色)。
gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
gl.glEnableClientState(GL10.GL_COLOR_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);