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