使用带有WebGL的OpenGL ES与vec2 divison遇到一些问题 - 特别是它似乎会自动处理宽高比。我的理解是:
someVec2 / anotherVec2 = vec2(
someVec2.x / anotherVec2.x,
someVec2.y / anotherVec2.y)
即,它是组件式的。
然而,这段代码(其中uResolution是从当前分辨率的代码传递的ivec2):
vec2 uv = gl_FragCoord.xy / float(uResolution);
gl_FragColor = vec4(uv.x, uv.y, 0.0, 1.0);
产生
,而
vec2 fragCoordUv = vec2(
gl_FragCoord.x / float(uResolution.x),
gl_FragCoord.y / float(uResolution.y)
);
gl_FragColor = vec4(uv.x, uv.y, 0.0, 1.0);
产生
具体来说,Y值似乎并没有一直向上扩展。如果使用纹理,问题就会变得更加明显。即直分:
VS。手动组件部门:
它看起来像是自动执行宽高比校正。这是一个功能吗?我似乎无法在任何地方找到任何信息。一切都说正常的二元运算符(+, - ,/,*等)只是基于组件。请帮忙!
答案 0 :(得分:1)
尝试
vec2 uv = gl_FragCoord.xy / vec2(uResolution);