对纹理图左下角高30%,宽80%的区域变灰处理,为了得到标注坐标令vec2 uv = ( 2.0v_texCoord.xy -1.0 ) vec2(1.0, 1.0);,结果得到的不是我想要的结果,请问这里是需要将纹理坐标转化为标准设备坐标,然后对标准设备坐标进行处理吗?
标准化设备坐标(Normalized Device Coordinates, NDC)


片段着色器:
`vec2 uv = ( 2.0v_texCoord.xy -1.0 ) vec2(1.0, 1.0);
if( uv.y < v_maxY && uv.x < v_maxX){
gl_FragColor.xyz = vec3(0.2126*c.r + 0.7152*c.g + 0.0722*c.b);
gl_FragColor.w = c.w;
}else{
gl_FragColor = src_color;
}`
使用shader的部分:
var glProgram_state = cc.GLProgramState.getOrCreateWithGLProgram(this._program); glProgram_state.setUniformFloat("v_maxY", 0.3); glProgram_state.setUniformFloat("v_maxX", 0.9);
shaderTest.zip (275.6 KB)