• 【转】OpenGL Buffer Object


    介绍OpenGL 缓冲区对象一篇很好的文章。http://developer.178.com/201104/96859219738.html

       OpenGL的缓冲区对象主要关系到内存与显存之间进行数据传输与交互时而进行的优化操作。常见的缓冲对象有:顶点缓冲对象VBO、像素缓冲对象PBO和帧缓冲对象FBO,不同的对象的操作方式及应用场合不尽相同。

      Vertex Buffer Object:

      1. 在Client与Server之间快速地操作几何顶点数据,能够很快地对顶点数据进行更新等操作。这里顶点数据的实质可以根据具体需要以其它数据填充。

      2. 开辟的实际数据空间的位置不确定,根据VBO的属性及CPU调用的次数,由显存逐渐向内存转移。

      Pixel Buffer Object:

      1. 在Client与Server之间快速地操作各类像素数据

      2. 高效并不在于传输更快,而在于与硬件相关的异步调用方式,调用之后CPU即返回执行其它操作(使用DMA方式的传输、由OpenGL直接控制)

      3. 在单个PBO情况下并不能得到很好的效果,毕竟传输过程仍然存在(但速度可能变快,比如显存内部的数据传输),但其异步性就提供了双PBO实现的可能性,用双PBO来进行加速。

      4. PBO关联的实际数据空间位置不确定,主要由PBO的属性及OpenGL来确定。

      Frame Buffer Object:

      1. 提供了一个与FrameBuffer同类型的离屏渲染操作对象,可直接控制管线最终数据的去向。

      2. 分配的空间是在显存之中,因此用FBO来对显存进行涉及GPU运算的交互操作效率较高。

      3. 主要用于显存内部数据的转化、交互、操作的场合。

      整个过程可用如下图所示:

      注意:所有的Buffer Object都只是一个中间的管理平台,与实际的空间相分离。其中,除了FBO所关联的数据空间在显存之外,PBO和VBO所关联的数据空间位置均不一定(system memory, shared memory, AGP, Video Memory均有可能)

  • 相关阅读:
    python数据类型汇总
    mac下hadoop环境的搭建以及碰到的坑点
    mac搭建hadoop3.1.1伪分布模式 全网最详细教程!
    Mac中安装node.js和npm
    Mac抓包工具Charles的安装激活及使用
    mysql命令行访问远程数据库
    Linux bash总结(一) 基础部分(适合初学者学习和非初学者参考)
    iTerm2 配色方案
    jar包无法引入解决办法
    41 | 怎么最快地复制一张表?
  • 原文地址:https://www.cnblogs.com/wenshanzh/p/2992228.html
Copyright © 2020-2023  润新知