gpt4 book ai didi

ios - OpenGL - 将多个程序的输出传递到新纹理

转载 作者:行者123 更新时间:2023-11-29 03:55:26 25 4
gpt4 key购买 nike

如何将绘制到帧缓冲区的数据传递给新的 openGL 程序或纹理?

我现在正在做的事情的用例:

  • 从 UIImage 创建纹理
  • 通过将其绑定(bind)为 GL_TEXTURE_2D 并进行处理,将其作为 uniform Sampler2D 传递
  • 切换程序并渲染例如图像顶部的小插图
  • 切换程序并在其上渲染各种图形

一切正常。问题是,从这里开始,我想使用额外的 OpenGL 着色器来处理上述所有内容。例如亮度/对比度滤镜。不仅适用于图像,还适用于所有添加的图形和插图。添加后,我想将其传递给其他可选程序等。

但是这是怎么做到的呢?我知道我可以将其作为纹理缓存读回或使用 glReadPixels() 并创建一个新的纹理来传递,但肯定有更好、更有效的方法吗?一个完全使用 GPU 内存的?

最佳答案

您想要做的是将某些内容直接渲染到纹理中,而不是显示帧缓冲区中。这正是帧缓冲区对象 (FBO) 的用途。 FBO 代表一个完整的帧缓冲区及其所有子缓冲区(如多个颜色缓冲区、深度缓冲区、模板缓冲区或其中的子集),但具有将自定义数据容器(如渲染缓冲区或纹理)作为单独附加的功能缓冲区,从而直接渲染到您控制的某些 GPU 内存区域中。有关这些的教程,请参阅 herehere获取一些更“官方”和完整的信息(尽管后者也可能讨论 ES 中不存在的现代桌面 GL 版本的功能),或 herehere有关更多 ES 相关信息(不过,这与桌面 GL 应该没有太大区别)

关于ios - OpenGL - 将多个程序的输出传递到新纹理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16561897/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com