OpenGL离屏渲染流程代码

OpenGL离屏渲染

初始化用于离屏渲染的RenderbufferFramebuffer

// 初始化
// -----------------
// 生成&绑定&创建储存空间Renderbuffer
glGenRenderbuffers(1, &renderbuffer);
glBindRenderbuffer(GL_RENDERBUFFER, renderbuffer);
glRenderbufferStorage(GL_RENDERBUFFER, GL_RGBA, 256, 256);
// 生成&绑定FrameBuffer
glGenFramebuffers(1, &framebuffer);
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, framebuffer);
// Renderbuffer关联到FrameBuffer
glFramebufferRenderbuffer(GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, renderbuffer);

离屏渲染

// 离屏渲染
// -----------------
// 绑定Framebuffer
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, framebuffer);
glViewport(0, 0, width, height);
// 渲染到Framebuffer
glClearColor(0.0, 0.0, 1.0, 1.0);
glClear(GL_COLOR_BUFFER_BIT);
// 具体的渲染程序
...

绘制到窗口

// 绘制到窗口
// -----------------
// 从离屏渲染Framebuffer读取并绘制到窗口Framebuffer中
glBindFramebuffer(GL_READ_FRAMEBUFFER, framebuffer);
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);
// 视口设置和清空
glViewport(0, 0, window_width, window_height);
glClearColor(0.0, 0.0, 1.0, 1.0);
glClear(GL_COLOR_BUFFER_BIT);
// 拷贝
glBlitFramebuffer(0, 0, width-1, height-1, 0, 0, window_width-1, window_height-1, GL_COLOR_BUFFER_BIT, GL_NEAREST);
glutSwapBuffers();

从离屏渲染Framebuffer读取图像到内存

// 从Framebuffer读取图像到内存
glBindFramebuffer(GL_READ_FRAMEBUFFER, framebuffer);
glReadPixels(0, 0, width, height, GL_RGBA, GL_UNSIGNED_BYTE, img_buf);
  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值