Glsl iResolution在着色器中的含义是什么?

Glsl iResolution在着色器中的含义是什么?,glsl,fragment-shader,Glsl,Fragment Shader,我是GLSL的新手。我发现每个演示中都有一个变量iResolution。这是什么意思 如果我想把这个变量传递给着色器,我需要做什么 如果展开代码上方的“着色器输入”部分,可以看到定义: 描述几乎说明了一切。它是窗口/视口的大小(以像素为单位)。在本例中,gl_FragCoord(片段的像素位置)除以此大小,以获得片段在视口中的相对位置 您可以将其设置为与任何其他统一变量一样: GLint loc = glGetUniformLocation(program, "iResolution"); g

我是GLSL的新手。我发现每个演示中都有一个变量
iResolution
。这是什么意思


如果我想把这个变量传递给着色器,我需要做什么

如果展开代码上方的“着色器输入”部分,可以看到定义:

描述几乎说明了一切。它是窗口/视口的大小(以像素为单位)。在本例中,
gl_FragCoord
(片段的像素位置)除以此大小,以获得片段在视口中的相对位置

您可以将其设置为与任何其他统一变量一样:

GLint loc = glGetUniformLocation(program, "iResolution");
glUniform2f(loc, width, height);

其中
宽度
高度
是窗口/视口的大小。奇怪的是,它被定义为
vec3
,因为只有
x
y
值是有用的。

非常感谢!这正是让我困惑的地方。不太确定,但看起来像是我从Shadertoy移植到pixijs的着色器期望iResolution是[0;1]对于任何通过谷歌找到这个答案并试图找出它为什么是vec3的人来说:第三个组件是,如果你的显示器有正方形像素,它是1.0。