位置: 编程技术 - 正文

Bullet(Cocos2dx)之增加调试绘制PhysicsDraw3D

编辑:rootadmin

推荐整理分享Bullet(Cocos2dx)之增加调试绘制PhysicsDraw3D,希望有所帮助,仅作参考,欢迎阅读内容。

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

由于刚开始学的时候不知道Bullet的单位1.0代表多大,所以制作出的模型的大小也无法判断。

不用担心,Bullet提供了一个类btIDebugDraw,这个泪已经实现了很多绘制功能,我们要做的就是实现几个虚函数。

我们继承btIDebugDraw,实现虚函数

目前只需要drawLine,等以后涉及到其他方面时再来实现其他的绘制功能

drawContactPoint, draw3dText 什么也不做。

_debugDrawMode 一定要定义,因为btIDebugDraw在绘制时会检查需要绘制什么。

实现绘制模式

下面重点说一下drawLine,我们知道cocos2dx 的DrawNode 提供的都是绘制2d图元的功能,

而且修改起来也比较复杂,本着一切从简,主要是为了学习Bullet,所以我们就去copy一下

DrawPrimitives绘制Line的方法

同样DrawPrimitives::drawLine也是一个绘制2d Line的方法,那么就应该把它修改成可以绘制3D Line的方法,先观察这个drawLine的实现

首先初始化一些数据(待会看),

1.vertices 就是存放的2d line的起点终点,如果绘制3d line 自然要改成Vec3

s_shader 使用shader这个shader是cocos2dx 启动时预载入的

2.EMSCRIPTEN 看这 Emscripten support allows games written in C*&#; to be compiled to JavaScript and deployed directly to the web......

既然是js要用的暂且忽略

3.重点的重点来了 2, GL_FLOAT,

GL_FALSE, 0, vertices);

其中的2就是便是一个顶点的坐标数量,2d 自然是2, 3d的就是3了

注意:在glVertexAttribPointer 之前一定要开启深度测试

glEnable(GL_DEPTH_TEST);绘制完成后要关闭深度检测glDisable(GL_DEPTH_TEST);

如果不开启深度测试看看这个效果你就明白了

可以看到阿狸的手被遮挡了,因为不开启深度测试gl就不会根据深度来显示,而是后绘制的会覆盖先绘制的

Bullet(Cocos2dx)之增加调试绘制PhysicsDraw3D

开启后

4.对这个划线方法修改以后

再来看看lazy_init

其实就是获取shader。

s_colorLocation color属性,可以对制定绘制时的颜色

s_pointSizeLocation point size 属性 可以制定绘制点的大小

那么添加到PhysicsDraw3D, 就如下

方便起见,为PhysicsDraw3D 添加构建方法

销毁方法

将PhysicsDraw3D整合到PhysicsWorld3D

为PhysicsWorld3D添加私有变量

并在initWorld 最后添加

在destroy 前添加

完整代码见文章最后

测试这个PhysicsDraw3D

在HelloWorld重载

按F5编译通过后可以看到Plane为一个坐标,box有包围盒和法向量

后续

给box提供一个冲量box会在原来的基础上增加一定的速度,

这个速度就是impulse / mass, 看一下applyCentralImpulse的实现就明白了

_box->applyCentralImpulse(btVector3(0, 0, -));

增加touch listener

触摸时提供冲量

Box跑远了

完整源码

cocos2dx 3.2 利用clippingNode把图片裁剪成圆形,接口可直接使用 ClippingNode简介先简单了解一下clippingNode类的使用。顾名思义,首先它是一个node,可以做为其他sprite,node的容器,而且是一个可以裁剪的node。如何裁剪

使用ant编译之签名问题 使用ant编译之签名问题DionysosLai(@qq.com)/1/5使用ant编译,可以很大提高项目开发效率。目前,coco2dx官方所提倡的提高几十倍的编译速度,其实就

cocostudio2.0 碰到的问题 自己的项目前面做完了,最近和同事一起做另外一个项目,因为我以前用的是cocostuido1.6版本的,而他用的是cocostudio2.0版本,所以,刚开始的时候,还是

标签: Bullet(Cocos2dx)之增加调试绘制PhysicsDraw3D

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

上一篇:cocos2dx2.x杂记之CCSpriteBatchNode(cocos2d教程)

下一篇:cocos2dx 3.2 利用clippingNode把图片裁剪成圆形,接口可直接使用(cocos2d schedule)

  • 建筑业印花税核定征收
  • 非居民纳税机构都包含哪些?
  • 施工企业的临时设施,属于企业的固定资产
  • 小规模企业所得税优惠政策最新2023
  • 房地产公司转让土地
  • 临时用工工资税率怎么算
  • 经济合同
  • 公司买了商品做活动会计分录
  • 预提返利的会计处理
  • 首次购置增值税税控系统
  • 以前年度损益调整账务处理分录
  • 附税分录怎么做?
  • 金税盘清卡晚了一天会怎么样
  • 中国人民银行保险公司
  • 奖金分为两次发放合法吗
  • 个人转让上市公司股票交增值税吗
  • 发票丢失罚款标准要看金额吗
  • 服务类进项
  • 物流公司增项
  • 建筑工程分包怎么纳税
  • 不能升级win11的二手电脑值得购买吗
  • 行政单位房租收入上交分录
  • 公司装修款账务处理
  • 什么叫绝地求生
  • Linux dpkg-query 命令用法详解(Debian Linux中软件包的查询工具)
  • 合并报表期初数可以直接抄上年数吗
  • 格里姆火山
  • 父母将住房无偿赠送给子女 增值税
  • 房产自用改出租房产税如何申报
  • 计提坏账损失的范围
  • 物流辅助服务费计入什么科目
  • vscode怎么写前端代码
  • js 数组中的重数
  • php fopen()
  • 固定资产家具用具包括什么
  • 商贸公司库存怎么盘点准确一点儿
  • 我们现在收到的礼物
  • 应交税费中印花税是什么
  • 请问linux
  • 在建工程过程中取得收入怎么入账
  • 出口结汇有哪些常用方法?
  • 预缴税款计算表填0.01行吗
  • 代收代付保险费分录
  • 清算机构收单机构和发卡行
  • 合并报表存货的计税基础
  • 金税四期监控什么
  • 新手任务税控设备申请
  • 金税盘抵扣的结转会计分录
  • 生产自己的产品
  • 服务业预收账款什么时候确认收入
  • 汇算清缴退税怎么回事
  • 销售租赁服务税率
  • 货物已发出可以退款吗
  • 开出银行承兑汇票一张用于支付材料采购款
  • 只有销售才能使你成功的名言
  • 积分换购怎么做账
  • 冲减成本费用
  • 医保卡收到钱
  • 外贸企业面对人民币升值应该采取什么的避险措施
  • 合并报表编制方法有几种
  • 企业实收资本怎么计算
  • 公司日常费用支出表怎么做
  • 会计凭证移交凭证需要哪些程序
  • 日记账的建账工作
  • win8专业版系统更改电脑设置没反应
  • win10连接ubuntu20.04远程桌面
  • linux系统文件系统只读
  • logd是什么进程
  • linux ssh默认端口
  • win8操作系统
  • raid磁盘阵列教程
  • 微信小程序图片加载不出来
  • 管道的实现
  • 请简述vue-router路由的作用
  • 搭建nodejs环境
  • 批处理系统的进程调度算法
  • JavaScript中reduce()方法的使用详解
  • python生成pyc
  • 国家税务总局票据丢失罚款标准
  • 江苏省电子税务局社保缴费查询
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设