位置: 编程技术 - 正文

Bullet(Cocos2dx)之优化PhysicsDraw3D

编辑:rootadmin

推荐整理分享Bullet(Cocos2dx)之优化PhysicsDraw3D,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

为了测试bullet物体的大小,匆匆写完的PhysicsDraw3D的效率低的要命,这也是为什么cocos2dx弃用了DrawPrimitives,而去使用DrawNode

DrawPrimitives每次绘制都去调用glDrawElements,假如每帧绘制条线段,那么就要调用次glDrawElements,可见效率之低。

而DrawNode采取的是批处理的方式,当drawLine的时候不是立即绘制,而是将线段的信息添加到数组里,当draw时统一调用gl的绘制函数

/1可不是一个小数目啊。

下图使用DrawPrimitives方法

加入个Sphere帧率就掉到,的帧率更是惨不忍睹

下图使用DrawNode方法

为了解决这个问题就要参照DrawNode实现一个简单的DrawNode3D

不管三七二十一,将DrawNode的头文件代码copy,删去一些不需要的,

1.修改V2F_C4B_T2F 为 V3F_C4B_T2F

2.修改Vec2为Vec3,要绘制3D

3. 保留drawPoint, drawPoints, drawLine,其他的绘制函数不要

对于DrawNode.cpp按照上面所说同样修改

要记住

Bullet(Cocos2dx)之优化PhysicsDraw3D

因为顶点有三个元素,.cpp代码过多,请在文章最后下载源码,要注意的是绘制时开启深度测试

修改PhysicsDraw3D

删除成员变量,添加DrawNode3D* _drawNode,由于DrawNode3D继承自Node所以创建时要将其添加到父节点上,

修改create,init为如下

static PhysicsDraw3D* createWithLayer(Node* layer);

bool initWithLayer(Node* layer);

同时添加

void clearDraw();

我们知道DrawNode如果不执行clear,那么就不会清空上一帧的绘制数据

具体修改如下:

销毁时也要将_drawNode从Parent中移除

PhysicsWorld3D 创建的静态函数添加

为的就是创建调试绘制

同时删除initWorld对_debugDraw的创建,每次绘制时需要判断是否为debug

完整源码

csdn

github

cocos2dx-3.0() ScrollView 缩放 及 touch新用法 转自

cocos2dx中函数指针传递的方法 目的看到群里有个朋友搞了好几天函数指针传递,没搞好。所以写一篇文章,旨在从cocos2dx中帮朋友们找到如何传递指针。旧版本的函数指针传递全局函

cocos2dx 3.3 视频播放的实现-VideoPlayer的使用 最近因为项目需求需要使用到视频播放功能。在3.x版本之前如果需要用到视频播放功能就要使用原生的视频播放实现技术,好在3.x之后官方已经集成了

标签: Bullet(Cocos2dx)之优化PhysicsDraw3D

本文链接地址:https://www.jiuchutong.com/biancheng/372633.html 转载请保留说明!

上一篇:cocostudio2.0 碰到的问题(cocos2048)

下一篇:cocos2dx-3.0(23) ScrollView 缩放 及 touch新用法

  • 普票开错了几个月可以重新开
  • 尚未收到货款,填什么凭证
  • 递延收益摊销包含哪些
  • 地税保险单位编号是什么
  • 简易征收红冲报税方式是什么?
  • 农产品销售发票能否抵扣进项税?
  • 哪些金融资产不计提减值
  • 增值税代扣代缴抵扣
  • 进口材料怎么做账
  • 建筑施工单位可以安装电表吗
  • 收到发票对方已红冲是否退回?
  • 运输途中发生货物丢失
  • Win11怎么不显示图标
  • 公转私用途最好写借款
  • 收到政府补贴的装修款
  • 建筑业总产值和营业收入相等吗?
  • ghost恢复方法
  • 分享下会画画是怎样的体验
  • 财务费用利息收入为什么是负数
  • 销货退回未按规则处理
  • 长期病假解除劳动合同怎么赔偿
  • 融资租入的设备为什么属于资产
  • 融资租赁售后回租账务处理
  • 小公司不交社保违法吗
  • 小程序制作平台
  • thinkphp框架结构
  • hive dt
  • Web Spider Fiddler - JS Hook 基本使用
  • Node.js安装过程
  • vue3的
  • vscode的常用插件
  • 扣发工资是发还是不发
  • 指令获取
  • 汽油增值税专用发票几个点
  • 哪些费用可以在以后年度扣除
  • 建立分公司流程
  • python smtpd
  • 企业印花税怎么入账
  • 应收应付款项
  • 服务业按什么结算工资
  • 月底如何结转成本
  • 什么各级工会的离休退休人员的待遇
  • 核定征收无收入
  • 自建不动产领用原材料增值税进项
  • 办公楼开始建造前专门借款的利息费用
  • 暂估销售收入账目
  • 招标代理公司用哪个版本什么意思
  • 购买材料发生商损怎么算
  • 公司销售二手车怎么申报增值税
  • 管家婆记账可以都有凭证做吗?
  • 企业必须设立的账薄
  • MySQL利用大数据技术进行回归模型的构建流程
  • Win10系统怎么进入控制面板
  • centos 任务计划
  • 联想昭阳k41笔记本
  • win8默认输入法设置
  • win8系统教程
  • linux运维是必死之路
  • sesvc.exe是什么
  • win8.1流畅吗
  • hptasks.exe是病毒吗 是什么进程 hptasks进程说明
  • 让xp系统自动修复软件
  • 系统右键菜单
  • unity项目怎么运行
  • linux perl -e
  • python3 args
  • python如何开发
  • 命令适用于
  • python数据类型有什么用
  • unity中如何修改prefab
  • JavaScript的函数定义
  • js模块化框架
  • jquery遍历div子元素
  • jquery实例
  • 归并代码
  • python字符串字符对应个数
  • 中加税务信息互换执行
  • 西安车辆购置税在线交费
  • 国税总局云南省税务局官网
  • 江西国家税务局电子税务局
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设