使用OpenGL es 2.x绘制三角形渐变的最简单方法是什么

时间:2012-01-21 17:55:45

标签: android opengl-es

我在使用OpenGL 1.x的Android手机上运行我的程序,并使用此代码生成三角形渐变:



    gl11.glEnableClientState(GL10.GL_COLOR_ARRAY);
    gl11.glBindBuffer(GL11.GL_ARRAY_BUFFER, colorPointerShadow);
    gl11.glColorPointer(4, GL10.GL_FLOAT, 0, 0);

然而,我使用OpenGL 2.0的新手机就像呃呃,不,你不喜欢,然后崩溃。那么如何在三角形上绘制基本渐变?可以在没有全部进入着色器业务的情况下完成吗?谢谢你的阅读!

1 个答案:

答案 0 :(得分:2)

OpenGL ES 2.0与1.1不向后兼容。你需要编写着色器,但不要害怕。您的顶点着色器可以非常简单,如下所示:

attribute vec4 Pos, Color; // vertex shader inputs
varying vec4 vColor;       // vertex shader output
uniform mat4 MVP;          // model-view-projection matrix
void main() {
    gl_Position = MVP * Pos;
    vColor = Color;
}

您的片段着色器可以更简单:

varying lowp vec4 vColor;   // vertex shader output
void main() {
    gl_FragColor = vColor;
}

如果为每个三角形角分配唯一的颜色,您将看到渐变。