博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
RenderTexture 渲染到纹理
阅读量:5759 次
发布时间:2019-06-18

本文共 798 字,大约阅读时间需要 2 分钟。

hot3.png

cocos2d里面有个CCRenderTexture,用于将指定对象渲染到纹理。在unity3d里面也有同样的技术。

今天查阅了相关资料,再看了一下cocos2d的源码,发现他实际上用的是FBO(帧缓存对象)渲染到纹理技术,即我们可以为帧缓存关联一个纹理附件,然后将帧缓存里面的内容放到纹理附件里面。

在cocos2d里面使用步骤大致如下:

1 创建texture:初始化的时候生成一个空的texture。并指定纹理数据的宽和高。

2 创建FBO:用glGenFramebuffers生成帧缓存FBO framebuffer。

3 记录之前的FBO:glGetIntegerv(GL_FRAMEBUFFER_BINDING, &_oldFBO);              

4 关联texture到FBO:绑定刚才生成的framebuffer(glBindFramebuffer), 用glFramebufferTexture2D 将texture关联到FBO。(当然可以为FBO创建深度缓存,这部分没仔细看)

以下内容通过命令队列执行

5 推送命令绑定FBO:RenderTexture begin 渲染开始的时候再次使用glBindFramebuffer。指定渲染到渲染缓存。注意这部分是推送到render command queue里面执行的。

6 推送命令渲染物体:调用待渲染的物体的visit,将渲染命令推送到render。

7 执行渲染:利用render进行渲染,执行上面5、6条的命令。

8 恢复之前的FBO:RenderTexture end,渲染结束的时候,通过glBindFramebuffer(GL_FRAMEBUFFER, _oldFBO);绑定到老的FBO。

这样就通过帧缓存将东西渲染到了纹理。

转载于:https://my.oschina.net/yizhangxyz/blog/703942

你可能感兴趣的文章
华大基因BGI Online的云计算实践
查看>>
Cocos2d-x3.2 Ease加速度
查看>>
[EntLib]关于SR.Strings的使用办法[加了下载地址]
查看>>
中小型网站架构分析及优化
查看>>
写shell的事情
查看>>
负载均衡之Haproxy配置详解(及httpd配置)
查看>>
标准与扩展ACL 、 命名ACL 、 总结和答疑
查看>>
查找恶意的TOR中继节点
查看>>
MAVEN 属性定义与使用
查看>>
shell高级视频答学生while循环问题
查看>>
使用@media实现IE hack的方法
查看>>
《11招玩转网络安全》之第一招:Docker For Docker
查看>>
hive_0.11中文用户手册
查看>>
hiveserver2修改线程数
查看>>
oracle体系结构
查看>>
Microsoft Exchange Server 2010与Office 365混合部署升级到Exchange Server 2016混合部署汇总...
查看>>
Proxy服务器配置_Squid
查看>>
开启“无线网络”,提示:请启动windows零配置wzc服务
查看>>
【SDN】Openflow协议中对LLDP算法的理解--如何判断非OF区域的存在
查看>>
纯DIV+CSS简单实现Tab选项卡左右切换效果
查看>>