打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
3.OpenGL综合知识---FrameBuffer

3. OpenGL综合知识---Frame Buffer收藏

GPU的绘制结果并不一定直接写入on screen buffer中。On screen buffer中的数据是被用以显示输出的颜色信息,所以,on screen buffer属于color buffer。在OpenGL中定义了多个color buffer,比如front bufferback bufferleft buffer等等,其中front buffer就是on screen buffer

如果将GPU的绘制结果直接写入front buffer中,可能会出现闪烁现象。

可以将GPU的绘制结果先写入back buffer中,然后再用某种机制显示出来,比如在合适的时机将数据拷贝到front buffer中。这样,就可以消除闪烁现象。

 

GPU绘制结果除了颜色信息外,还可能包括depthstencil信息,假如存在的话,它们会被分别输出到depth buffersetncil buffer中。

 

所有的color bufferdepth bufferstencil bufferaccum buffer组成为Frame buffer,如下图所示。

 

 

 

实际上,存在两种类型的Frame Buffer,一种类型就是如前所述,和on screen buffer相关联,最终要显示出来的;另一种类型则和on screen buffer无关,一般是作为中间结果暂存,不需要显示,在frame buffer object技术中被引入。一般所说的frame buffer都是以显示为目的的。

以后,我们将不再使用on screen buffer这个说法,而用frame buffer这个术语。

 

 

深入到驱动开发层次,有些显卡为了效率考虑,depth bufferstencil buffer在物理上可能是交叉在一起的。

如果是一个全屏程序,也就是说color buffer和屏幕分辨率是一致的,可以将back buffer中的数据拷贝到front buffer中进行显示,也可以直接将back buffer的属性设置为on screen buffer,这样减少拷贝过程可以大幅提高性能。

如果不是全屏程序,front buffer其实只是on screen buffer的一部分。

为了某些设计上的考虑,front buffer可能和on screen buffer在物理上是分开的,当然,驱动程序会对外屏蔽这个特性。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
OpenGL 的渲染流水线
Cocos2d: Stencil buffer is not enabled.
frame buffer object (fbo)整理
如何在cocos2d-x实现高效的mask
在xcode中使用openGL一:程序框架搭建
opengl渲染管线 不能再详细了
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服