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

时间:2010-02-26 19:29:48

标签: opengl glsl shader pixel fragment-shader

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

2 个答案:

答案 0 :(得分:20)

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

main() {
    callToShaderObject1()
    callToShaderObject2()
}

每个callToShaderObject函数都可以存在于不同的着色器对象中,但所有对象必须在相同的程序中附加和链接才能使用。

答案 1 :(得分:4)

它们无法同时运行,但您可以自由地为不同的几何体使用不同的着色器,或使用不同的着色器在多个通道中渲染。