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

How to use a color buffer in OpenGL ES 2

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

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);

正在尝试绘制颜色。

该形状显示了我尝试绘制的颜色,但它像这样在整个形状上淡出颜色:

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

感谢Rabbid76帮我找错

颜色数组中总共需要 4 个元素,而不是 16 个元素,每个顶点都有一个 RGBA 值。 (数组的 4 个元素用于生成一个 RGBA 值。)