https://www.shadertoy.com/view/MssyRN文章中对纹理坐标计算过程的说明,最后uv的范围为-1到1,应该是不准确的,应该是x范围为-x/y到x/y,y的范围为-1到1。这样造成uv范围不在-1到1范围,超出范围的是否就不绘制了??
float time = iTime;
vec2 pos, size;
vec2 npos = fragCoord.xy / iResolution.xy; // 0.0 .. 1.0
// get uv position with origin at window center
float aspect = iResolution.x / iResolution.y; // aspect ratio x/y
vec2 ratio = vec2(aspect, 1.0); // aspect ratio (x/y,1)
uv = (2.0 * npos - 1.0) * ratio; // -1.0 .. 1.0
正常opengl使用的纹理坐标范围是0到1,这里设置的uv不是opengl实际使用的uv,opengl还会对这里的uv进行处理,最终会将-x/y到x/y变换到0到1。
如果这里将uv设置为-1到1或其他范围,通过opengl变换后就不在0到1了,会造成显示异常。