cocos2dX 3.x获取渲染Image
来源:互联网 发布:淘宝卖家开店时间查询 编辑:程序博客网 时间:2024/06/05 20:16
cocos2dx 3.x开始采用了异步渲染机制,以前在2.x版本采用重绘获取图片Image对象的放法会出现一点小bug,最近查找资料解决了这个问题,有一点思考:
bool ControllerLayer::getNewImg(Sprite* img){ img->retain(); RenderTexture* pRender = RenderTexture::create(img->getContentSize().width, img->getContentSize().height, Texture2D::PixelFormat::RGBA8888); //插入render队列 pRender->beginWithClear(0.0f, 0.0f, 0.0f, 0.0f); img->visit(); pRender->end(); pRender->retain(); //执行渲染 Director::getInstance()->getRenderer()->render(); auto imgPixel = pRender->newImage(); _imgPixelData = imgPixel->getData(); pRender->clear(0, 0, 0, 0); if (pRender) { delete pRender; pRender = NULL; } return true;}
对异步渲染一点粗浅的了解,现在需要手动执行render()进行当前对象的单独渲染,不然的话会将RenderTexture对象加入render队列,不同时执行绘制,你得到的RenderTexture指针会指向一个空对象,这个空对象会在下一帧进行渲染。
cocos2dx对gl绘图做了很大程度上的封装,使用重绘获取纹理不宜大量使用,这会大量增加绘制次数,降低绘制效率,不过用来判断不规则图形边缘还是一个不错的方法。
还有一种解决方案是采用Image对象来初始化Texture2D对象,但是这样在处理缓存的时候效率会大大降低,cocos并没有封装对于Image的缓存(这一点不确定,没见过有人这样使用),需要大量使用的话就得自己写Image缓存管理的类以及对plist文件的解析器,并不现实,所以只对于按钮这一类资源很少的还能适用,但是对于其他(例如笔主曾经想用像素检测实现碰撞检测)就不合适了。
0 0
- cocos2dX 3.x获取渲染Image
- cocos2dx 3.x中的OpenGL(一)-Cocos2d-x渲染结构
- cocos2dx 3.x 支持自定义的渲染命令
- cocos2dx 2.x 每帧渲染分析
- 新书《Cocos2dx 3.x 3D图形学渲染技术讲解》问世
- cocos2dx 2.x 粒子渲染时有黑色粒BUG
- 认识 Cocos2dx 3.x
- cocos2dx 3.x api
- 【cocos2dx 3.x】画线
- 【cocos2dx 3.x】CCSpriteBatchNode
- cocos2dx-3.x Note
- cocos2dx如何通过Image获取指定点颜色值
- Cocos2d-x 3.x的渲染流程
- cocos2dx 2.x到cocos2dx 3.x的一些改变
- cocos2dx 3.x 相机机制
- cocos2dx 3.x 异步加载
- cocos2dx 3.x 读取csv
- cocos2dx 3.x 移植android
- c程序无法输入字符(程序无反应)的原因!
- Best Time to Buy and Sell Stock III
- linux 负载均衡
- 进程组 http://blog.163.com/li_xiang1102/blog/static/60714076201110294573495/
- Struts2工作流程
- cocos2dX 3.x获取渲染Image
- oponcv运行时无法找到、打开PDB文件(cannot find or open pdb file),程序已经退出,返回值-1(0xffffff)
- runtime
- struct 大小的计算
- Python核心编程笔记 - 第11章 函数式编程
- SSH网上商城(一)---用户注册激活邮件
- 国庆开始只切了几道水题,想了想还是记录一下吧
- 教学相长—导师制
- sqlite的配置