【发布时间】:2014-09-08 17:56:42
【问题描述】:
我正在尝试使用简单的着色器创建 alpha 径向渐变效果(一种照明)。 效果创建正确,但渐变不平滑。 精度设置为highp,所以我真的不知道在哪里看。
此着色器当前在 Android 上运行,使用 OpenGL ES 2.0。
这是渐变当前的样子:
这是我当前的着色器:
顶点:
precision highp float;
attribute vec4 vPosition;
attribute vec2 vStaticInterpolation;
varying vec2 interpolator;
void main() {
interpolator = vStaticInterpolation;
gl_Position = vPosition;
}
片段:
precision highp float;
uniform float alphaFactor;
varying vec2 interpolator;
float MAX_ALPHA = 0.75;
void main() {
float x = distance(interpolator, vec2(0.0, 0.0));
float alpha = MAX_ALPHA - MAX_ALPHA * x;
alpha = max(alpha, 0.0);
gl_FragColor = vec4(0.925, 0.921, 0.843, alpha);
gl_FragColor.a *= alphaFactor;
}
着色器在 vStaticInterpolation 中接收用于插值的常量属性(从 -1.0 到 1.0)。 实际颜色当前在着色器中硬编码。
【问题讨论】:
-
只是好奇,你的帧缓冲是什么格式的? RGBA8 之类的?
-
表面是RGB565,这就是问题所在——下面的答案是正确的。
标签: android opengl-es-2.0 shader fragment-shader vertex-shader