版本3.5
#ifdef GL_ES
precision mediump float;
#endif
uniform sampler2D u_lightTexture;
uniform vec4 v_LightColor;
uniform vec2 v_animLight;
uniform vec4 u_color;
#ifdef GL_ES
varying mediump vec2 v_texCoord;
#else
varying vec2 v_texCoord;
#endif
void main(void)
{
vec4 lightcolor = texture2D(u_lightTexture, v_texCoord + v_animLight.xy) * v_LightColor;
vec4 result = texture2D(CC_Texture0, v_texCoord) * u_color;
if(result.a < 0.01)
discard;
result = texture2D(CC_Texture0, v_texCoord) * u_color + lightcolor;
//result.a = result.a * v_animLight.x;
gl_FragColor = result;
}
代码中是这样的
local shining_texture = display.loadImage(“caustics.png”)
shining_texture:setTexParameters(
gl.LINEAR_MIPMAP_LINEAR,
gl.LINEAR,
gl.REPEAT,
gl.REPEAT )
state:setUniformTexture(“u_lightTexture”,shining_texture)
state:setUniformVec4(“v_LightColor”,cc.vec4(1.0,1.0,1.0,1.0))
然后是应用到一个mesh上(修改了lua的函数把setGLProgramState导出了)
都发现结果相同(没效果)(如果第一行u_lightTexture换CC_Texture0则效果出现了。。)
代码里面UniformValue::apply也看到执行了bindTexture2DN了。。
求解。。