Opengl es vec2除法动作怪异(自动纵横比校正?)

Opengl es vec2除法动作怪异(自动纵横比校正?),opengl-es,glsl,webgl,Opengl Es,Glsl,Webgl,OpenGL和WebGL的vec2除法遇到了一些问题——特别是它似乎自动处理纵横比。我的理解是: someVec2 / anotherVec2 = vec2( someVec2.x / anotherVec2.x, someVec2.y / anotherVec2.y) i、 例如,它是组件式的 但是,此代码(其中uResolution是从代码中传递的ivec2,为当前解决方案): 产生: 鉴于 vec2 fragCoordUv = vec2( gl_FragCoord.x /

OpenGL和WebGL的vec2除法遇到了一些问题——特别是它似乎自动处理纵横比。我的理解是:

someVec2 / anotherVec2 = vec2(
  someVec2.x / anotherVec2.x,
  someVec2.y / anotherVec2.y)
i、 例如,它是组件式的

但是,此代码(其中uResolution是从代码中传递的ivec2,为当前解决方案):

产生:

鉴于

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值似乎并没有一路放大。如果使用纹理,问题会变得更加明显。i、 e.直接分组:

与手动部件部门相比:

它看起来像是在自动执行纵横比校正。这是一个功能吗?我似乎在任何地方都找不到关于它的任何信息。一切都表明普通的二进制运算符(+、-、/、*,等等)只是基于组件工作。请帮忙

试试看

vec2 uv = gl_FragCoord.xy / vec2(uResolution);

成功了!非常感谢。你知道当你做float(someiVec)时实际发生了什么吗?我怀疑float(uResolution)=float(uResolution.x),然后当你把一个vec2除以一个单独的float时,每个元素都独立地除以这个float。
float
是一种标量类型,所以
float(someiVec)
首先将其参数转换为标量(除去第一个组件之外的所有变量),然后将该标量转换为
float
类型。。。
vec2 uv = gl_FragCoord.xy / vec2(uResolution);