iResolution 在着色器中意味着什么?

What does iResolution mean in a shader?

我是 GLSL 的新手。我发现每个演示 https://www.shadertoy.com/new 中都有一个变量 iResolution。这是什么意思?

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

展开代码上方的"Shader Inputs"部分可以看到定义:

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

您可以像设置任何其他统一变量一样设置它:

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

其中 widthheight 是您的 window/viewport 的大小。奇怪的是,这被定义为 vec3,因为只有 xy 值有用。