c++ - gl_FragCoord 的范围是多少

标签 c++ opengl glsl shader

gl_FragCoord.xy 的范围是多少?我知道 gl_FragCoord 是屏幕坐标,但实际范围是多少? ( 0, width - 1 ) 还是 ( 1, width )?当我做一些基于 fragcoord 的计算时,glsl 编译器会生成什么样的错误(如果有的话)说我做了类似 gl_FragCoord.x - 5 的事情?

ps:我不需要归一化。

最佳答案

我通过使用以下着色器代码和 glReadPixels(0, 0, 1024, 1024, GL_RED, GL_FLOAT, xxx)<对 gl_FragCoord.xy 的实际范围进行了测试 从我的帧缓冲区对象获取着色器的输出,并且 FBO 附加了内部格式为 GL_R32F 的纹理。

out highp vec4 Output;

void main()
{
    Output = vec4(gl_FragCoord.xy, 0.0, 1.0);
}

实际结果是:gl_FragCoord.xy 在 [0.5, 1023.5] 范围内,而不是 [0.0, 1023.0]。

关于c++ - gl_FragCoord 的范围是多少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16825412/

相关文章:

c++ - 从数组中获取第二个字符串

c++ - 动画内的动画立方体

javascript - 在 Phong 模型中使光线独立于 View

opengl - 使用 OpenGL 进行高效的 GPU 随机内存访问

java - 如何将 3D 树叶的颜色与其下方的纹理融合?

c++ - 为 C++ 程序创建 makefile 以使用 g++ 运行

c++ - operator<<(ostream& os, ...) 用于模板类

c++ - 如何以编程方式移动 Windows 任务栏?

c++ - 纹素中心的采样没有给出正确的结果,OpenGL,C++

c++ - 在 Linux-64 上编译 NeHe(或其他面向 32 位的)示例