我对如何使用颜色缓冲区绘制颜色感到困惑。我发现了一个类似的问题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);
试图画出颜色。
形状显示了我试图绘制的颜色,但它在这样的形状上淡出了颜色:
如果有人能告诉我出了什么问题以及如何让形状变成相同的颜色,我将不胜感激。
答案 0 :(得分:0)
感谢Rabbid76帮助我发现错误。
代替颜色数组中的4个元素,需要有16个,每个顶点的RGBA值。 (数组的4个元素用于生成一个RGBA值。)