GLSL可以同时输出两个/多个纹理吗?

我可以得到一个着色器来读取两个纹理,但是对于输出来说,似乎只有gl_FragColor。 有没有办法从一个着色器渲染两个不同的纹理? 我正在使用Processing和GLGraphics库btw。


是的,你可以写gl_FragData,这是一个输出数组(大小取决于你的实现)。 或与GL的新版本,既gl_FragColor和gl_FragData已过时,您声明自己out变量片段着色器写入。 声明多个这样out瓦尔用于多个输出缓冲器。


我不知道这是否正是你想要做的,但是利用帧缓冲区对象(FBOs),你可以同时绘制多个颜色缓冲区。

然而,在着色器中,它仍然会像您正在编写一个片段一样。 也就是说,着色器不知道FBO有多少个附件。


是。 我们可以。 但请注意,GLSL 4.0不再支持gl_FragData。 指定位置为:

glBindFragDataLocation(programHandle, 0, "FragColor");

.....

我希望你能阅读glsl 4.0着色语言食谱的书。

链接地址: http://www.djcxy.com/p/48859.html

上一篇: Can GLSL output to two/multiple textures at the same time?

下一篇: Best Design Pattern for the Following Scenario