QT3D学习

QT3D学习

概述:

Qt3D 采用游戏开发中的 ECS 构架。

游戏开发中的ECS 架构概述_钢与铁的博客-CSDN博客_ecs架构

ECS全称Entity-Component-System(实体-组件-系统),是基于组合优于继承(将不变的部分使用继承以方便复用, 将多变的部分用组合来方便拓展)的原则的一种模式,游戏中的每一个单元(怪物、相机等)都是一个实体,每个实体又是由一个或多个组件构成的,每个组件仅包含该组件需要关注的数据(例如技能组件保存技能伤害、范围),而系统则用来处理这些实体的集合,其只存逻辑,不存状态,类似于一个工具,例如技能系统会根据遍历到的每一个拥有技能组件的实体,根据状态执行技能。

功能学习

1:QMaterial 材质纹理

QT纹理贴图的使用

注意:

A:指定图片的路径时要用QUrl::fromLocalFile 转才可以,不能直接用QString,好像是编码的原因。

B:setDiffuse(const QVariant &diffuse),这个参数是QVariant类型的,要使用纹理QTextureLoader、QTexture2D等时,要使用QVariant::fromValue(TextureLoader)或QVariant::fromValue(qobject_cast<QObject*>(Texture2D))才可以传递进去。

QDiffuseSpecularMaterial diffuse texture | Qt ForumI eventually found this to work for me texture = new Qt3DRender::QTexture2D(); material = new Qt3DExtras::QDiffuseSpecularMaterial(); material->setAlphaBlendingEnabled(true); material->setAmbient(QColor(0xff,0xff,0xff,0x00)); // SymbolImage is my subclass...https://forum.qt.io/topic/106370/qdiffusespecularmaterial-diffuse-texture/6

 

2:天空盒 Qt3DExtras::QSkyboxEntity

注意两点:

A:setBaseName的文件路径的问题,要用QUrl::fromLocalFile转一下才可以,直接写QString不行,好像是编码的问题。

B:注意图片的名字后面要是以 _negx,_negy,_negz,_posx,_posy,_posz 这六个结尾才可以。box是图片名字的前面,"D:/SkyBox/box" 这个路径只是写了一半的图片名。

Qt3DExtras::QSkyboxEntity *Skybox = new Qt3DExtras::QSkyboxEntity(root);

Skybox->setBaseName(QUrl::fromLocalFile("D:/SkyBox/box").toString());

Skybox->setExtension(".jpg");

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值