我是glsl的新手。我发现每个演示https://www.shadertoy.com/new都有一个变量iResolution,这是什么意思?如果我想将此变量传递给着色器,我还需要做什么?
答案 0 :(得分:8)
如果展开"着色器输入&#34>,您可以看到定义。代码上方的部分:
描述几乎说明了一切。它是窗口/视口的大小(以像素为单位)。在示例中,gl_FragCoord
(片段的像素位置)除以此大小,以获得视口中片段的相对位置。
你可以像任何其他统一变量一样设置它:
GLint loc = glGetUniformLocation(program, "iResolution");
glUniform2f(loc, width, height);
其中width
和height
是窗口/视口的大小。奇怪的是,这被定义为vec3
,因为只有x
和y
值才有用。