我可以让着色器读取两个纹理,但对于输出,似乎只有 gl_FragColor。有没有办法从一个着色器渲染到两个不同的纹理?我正在使用处理和 GLGraphics 库顺便说一句。
问问题
4553 次
3 回答
5
是的,您可以写入 gl_FragData,它是一个输出数组(大小取决于您的实现)。或者对于较新版本的 GL,gl_FragColor 和 gl_FragData 都已弃用,您声明自己的out
变量供片段着色器写入。out
为多个输出缓冲区声明多个此类变量。
于 2010-11-13T04:46:58.383 回答
1
是的。我们可以。但请注意,GLSL 4.0 不再支持 gl_FragData。指定位置为:
glBindFragDataLocation(programHandle, 0, "FragColor");
......
我希望你能阅读 glsl 4.0 着色语言食谱这本书。
于 2013-08-21T07:10:17.663 回答
0
我不知道这是否正是您想要做的,但使用帧缓冲区对象 (FBO),您可以同时绘制到多个颜色缓冲区。
但是,在着色器中,它仍然就像您正在编写一个片段一样。也就是说,着色器不知道 FBO 有多少附件。
于 2010-11-13T04:42:55.857 回答