【问题标题】:How to use a color buffer in OpenGL ES 2如何在 OpenGL ES 2 中使用颜色缓冲区
【发布时间】:2018-02-10 05:30:01
【问题描述】:

我对如何使用颜色缓冲区绘制颜色有点困惑。我发现了一个类似的问题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);

尝试绘制颜色。

该形状显示了我尝试绘制的颜色,但它使整个形状的颜色淡出,如下所示:

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

【问题讨论】:

  • 你能展示一下你得到的东西吗?

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


【解决方案1】:

感谢 Rabbid76 帮我找出错误。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多