• [OpenGL学习] 缓冲区


    缓冲区: 

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

  • 相关阅读:
    web----DNS解析
    iToken----开发前准备
    web----计算机网络通讯
    SpringCloud----基础
    微服务----理解
    微服务----docker-compose.yml属性详解
    微服务----一次构建,到处运行
    Linux----安装gcc
    微服务----Registry
    Linux----常用命令
  • 原文地址:https://www.cnblogs.com/qingsunny/p/2886335.html
Copyright © 2020-2023  润新知