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

Android 使用OpenGL es 2.x绘制三角形渐变的最简单方法是什么,android,opengl-es,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,就像,嗯,不,你不

我在使用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,就像,嗯,不,你不在,然后崩溃。那么如何在三角形上绘制基本梯度呢?这能在不涉及着色器业务的情况下完成吗?谢谢你的阅读

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

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

是的,您将需要一个着色器。网上有大量的资源可以学习如何使用它们,而且渲染简单的三角形渐变只需要很少几行着色器代码。但是,这给我们的创作留下了很大的空间,我只能建议大家熟悉着色器,至少在基本层面上是这样。谢谢。缺少像这样的简单代码使得OpenGLES2.0的学习曲线更加陡峭。