如何在OpenGL ES 2中使用颜色缓冲区

时间:2018-02-10 05:30:02

标签: colors opengl-es opengl-es-2.0

我对如何使用颜色缓冲区绘制颜色感到困惑。我发现了一个类似的问题here,并使我的着色器与帖子接受的答案中显示的相同。然后我使用了代码:

mColorHandle = GLES20.glGetAttribLocation(Shader, "vColor");
GLES20.glEnableVertexAttribArray(mColorHandle);

ByteBuffer cb = ByteBuffer.allocateDirect(color.length * BYTES_PER_FLOAT);
cb.order(ByteOrder.nativeOrder());
colorBuffer = cb.asFloatBuffer();
colorBuffer.put(color);
colorBuffer.position(0);

GLES20.glBindBuffer(GLES20.GL_ARRAY_BUFFER, cbo);
GLES20.glBufferSubData(GLES20.GL_ARRAY_BUFFER, 0, colorBuffer.capacity(), colorBuffer);
GLES20.glVertexAttribPointer(mColorHandle, 4,
                GLES20.GL_FLOAT, false,
                0, 0);

试图画出颜色。

形状显示了我试图绘制的颜色,但它在这样的形状上淡出了颜色:

enter image description here

如果有人能告诉我出了什么问题以及如何让形状变成相同的颜色,我将不胜感激。

1 个答案:

答案 0 :(得分:0)

感谢Rabbid76帮助我发现错误。

代替颜色数组中的4个元素,需要有16个,每个顶点的RGBA值。 (数组的4个元素用于生成一个RGBA值。)