[工作积累] OpenGL ES3.0: glInvalidateFramebuffer
https://www.khronos.org/opengles/sdk/docs/man3/html/glInvalidateFramebuffer.xhtml
这个在GLES2.0上只有Extension:
https://www.khronos.org/registry/gles/extensions/EXT/EXT_discard_framebuffer.txt
原理跟D3D9 的Present参数(D3DSWAPEFFECT_DISCARD)类似:
http://msdn.microsoft.com/en-us/library/windows/desktop/bb172612(v=vs.85).aspx
理论上, 每一帧的绘制都可以基于之前帧的绘制内容叠加, 所以需要保持之前backbuffer内容的有效性, 但是实时游戏中每一帧之间一般不这么做.
如果原有的backbuffer在swap之后内容不再有效, 这样可以避免GPU直接操作的frame buffer cache(fast memory)再重新写回video memory. 而且从下一次绘制开始, GPU也不关心原有backbuffer的内容, 不用再把backbuffer的内容load到frame buffer cache中. 这也是为什么要求video memory内的backbuffer数据必须是无效的.
这样可以节省带宽, 提高效率, 同时可能节省video memory开销.
这里的video memory不一定是显卡内的物理显存. 对于现代移动设备, 大部分是GPU和CPU共享的物理内存, 类似XBOX和PS4的Unified Memory Access.
然而OpenGL/ES的架构上只能是先准备用户内存, 然后"upload"给API, 实际上是从user space memory到driver(kernel) space memory的copy.
需要注意的是,这个函数只是对具体GL ES实现的hint, 所以我姑且认为它是implementation defined behavior:
The intention of this function is to provide a hint to the GL implementation that there is no longer a need to preserve the contents of particular attachments of a framebuffer object, or the default framebuffer.
这意味着某些厂商的内部实现, 可能对这一情况无法做任何实际优化. 当然实际上可能所有厂商都可以做优化, 只不过GLES3的标准不保证. 对于我们用户, 还是要使用的好, 即便某些时候没效果.
另外当FBO为默认FBO时, 输入的参数是不一样的:
If a framebuffer object is bound, then
attachmentsmay containGL_COLOR_ATTACHMENTi,GL_DEPTH_ATTACHMENT,GL_STENCIL_ATTACHMENT, and/orGL_DEPTH_STENCIL_ATTACHMENT. If the framebuffer object is not complete,glInvalidateFramebuffermay be ignored.If the default framebuffer is bound, then
attachmentsmay containGL_COLOR, identifying the color buffer;GL_DEPTH, identifying the depth buffer; and/orGL_STENCIL, identifying the stencil buffer.
[工作积累] OpenGL ES3.0: glInvalidateFramebuffer的更多相关文章
- OpenGL ES3.0
到今天,喜欢上了非常酷的图片处理和游戏,经了解,大部分都要使用opengl es,所以准备开始学习,然后深入学习cocos2d,GPUImage.平台为IOS OpenGL ES OpenGL ES ...
- OpenGL es3.0 初始化及渲染
class FOpenglEs { public: /** * 初始化 OpenGLES3.0 */ bool initOpenGLES30(HWND hwnd) { EGLConfig config ...
- OpenGL ES3使用MSAA(多重采样抗锯齿)的方法
昨晚花费了我2个多小时的时间终于把OpenGL ES3.0中的MSAA给搞定了.在OpenGL ES2.0中,Khronos官方没有引入标准的MSAA全屏抗锯齿的方法,而Apple则采用了自己的GL_ ...
- OpenGL ES3 非常好的系列文章
OpenGL ES3 非常好的系列文章: OpenGL-ES 3.0学习指南(五)--EGL基础 NDK开发OpenGL ES 3.0(二)--初见GLES,第一个三角形 NDK开发OpenGL ES ...
- OpenGL ES2.0 基本编程
1. EGL OpenGL ES命令须要一个rendering context和一个drawing surface. Rendering Context: 保存当前的OpenGL ES状态. Draw ...
- OpenGL ES2.0 入门经典例子
原文链接地址:http://www.raywenderlich.com/3664/opengl-es-2-0-for-iphone-tutorial 免责申明(必读!):本博客提供的所有教程的翻译原稿 ...
- Cocos2d-x中使用OpenGL ES2.0编写shader
这几天在看子龙山人的关于OpenGL的文章,先依葫芦画瓢,能看到些东西,才能慢慢深入了解,当入门文章不错,但是其中遇到的一些问题,折腾了一些时间,为了方便和我一样的小白们,在这篇文章中进行写补充. O ...
- iOS开发——图形编程OC篇&OpenGL ES2.0编程步骤
OpenGL ES2.0编程步骤 OpenGL ES (OpenGL for Embedded Systems) 是 OpenGL 三维图形 API 的子集,针对手机.PDA和游戏主机等嵌入式设备而设 ...
- Eclipse中通过Android模拟器调用OpenGL ES2.0函数操作步骤
原文地址: Eclipse中通过Android模拟器调用OpenGL ES2.0函数操作步骤 - 网络资源是无限的 - 博客频道 - CSDN.NET http://blog.csdn.net/fen ...
随机推荐
- java实现的MySQL自动备份和还原(struts2+Hibernate)---兼容 window+Linux
相信很多朋友都经历过数据库出问题的情况,我也同样(见我的上一篇博文:phpmyadmin误删表后的恢复过程(心惊胆跳啊) ).如果数据很大或者很重要,那么恢复起来是相当困难的,所以我们在做一个相对 ...
- API - .addBack()
从jQuery官网上提供的Example来看,这个API的意思是: 1 先圈定一个范围,[A] $( "div.after-addback" ) 2 再用find过滤一出一个更 ...
- 一个自定义的C#数据库操作基础类 SqlHelper
SqlHelper其实是我们自己编写的一个类,使用这个类目的就是让使用者更方便.更安全的对数据库的操作,既是除了在SqlHelper类以外的所有类将不用引用对数据库操作的任何类与语句,无须担心数据库的 ...
- C# 修改IE 源代码参照样例
using Microsoft.Win32; using System; using System.Collections.Generic; using System.ComponentModel; ...
- 【转载】学习C#的28条建议
1. 看得懂的书,请仔细看:看不懂的书,请硬着头皮看:2. 别指望看第一遍书就能记住和掌握什么——请看第二遍.第三遍:3. 学习编程的秘诀是:编程,编程,再编程:4. 请把书上的程序例子亲手输入到电脑 ...
- Python学习教程(learning Python)--3.3.2 Python的关系运算
如果if的condition不用布尔表达式来做条件判断而采用关系表达式,实际上关系表达式运算的结果要么是True要么是False.下面我们先了解一些有关关系运算符的基础知识,如下表所示. 做个小程序测 ...
- 在WPF程序中将控件所呈现的内容保存成图像(转载)
在WPF程序中将控件所呈现的内容保存成图像 转自:http://www.cnblogs.com/TianFang/archive/2012/10/07/2714140.html 有的时候,我们需要将控 ...
- Ajax 异步调用代码
function jsAjax() { var Con; var XmlRequset; var AjaxContent; //返回内容 if (window.XMLHttpRequest) { // ...
- hdu 3342 Legal or Not
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=3342 Legal or Not Description ACM-DIY is a large QQ g ...
- hdu 1303 Doubles
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=1303 Doubles Description As part of an arithmetic com ...