用vulkan写个引擎 (一)综述

https://zhuanlan.zhihu.com/p/466830308

自己写个游戏引擎,这是个有趣的工程实践,vulkan的设备覆盖率已经非常高了。android 7.0以上的设备占比75%左右,iphone 6以上设备90%左右,桌面平台基本都支持,可以预见是个高收益的渲染接口。鉴于本人精力有限才疏学浅,我仅支持vulkan渲染接口,如OpenGL是不支持的。在工程组织方面,考虑良久,最终选择直接使用原始IDE工程,下载完毕即可打开编译调试,最大限度避免卡环境卡编译。

支持平台:android、iOS、macOS、window
开发语言:c语言为主,辅以c++、java和oc
扣扣交流群:554329899

已有功能和部分特点:
0.跨平台c语言基础工具集。 
1.线性代数数学库,定点数,伪随机数。 
2.信号槽组件EventSet。 
3.属性集组件PropertySet。 
4.跨平台系统常用接口抽象层nwsi。 
5.基础的vulkan工具,简化接口使用。 
6.gltf解析和加载,基本款pbr。 
7.小型的GUI组件,支持控件样式和主题皮肤。 
8.用FreeImage支持多种图片格式png、jpeg等。 
9.支持压缩纹理basis和压缩模型draco。 
a.完善的构建系统,可直接打出多平台发布包。 
b.一套tcp基本cs网络,一套前向纠错udp网络。 
c.大部分使用c语言,编译速度快便于调试。 
d.小型的音频播放组件,支持mp3,ogg,wav。

特别说下nwsi。该系统相当于glfw但是功能上多了文字排版组件,并且有更细腻的输入法接口。  
1.系统事件:鼠标、多点触控、按键,输入法等。 
2.文字排版系统使用系统原生接口抽象,免字库。 
3.嵌入式设计更轻量,尽量不破坏宿主工程结构。 
4.该系统可以剥离vulkan独立工作,方便拓展。 

GUI为保留式设计,主要参考cegui、cocos2dx。使用TexturePackage作为图集打包工具。使用类似qt绑定回调函数的方式完成界面逻辑编写。

仓库并不是一个,而是一系列,可自行选用
https://bitbucket.org/mm_longcheng
mm-make dev分支 工程编译多平台脚本工具 
mm-libx dev分支 第三方依赖库构建 
mm-core dev分支 多平台接口抽象工具集 
mm-nes dev分支 可选的nes模拟器内核 
mm-vulkan dev分支 vulkan测试工程 

mm-nes是可选的,mm-vulkan工程临时用到这个库,整合过来纯粹就是好玩,正式完成会去掉依赖。mm-libx可以单独使用,构建你自己的依赖。 

需要环境变量 MM_HOME=<指向检出的以上四个库的主目录> 

编译 
mm-libx 下面运行脚本 script/compile/compile_<需要的平台> 
mm-core 下面运行脚本 script/compile/compile_<需要的平台> 
mm-nes 下面运行类似地址的脚本 

编译的时候注意看一下mm-libx下面的readme.txt,避免出现常见编译问题,遇到问题也可以加群问我。 

工程结构不采用cmake这些外部构建,而是直接使用原始ide工程,需要IDE版本支持: 

1.windows需要visual studio 2017以上 最小支持 win 7 仅有64位版本 
2.xcode需要 xcode Version 12.5.1 以上 最小支持 macos 10.12 ios 12.1 
3.android 需要android studio NDK ndkVersion '21.4.7075529' 最小支持 minSdkVersion 24 

一旦依赖库编译完毕,直接打开对应ide的工程打开即可调试打包。

以下展示ui系统,过程式生成模型,动画系统

以下展示构建界面逻辑的基本套路

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值