当前位置: 首页 > news >正文

OpenGL 中的 Render To Texture

很多人问过在OpenGL中如何做RenderToTexture。在这里总结一下
早期的OpenGL里没有显式的支持RTT(Render To Te texture) 。 但是glCopyTexImage 可以从frameBuffer 读取纹理到texture中的函数,可以把framebuffer里的东西拷贝到纹理。不过这个函数相比D3D的RenderTarget还是有很大的区别的。但是加上多个Buffer (GL_FROMT , GL_BACK GL_AUXn等) 基本可以达到D3D 的RT的功能。不过性能和方便程度上还不如D3D。
于是就有了PBuffer这个东西。PBuffer这个东西我没用过,不做介绍。但是基本上是他可以创建一个Offscreen的RC。。。ATI在Linux下有ATI_PBuffer。。。不过NV没有。所以我没用。
再后来就是FBO , Frame Buffer Object。 FrameBufferObject可以有16个Attachment。可以连接各种个对象。这个个对象可以是纹理,可以是RenderBuffer(就是一个内部是哟功能的buffer)。 他们分别连接到16个颜色缓冲区(就是普通的RenderTarget)也可以是DepthBuffer。 很方便。你要做RTT的时候,申请一个fBO。 然后把一个纹理连接到FBO的COLOR ATTACHMENT上。绘制就可以绘制到纹理上。DepthBuffer一样处理。很是方便的。
在这里还不得不介绍一下PBO,PBO的目的是在显存中快速传输数据。 它可以很快把一个FrameBuffer和Texture中的数据进行对拷。同时也可以把一个Pixel的数据当做一个Vertex BufferObject来用。所以我们可以把FrameBuffer读回到FBO中。把FBO当个纹理数据用(RTT),也可以当作VBO来用。这就是R2VB。

以下提供一个FBO Class下载地址:
http://sourceforge.net/project/showfiles.php?group_id=104004&package_id=158526
同时FBO的官方文档请到www.opengl.org下载

本人渲染器中也有对FBO的完全封装。等完善后会公布代码。

相关文章:

  • 异常重试_从零搭建后端框架——异常统一处理的三种方式
  • js截取视频第一帧_短视频如何截取生成GIF?干货分享,大神手把手教你制作GIF动图...
  • 回顾一年的工作历程_ABM2020回顾|我们做过什么(一)
  • 通过改变网络拓扑使用Sniffer Pro监控、分析协议的示意图
  • python locust api_Locust API 文档
  • 暴走后清醒(2006版)
  • sceneflow 数据集多少张图片_快速使用 Tensorflow 读取 7 万数据集!
  • Google Talk Java手机客户端
  • grafa导出数据图标_有这些图表美化工具,十分钟配出炫酷的数据可视化大屏
  • 书脊开胶了用什么胶粘_使用方便快捷的防水快干胶时,要注意些什么呢?
  • 8月22讲课记录
  • 使用智能指针错误导致内存泄漏_第24篇-戏说C++ 内存泄漏(B)
  • 不知多少Java程序员能解答这个问题!
  • 回填用土好还是砂石料好_砂石土的一般配比
  • 钢铁中的生命,我们所不知道的柱子和他的朋友们!
  • [deviceone开发]-do_Webview的基本示例
  • 「前端」从UglifyJSPlugin强制开启css压缩探究webpack插件运行机制
  • 【MySQL经典案例分析】 Waiting for table metadata lock
  • 10个最佳ES6特性 ES7与ES8的特性
  • conda常用的命令
  • CSS选择器——伪元素选择器之处理父元素高度及外边距溢出
  • Django 博客开发教程 16 - 统计文章阅读量
  • express + mock 让前后台并行开发
  • github指令
  • gitlab-ci配置详解(一)
  • JAVA SE 6 GC调优笔记
  • SwizzleMethod 黑魔法
  • tensorflow学习笔记3——MNIST应用篇
  • vuex 笔记整理
  • 创建一种深思熟虑的文化
  • 互联网大裁员:Java程序员失工作,焉知不能进ali?
  • 使用Gradle第一次构建Java程序
  • 优化 Vue 项目编译文件大小
  • 原生js练习题---第五课
  • 【运维趟坑回忆录 开篇】初入初创, 一脸懵
  • 数据可视化之下发图实践
  • ​configparser --- 配置文件解析器​
  • (30)数组元素和与数字和的绝对差
  • (Mac上)使用Python进行matplotlib 画图时,中文显示不出来
  • (Spark3.2.0)Spark SQL 初探: 使用大数据分析2000万KF数据
  • (附源码)ssm失物招领系统 毕业设计 182317
  • (力扣记录)1448. 统计二叉树中好节点的数目
  • (七)c52学习之旅-中断
  • (四)Linux Shell编程——输入输出重定向
  • (四)模仿学习-完成后台管理页面查询
  • (学习日记)2024.01.19
  • (译)2019年前端性能优化清单 — 下篇
  • (转)IOS中获取各种文件的目录路径的方法
  • (转)Scala的“=”符号简介
  • .NET 8 中引入新的 IHostedLifecycleService 接口 实现定时任务
  • .NET Entity FrameWork 总结 ,在项目中用处个人感觉不大。适合初级用用,不涉及到与数据库通信。
  • .NET 回调、接口回调、 委托
  • .Net 知识杂记
  • .net6+aspose.words导出word并转pdf
  • .net企业级架构实战之7——Spring.net整合Asp.net mvc