OpenGL 帧缓冲区

文章引用OpenGL 帧缓冲区 - wen_dao_ - 博客园


帧缓冲区

几乎每个图形程序的重要目标之一都是在屏幕上绘制图形。屏幕是由一个矩形像素数组组成的,每个像素都可以在图像的某一个点上显示一个某种颜色的微小方块。在光栅化阶段(包括纹理和雾)之后,数据就不再是像素,而是片段。每个片段都具有与像素对应的坐标数据以及颜色值和深度值。

如果顺利通过了这些测试和操作,片段值便可以转换为像素。 如果顺利通过了这些测试和操作,片段值便可以转换为像素。为了绘制这些像素,我们需要知道它们的颜色(即存储在颜色缓冲区中的信息)。当每个像素的数据按照统一的方式存储时,存储所有像素的数据按照统一的方式存储时,存储所有像素的存储空间就叫做缓冲区。不同的缓冲区为每个像素存储的数据量可能不同。但是,在一个特定的缓冲区内,每个像素存储的数据是相同的。为每个像素存储了1位信息的缓冲区又称为位平面(bitplane)。

颜色缓冲区

颜色缓冲区,它用于保存屏幕上所显示的颜色信息。假设屏幕的宽度为1280个像素,高度为1024像素,并使用24位的完整颜色。换句话说,这个屏幕可以显示2的24次方中不同的颜色。由于24位相当于3个字节,因此这个颜色缓冲区必须为屏幕上1289*1024个像素的每一个都存储在3个字节的数据。在特定的硬件系统中,物理屏幕所显示的像素可能更多或更少。另外,每个像素可能更多或更少。另外,每个像素的数据量也可能更多或更少。但是,对于一个特定的颜色缓冲区而言,它为屏幕上每个像素所存储的数据量是相同的。

颜色缓冲区只是用了存储像素信息的许多缓冲区之一,还有很多其他缓冲区。例如,深度缓冲区存储了每个像素的深度信息。颜色缓冲区本身也可能包括几个子缓冲区。系统的帧缓冲区是由所有这些缓冲区组成的。除了颜色缓冲区之外,其他缓冲区都无法直接查看,它们用于实现诸如隐藏表面消除,场景抗锯齿、模版测试、绘制平滑的运动图像等功能。

颜色缓冲区通常用于绘图的缓冲区。它们包含了颜色索引或RGB颜色数据,还可能包含alpha数据。支持立体画面的OpenGL实现了提供了左右颜色缓冲区,分别包含了左右立体图像。如果OpenGL实现不支持立体图像,那就值使用了左缓冲区。类似地,双缓冲系统提供了前后缓冲区,而单缓冲系统只提供了前缓冲区。

深度缓冲区

深度缓冲区存储每个像素的深度值。深度通常是根据物体和观察点的距离来测量的,因此具有较大深度的像素有可能会被具有较小深度值的像素覆盖。但是,这只是一种通常的约定,我们完全可以更改深度缓冲区的行为。深度缓冲区有时又称为z缓冲区(x表示屏幕的水平方向,y表示屏幕的垂直方向,z表示从观察点垂直于屏幕的方向)。

模版缓冲区

模版缓冲区的用途之一就是把绘图限制在屏幕中的某个区域,就像使用纸板和喷漆实现精确的绘图一样。例如,例如,如果想绘制一幅在形状怪异的挡风玻璃上出现的图像,可以在模版缓冲区内存储一幅挡风玻璃形状的图像,然后在绘制整个场景。模版缓冲区可以防止哪些透过挡风玻璃无法看到的物体被绘制出来。因此,如果应用程序是一个模拟驾驶的程序,可以只绘制车内的仪表和其他物体1次,当汽车开动时,只有车窗外的场景需要更新。

积累缓冲区

与RGBA模式下的颜色缓冲区一样,积累缓冲区也用于存储RGBA颜色数据(在颜色索引模式下,使用积累缓冲区的结果是未定义的)。积累缓冲区通常用于把一些列的图像合成为一幅图像。通过这种方法,可以对图像进行超量采样,然后对样本求平均值,并且将结果写入到颜色缓冲区中,从而显示场景的抗锯齿处理。不能把数据直接写入到积累缓冲区,积累操作总是以矩形块为单位对数据进行操作,通常是把数据移入或一出颜色缓冲区。

清除缓冲区

在图形程序中,清除屏幕(以及所有缓冲区)是开销最大的操作之一。一个1280*1024的屏幕包含了上百万的像素。对于简单的图形应用程序,清除操作话费的时间可能比接下来进行的绘图操作的时间还要多。如果需要清除的不仅仅是颜色缓冲区,还需要清除深度和模版缓冲区,清除操作所花费的时间可能还要成倍地增加。 为了解决这个问题,有些计算机提供了能够同时清除多个缓冲区的硬件。OpenGL的清除命令能够充分的利用这类硬件的优势。首先,指定需要写入到每个将要清除的缓冲区的值,然后发布一条命令执行清除操作。在这个命令中,需要传递将要清除的缓冲区列表。如果硬件支持同时清除多个缓冲区,这些清除操作就会同时进行。否则,这些缓冲区就会按顺序逐个清除。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 201,681评论 5 474
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,710评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 148,623评论 0 334
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,202评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,232评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,368评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,795评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,461评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,647评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,476评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,525评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,226评论 3 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,785评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,857评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,090评论 1 258
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,647评论 2 348
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,215评论 2 341

推荐阅读更多精彩内容