• 关于帧缓存的总结


    关于帧缓存的总结

    本来想带上例子的,发现自己懂得太晚了,没必要了。写下自己的理解就行了。

    1. 缓冲区

     缓冲区是一块内存或在相应硬件中开辟的空间,目的是为了保存像素数据中的相关信息。

    根据缓存中不同的作用,和功能分为颜色缓冲、模板缓冲、深度缓冲、积累缓冲等(有的根据具体作用还有其他缓冲)。同意成称为 帧缓存!

    2. 概念、原理、OpengGL实现

         2.1颜色缓冲区

    颜色缓冲区的作用就是实现存储要显示在屏幕上的,经过管线处理变化后的颜色准备显示到屏幕上。颜色缓冲区主要包括:支持立体显示的左右缓冲区,支持动画的前后缓冲区(ps:动画这里表示实现在后缓冲区实现绘图后  通过交换缓冲区交换到前缓冲区,不再显示绘画过程)。 类似 辅助库auxSwapBuffers();实现的前后缓冲的交换。

     

         2.2深度缓冲区

    深度缓冲区保存像素的深度值。深度值是因三维世界的兴起而提出的,图形学中(在绘画专业估计早有此概念,毕竟好多算法实现都是从画家那里得来的)。深度缓冲区也叫Z-buffer 所以,每个像素的z坐标即为它的深度。

    深度缓冲在立体图形消隐等算法中广为应用。

     

        2.3模板缓冲区

    模板缓冲区作用比较奇特。模板的作用是实现渲染区域按照程序设计的方式实现。比如:如果让你实现在显然区域中一个小的正方形显示渲染,你可能会想到用剪切就行了。但是,如果让你实现一个五角星里面渲染呢? 这时候用 模板 最为方便。

    模板的应用过程就是在模板缓冲区内设定好要显示渲染的形状,开启目标测试,通过检测的像素渲染,没有通过的丢弃。就会出现想要的效果:在一个五角星里有我们渲染的东西,其他地方看不见。

        2.4积累缓冲区

    积累缓冲区字面意思,实现了颜色的积累实现一些特殊的效果。

    3. 缓冲区的操作

         3.1缓冲区的清除

    为了防止缓冲区内的数据对绘图的影响,在绘图之前要对缓冲区实行清除操作。

    过程: 首先设置清除值。如:

    设置颜色清除值 glClearColor(r,g,b,a)

    设置深度清除值 glClearDepth(dep)

    设置模板清除值 glClearStencil(int a);

               然后 设置清除项 glClear();

     

    参数包括 GL_DEPTH_BUFFER_BIT

    GL_COLOR_BUFFER_BIT

    GL_ACCUM_BUFFER_BIT

    GL_STENCIL_BUFFER_BIT

    以上几个参数可以 相互进行或后作为参数给glColor();

     

    3.2缓冲屏蔽

    所谓缓冲屏蔽,可以理解为缓冲区是否可写,当我们对缓冲区添加屏蔽时,并没有停止相应测试,而是缓冲区一直没有变。

     

    3.3测试

    http://bochuang.sinaapp.com/forum.php?mod=viewthread&tid=49&extra=page%3D1 

     


    作者:leisure
    原文出自:http://www.cnblogs.com/leisure/
    感谢园子,感谢各位支持。本文版权归伟征和博客园共有,欢迎转载@ 但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
    只是想分享,欢迎拍砖!促进我成长

  • 相关阅读:
    linux在线书籍
    数据库使用记录(二)
    python读取配置文件报keyerror文件路径不正确导致的错误
    pycharm全局搜索快捷键无反应
    UVA 11054 Wine trading in Gergovia (Gergovia 的酒交易)(贪心+模拟)
    UVA 12107 Digit Puzzle(数字谜)(IDA*)
    UVA 12113 Overlapping Squares(重叠的正方形)
    UVA 10384 The Wall Pusher(推门游戏)(IDA*)
    UVA 11277 Cyclic Polygons(二分)
    【洛谷P2922】秘密消息【Trie】
  • 原文地址:https://www.cnblogs.com/leisure/p/2508955.html
Copyright © 2020-2023  润新知