你能在同一个程序中有多个像素(片段)着色器吗?

Har*_*rry 20 opengl shader pixel glsl fragment-shader

我想有两个像素着色器; 第一个做一件事,然后下一个做别的事情.这是可能的,还是我必须将所有内容打包到一个着色器中?

Bah*_*bar 20

您可以这样做,例如,通过从主入口点到各种着色器对象中实现的函数进行函数调用.

main() {
    callToShaderObject1()
    callToShaderObject2()
}
Run Code Online (Sandbox Code Playgroud)

每个callToShaderObject函数都可以存在于不同的着色器对象中,但是在使用之前,必须在同一程序中附加和链接所有对象.

  • 更新:在研究改装的MineCraft着色器时,我现在已经看到了这个.在这种情况下,它非常有用,因为每个着色器都有许多可以打开和关闭的选项,各种效果与其他各种效果一起运行.在这样的场景中,并且涉及多个作者,将功能分成单独的文件变得更加有用. (2认同)