我认为这会是一个比较简单的答案。
但是我在谷歌上找不到答案。
这与OpenGLES着色器有关。我正在使用cocos2d-x引擎。
这是我的片段着色器代码。
precision lowp float;
varying vec2 v_texCoord;
uniform sampler2D u_texture;
uniform vec4 u_lightPosition;
void main()
{
vec4 col=texture2D(u_texture,v_texCoord);
mediump float lightDistance = distance(gl_FragCoord, u_lightPosition);
mediump float alpha = 100.0/lightDistance;
alpha = min(alpha, 1.0);
alpha = max(alpha, 0.0);
col.w = alpha;
//col.a = alpha;
gl_FragColor=col;
}
我只想让某些圆形区域显示为半透明。所以我改变了颜色的w值,因为我认为这是像素的Alpha值。但结果非常奇怪,我担心这不是Alpha值。
即使我将值设置为1.0进行测试,整个精灵也会变得明亮和白色。
顶点着色器很正常,没有特殊的内容。
请问有任何想法吗?
更新: 为了参考,我附上一些结果图像。
情况1)
col.w = alpha;
第2种情况)
col.w = 1.0
应用着色器之前的输入图像和正常纹理。
clamp(alpha, 0.0, 1.0)
。 - nwn