Jac*_*kie 7 glsl fragment-shader
我是glsl的新手.我发现每个演示https://www.shadertoy.com/new都有一个变量iResolution ,这是什么意思?如果我想将此变量传递给着色器,我还需要做什么?
如果展开代码上方的"着色器输入"部分,则可以看到该定义:

描述几乎说明了一切.它是窗口/视口的大小(以像素为单位).在该示例中gl_FragCoord,即片段的像素位置,除以该大小以获得片段在视口内的相对位置.
你可以像任何其他统一变量一样设置它:
GLint loc = glGetUniformLocation(program, "iResolution");
glUniform2f(loc, width, height);
Run Code Online (Sandbox Code Playgroud)
其中,width和height是你的窗口/视口的大小.奇怪的是,这被定义为a vec3,因为只有x和y值是有用的.