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

时间:2015-01-11 14:46:37

标签: glsl fragment-shader

我是glsl的新手。我发现每个演示https://www.shadertoy.com/new都有一个变量iResolution,这是什么意思?如果我想将此变量传递给着色器,我还需要做什么?

1 个答案:

答案 0 :(得分:8)

如果展开"着色器输入&#34>,您可以看到定义。代码上方的部分:

enter image description here

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

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

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

其中widthheight是窗口/视口的大小。奇怪的是,这被定义为vec3,因为只有xy值才有用。