在OpenGL ES 2.0中绘制渐变背景

时间:2014-03-14 18:45:28

标签: ios graphics opengl-es opengl-es-2.0

我想用渐变而不是单一颜色制作场景的背景。是否有可能做到这一点?我在iOS上使用OpenGL ES 2.0。

1 个答案:

答案 0 :(得分:3)

好的,现在又作为答案。

您可以绘制一个填充整个屏幕的矩形并对其应用渐变。为此,请使用矩形顶点的纹理坐标来计算顶点着色器中的相应颜色:

// ...
attribute vec2 textureCoordinate;
varying highp vec4 colorGradient;
// other attributes, uniforms, etc...

void main() {
    // This defines the colors of the 4 corners of your rectangle.
    // The gradient is then interpolated by the GPU between the vertices.
    colorGradient = vec4(textureCoordinate, 0.0f, 1.0f); // adjust as needed

    // ... set gl_Position, etc.
}

现在您可以使用片段着色器中的颜色:

// ...
varying highp vec4 colorGradient;
// other uniforms, etc...

void main() {
    // do additional shading if needed

    // colorGradient is already interpolated between the vertices by the GPU
    gl_FragColor = colorGradient;
}

您也可以使用varying vec3并稍后添加Alpha频道,但使用vec4会更清晰。