我想用渐变而不是单一颜色制作场景的背景。是否有可能做到这一点?我在iOS上使用OpenGL ES 2.0。
答案 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
会更清晰。