在 OpenGL 中显示帧缓冲区
Posted
技术标签:
【中文标题】在 OpenGL 中显示帧缓冲区【英文标题】:Displaying a framebuffer in OpenGL 【发布时间】:2015-07-05 07:07:17 【问题描述】:我最近学习了一点 OpenGL,我刚接触到帧缓冲区。
所以根据我目前的理解,如果您有自己的帧缓冲区,并且想要将颜色缓冲区绘制到窗口上,您需要先绘制一个四边形,然后将纹理包裹在上面?是对的吗?还是有类似glDrawArrays(), glDrawElements()
的帧缓冲版本?
这似乎有点......奇怪(笨重?Hackish?)对我来说,您必须将纹理包裹在四边形上才能绘制帧缓冲区。这不必使用默认帧缓冲区来完成。还是在你背后做的?
【问题讨论】:
This 【参考方案1】:嗯。帧缓冲区对象的主要目的是将场景渲染到缓冲区,这些缓冲区不会显示,而是在某处重用,作为其他操作(阴影贴图、高动态范围处理、反射、门户)的数据源...)。
如果你想显示它,为什么首先使用自定义帧缓冲区?
现在,作为@CoffeeandCode cmets,确实有一个glBlitFramebuffer 调用允许将像素从一个帧缓冲区传输到另一个帧缓冲区。但在你继续使用那个调用之前,问问自己为什么需要这个额外的步骤。这不是免费的操作...
【讨论】:
这很有意义。我的印象是这可能是双/三缓冲的完成方式(是的,我现在意识到驱动程序对此有更优化的实现)。难怪我在画它们时找不到任何东西 等等,那么后期处理是如何完成的呢?我看过的所有网站都建议进行多次渲染通道,然后将所有通道作为纹理放到四边形 除了最后一个对象外,所有的后期处理都是对帧缓冲区对象进行的(尽管如果可能的话,通常值得尝试在更少的通道中组合它们)。是的,它们是用四边形或超大三角形完成的。以上是关于在 OpenGL 中显示帧缓冲区的主要内容,如果未能解决你的问题,请参考以下文章