博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[OpenGL学习] 缓冲区
阅读量:5230 次
发布时间:2019-06-14

本文共 896 字,大约阅读时间需要 2 分钟。

缓冲区: 

1 颜色缓冲区(COLOR_BUFFER):

颜色缓冲区就是帧缓冲区(FRAME_BUFFER),你需要渲染的场景最终每一个像素都要写入该缓冲区,然后由它在渲染到屏幕上显示; 

双缓存的情况下,帧缓冲区包括前缓冲(GL_FRONT)和后缓冲(GL_BACK)。

例子1:读入一张图像要作为纹理,一开始读入的时候是要放在后缓冲区,要显示的时候,就放到前缓冲区,glSwapBuffer()是用来实现由后缓冲到前缓冲。

例子2:我们现在后缓冲区将图形的每一部分绘制完全,然后用glSwapBuffer()将这个图像转到前缓冲区里显示,如果直接就在前缓冲区,那我们一开始看到的只是图像的一部分,我们会看到绘制过程,到其完全绘制好。

 

2 深度缓冲区(DEPTH_BUFFER):

深度缓冲区与帧缓冲区对应,用于记录上面每个像素的深度值,通过深度缓冲区,我们可以进行深度测试,从而确定像素的遮挡关系,保证渲染正确;

PS:现实世界里的物体投影到平面,存在遮挡关系,要在荧幕显示的时候要进行深度测试,确定显示哪个物体。 

3 模版缓冲(STENCIL_BUFFER):

模版缓冲与深度缓冲大小相同,通过设置模版缓冲每个像素的值,我们可以指定在渲染的时候只渲染某些像素,从而可以达到一些特殊的效果.

(以上转自http://www.cnblogs.com/tekkaman/archive/2011/11/16/2250938.html,并添加了部分内容) 

4 累积缓冲区(ACCUM_BUFFER):

主要作用是允许颜色缓冲区的内容不直接显示到窗口上

作用过程:

(1)内容从颜色缓冲区 复制 到累积缓冲区;

(2)根据不同的方法,将颜色缓冲区的内容与在累积缓冲区的内容进行反复混合;

(3)将最终结果从累积缓冲区 复制 回颜色缓冲区;

(4)由颜色缓冲区直接显示到窗口上。

PS:由于积累缓冲区操作需要复制大量的内存并进行大量的处理,所以很少使用这个功能。

转载于:https://www.cnblogs.com/qingsunny/archive/2013/01/31/2886335.html

你可能感兴趣的文章
auth模块
查看>>
javascript keycode大全
查看>>
前台freemark获取后台的值
查看>>
log4j.properties的作用
查看>>
游戏偶感
查看>>
Leetcode: Unique Binary Search Trees II
查看>>
C++ FFLIB 之FFDB: 使用 Mysql&Sqlite 实现CRUD
查看>>
Spring-hibernate整合
查看>>
c++ map
查看>>
exit和return的区别
查看>>
discuz 常用脚本格式化数据
查看>>
洛谷P2777
查看>>
PHPStorm2017设置字体与设置浏览器访问
查看>>
SQL查询总结 - wanglei
查看>>
安装cocoa pods时出现Operation not permitted - /usr/bin/xcodeproj的问题
查看>>
makefile中使用变量
查看>>
GIT笔记:将项目发布到码云
查看>>
JavaScript:学习笔记(7)——VAR、LET、CONST三种变量声明的区别
查看>>
JavaScript 鸭子模型
查看>>
SQL Server 如何查询表定义的列和索引信息
查看>>