片段着色器:输出变量

Luc*_*uca 10 opengl shader glsl

阅读GLSL 1.40规范:

片段输出只能是浮点,浮点矢量,有符号或无符号整数或整数向量,或任何这些的数组.无法输出矩阵和结构.片段输出在以下示例中声明:

out vec4 FragmentColor; out uint Luminosity;

片段颜色定义为写gl_FragColor ...是不是?有人可以清楚我对这些产出的看法吗?我可以只编写示例中的'FragmentColor'来确定片段颜色吗?我可以回读一下(比如'Luminosity')吗?

Deo*_*bit 17

GLSL版本120之后不推荐使用全局输出变量gl_FragColor.现在您必须自己给它一个名称和类型,如您的示例所示.关于几个输出,此链接为您提供有关映射的信息:http://www.opengl.org/wiki/GLSL_Objects#Program_linking

(我在以下网址找到了链接:http://www.opengl.org/discussion_boards/ubbthreads.php?subb = showflat&Number = 270999)

希望这可以帮助!:d

哎呀!我看到kvark提供了相关信息.无论如何,也许你从我的文本中得到了一些东西.


kva*_*ark 4

您的示例有 2 个输出。它们在 GLSL 程序链接后具有相应的 FBO 插槽关联。您可以使用重定向它们glBindFragDataLocation

一旦激活着色器并绑定 FBO,一切都取决于绘制蒙版,由 设置glDrawBuffers。例如,如果您通过GL_COLOR_ATTACHMENT0GL_COLOR_ATTACHMENT2那里,则意味着输出索引 0 将转到附件 0,输出索引 1 将转到颜色附件 2。