opengl 4.X (离屏渲染-后台渲染)off-screen rendering

本文介绍了OpenGL 4.x中的离屏渲染技术,也称为后台渲染。内容涉及自定义framebuffer对象的创建、绑定和初始化,以及如何使用framebuffer进行颜色、深度和模板数据的存储。通过glFramebufferTexture()函数将纹理贴图数据贴入framebuffer,实现非直接显示的framebuffer渲染,并探讨了其在特定场景如截图中的应用。
摘要由CSDN通过智能技术生成

openGL可以渲染屏幕的framebuffer,自然可以渲染不直接显示的framebuffer,把数据存入非直接显示的framebuffer中以便后续的渲染需求,或者直接存入纹理贴图texture都是非常灵活的。
需要注意的是因为不同平台数据结构不同的关系,你需要针对不同平台,创建和设置针对的framebuffer格式。
比如如果你使用默认的framebuffer那么,他的大小就是窗口或屏幕的大小,而如果窗口移出屏幕范围,那么有可能对应的shader压根就不会运行了(由于裁剪测试clip test,顶点shader也极有可能把几何直接剔除,那么就进入不了后续的渲染管道)。所以用户需要提供自定义framebuffer,这样渲染到指定地点就是可控制的,但是最大的尺寸是被openGL所限制的。
用户提供的framebuffer被openGL作为framebuffer objects对待,顾名思义它和其他openGL中的objects一样需要被创建并初始化。
首先我们需要为framebuffer object预留一个名字

void glGenFramebuffers(GLsizei n, Gluint * ids);

并把它绑定到设备上下文上去初始化。

void glBindFramebuffer(GLenum target, GLuint framebuffer);

一般情况下 glBindFramebuffer()会把应用程序提供的framebuffer object作为当前framebuffer。其中参数framebuffer就是我们预留的名称之一(opengl都是靠GLuint来索引object的,为它的名称),target参数一般为GL_FRAMEBUFF

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值