Javascript 如何在WebGL中找到剪辑空间坐标中的当前输出像素位置?

Javascript 如何在WebGL中找到剪辑空间坐标中的当前输出像素位置?,javascript,glsl,shader,webgl,Javascript,Glsl,Shader,Webgl,所以,在我的顶点着色器中,我做了如下操作: void main() { gl_Position = vec4((u_matrix * vec3(a_position, 1)).xy, 0, 1); } 但现在我在片段着色器中,我想访问该位置。也就是说,我正在寻找一个变量来访问正在绘制的像素的当前位置,但是在剪辑空间坐标中。这是因为我希望将该像素与纹理中相同位置的像素混合 它看起来像是我想要的东西,但它在窗口空间。我想我可以这样转换它: vec2 what_i_want = vec2(gl_

所以,在我的顶点着色器中,我做了如下操作:

void main() {
  gl_Position = vec4((u_matrix * vec3(a_position, 1)).xy, 0, 1);
}
但现在我在片段着色器中,我想访问该位置。也就是说,我正在寻找一个变量来访问正在绘制的像素的当前位置,但是在剪辑空间坐标中。这是因为我希望将该像素与纹理中相同位置的像素混合

它看起来像是我想要的东西,但它在窗口空间。我想我可以这样转换它:

vec2 what_i_want = vec2(gl_FragCoord.x / 1920., gl_FragCoord.y / 1080.);

但我需要知道我的画布大小。我可以把帆布尺寸作为制服穿进去,但这似乎有点过分。是否无法在片段着色器中以某种方式访问此值?

您的方法是正确的。必须在统一变量中设置视口(画布)的大小。没有其他选择。这是每个人在WebGL和OpenGL中所做的

均匀vec2u\u分辨率;
void main()
{
vec2 uv=gl_FragCoord.xy/u_分辨率;
// [...]
}