OpenGL(九)使用 FrameBufferObject

本文介绍了OpenGL中的FrameBufferObject(FBO)技术,用于实现Render to Texture(RTT)。FBO允许将渲染结果保存到纹理中,可用于分屏渲染或后期处理。文章详细讲解了FBO的原理,包括如何将ColorBuffer和DepthBuffer绑定到纹理,以及如何创建FBO并使用Shader将预渲染的内容呈现到屏幕上。总结中强调,FBO提供了将画面抓取为贴图的能力,为实现各种后期处理效果提供可能。
摘要由CSDN通过智能技术生成

在OpenGL中所有的图形,都会绘制到 FrameBufferObject 上。如果想使用界面的做分屏渲染,或需要屏幕图像制成贴图以备后期处理,就需要用到 FrameBufferObject 技术,这种方式也被称为 RTT (Render to Texture)。

原理

通过

glFramebufferTexture2D(GL_FRAMEBUFFER,GL_COLOR_ATTACHMENT0,GL_TEXTURE_2D,colorBuffer,0);

可以将ColorBuffer绑定到一张Texture上。当然也可以绑定到多张贴图中。另外使用这个函数也可以取出深度贴图。

当生成了自己的fbo之后,即可将图元绘制到贴图上面,可以理解为是一个预渲染的过程。

glBindFramebuffer(GL_FRAMEBUFFER,fbo);
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
draw();
glBindFramebuffer(GL_FRAMEBUFFER,0);

然后在实际渲染时使用fbo中的贴图进行绘制。

实现

创建一个产生fbo的函数,并返回ColorBuffer与depthBuffer

GLuint CreateFrameBufferObject(GLuint &colorBuffer,int width,int height)
{
    GLuint fbo;
    glGenFramebuffers(1,&fbo);
    glBindFramebuffer(GL_FRAMEBUFFER,fbo);
    
    //color buffer
    gl
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值