首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在GLSL中输出和访问不同的FBO?

如何在GLSL中输出和访问不同的FBO?
EN

Stack Overflow用户
提问于 2011-11-17 05:04:24
回答 1查看 407关注 0票数 0

所以我在GLSLES2.0和openGL上工作,我有一个关于片段着色器的问题。通过我的顶点和碎片着色器,我计算并得到混合图像。然而,我想以不同的方式输出。例如,在我的片段着色器上,我有

代码语言:javascript
复制
vec4 image1 = texture2DProj(tex1,projCoord);
vec4 image2 = vec4(1.0,0.0,0.0,1.0); //red

我想将我的输出(gl_FragColor)显示为image2,红色。但我希望找到一种方法,也可以将image1传递给我的openGL ES2.0代码。有没有办法做到这一点?

我知道在常规的openGL中(不是ES),你可以做一些像gl_FragDatan和帧缓冲附件之类的事情。在openGL ES2.0中,我只能做gl_FragData,1会超出索引。通常,在我这种情况下,gl_FragColor会将我所有数据都存储到帧缓冲区中。所以在这种情况下,如果我这样做了

代码语言:javascript
复制
gl_FragColor = image2;

红色图像将被存储在帧缓冲器中。我只想显示image2,但我只想访问Image1的帧缓冲区。有没有办法做到这一点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-11-17 05:32:39

但是我想找到一种方法,也可以把image1传递给我的openGL ES2.0代码。

你的问题很令人困惑。你不需要在任何地方“传递”image1;它就在你的着色器中;那是你计算它的地方。

如果要从一个着色器执行中存储它,然后在另一个着色器中读回它,则需要具有多个渲染目标,或者需要拆分着色器并从不同的着色器渲染到单独的渲染目标。因为你在OpenGL的世界里,你通常没有太多的MRT的自由。

因此,您需要将数据生成着色器拆分,以便其中一个生成image1,另一个生成image2。使用第一个着色器渲染到一个渲染目标,使用另一个着色器渲染到第二个。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8158652

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档