有谁能帮忙看看为啥这个shader里面的texture会没有效果

版本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了。。

求解。。

问题找到
shining_texture:setTexParameters(
gl.LINEAR,
gl.LINEAR,
gl.REPEAT,
gl.REPEAT )
改成这样就行,但是但是
官网上捕鱼达人里面的uv动画不是用这个模式啊- -,求解
http://cn.cocos2d-x.org/tutorial/show?id=1283

setTexParameters 第一个参数为纹理放大时的过滤模式,只能设置为下面两个值:
/* TextureMagFilter */
#define GL_NEAREST 0x2600
#define GL_LINEAR 0x2601

第二个参数为纹理缩小时的过滤模式,可以设置如下几个值:
#define GL_NEAREST_MIPMAP_NEAREST 0x2700
#define GL_LINEAR_MIPMAP_NEAREST 0x2701
#define GL_NEAREST_MIPMAP_LINEAR 0x2702
#define GL_LINEAR_MIPMAP_LINEAR 0x2703
这些值定义在gl.h头文件中,可以去看一下。

如果这几个值写反了,会造成异常甚至崩溃(往往在release模式下才能暴露出来),之前教程里面可能是笔误,你的做法是正确的。