因此,在我的顶点着色器中,我正在执行类似于以下的操作:
void main() {
gl_Position = vec4((u_matrix * vec3(a_position, 1)).xy, 0, 1);
}
现在我在我的片段着色器中,我想要访问该位置,也就是说,我正在寻找一个变量来获取当前像素的位置,但是以裁剪空间坐标表示。这是因为我希望将该像素与纹理中相同位置的像素混合。
看起来gl_FragCoord
与我想要的类似,但它以窗口空间表示。我认为我可以这样转换:
vec2 what_i_want = vec2(gl_FragCoord.x / 1920., gl_FragCoord.y / 1080.);
但是我需要知道我的画布大小。我可以将画布大小作为一个统一变量传递,但这似乎有点过度了。难道没有办法在片段着色器中直接访问这个值吗?