将 2 个纹理绑定到一个或两个 FBO 更快吗?

发布于 2024-10-23 12:30:45 字数 166 浏览 2 评论 0原文

我想一个接一个地运行多个着色器(主要是图像处理),其中一个着色器的输出是以下着色器的输入。我想知道仅使用一个绑定到所有所需纹理的 FBO 是否会带来性能提升,或者为每个纹理创建一个 FBO 是否相同?

如果重要的话,目标平台是 iPhone,因此使用 OpenGL ES 2.0。

谢谢

I want to to run several shaders one after the other (mostly image processing), the output of one being the input of the following. I wonder if there's a performance gain to use only one FBO bound to all the needed textures, or if it's the same to create one FBO for each texture?

In case it matters, the aimed platform is the iPhone, therefore with OpenGL ES 2.0.

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

人间☆小暴躁 2024-10-30 12:30:45

我不熟悉 OpenGL ES,但在 PC 平台上通常最好只使用一个 FBO,而且我不明白为什么这在 ES 上应该有所不同(但是,我可能是错的)。但重要的是,为了 FBO 完整性,所有绑定的纹理都具有相同的大小(例如视口大小),否则它将无法工作。
通常,您最初将所有纹理附加到一个 FBO,然后在每一帧中只需更改每个通道中的渲染目标通道。这可以节省大量由 fbo 绑定引起的状态更改。
请注意,可以绑定的最大纹理数量受到 GL_MAX_COLOR_ATTACHMENTS_EXT 的限制。
您可能还会发现这很有帮助:http://www.songho.ca/opengl/gl_fbo.html< /a>

干杯,
莱因霍尔德

I am not familiar with OpenGL ES, but on PC platform it is normally better to use only one FBO, and i don't see why this should be different on ES (however, I might be wrong). It is important though that all textures bound have the same size (e.g. viewport size) for FBO completeness, otherwise it won't work.
Normally, you attach all textures to one FBO initially and then in each frame just change the rendertarget channel in each pass. This saves you a lot of state changes caused by fbo binding.
Note that the maximum number of textures that can be bound is limited by GL_MAX_COLOR_ATTACHMENTS_EXT.
You might also find this helpful: http://www.songho.ca/opengl/gl_fbo.html

Cheers,
Reinhold

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文