0
点赞
收藏
分享

微信扫一扫

用vulkan写个引擎 (一)综述

Go_Viola 2022-02-28 阅读 156
c语言

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语言,编译速度快便于调试。 

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

GUI为保留式设计,主要参考cegui、cocos2dx。使用TexturePackage作为图集打包工具。

仓库并不是一个,而是一系列,可自行选用
https://bitbucket.org/mm_longcheng
mm-make dev分支 工程编译多平台脚本工具 
mm-libx master分支 第三方依赖库构建 
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的工程打开即可调试打包。

举报

相关推荐

0 条评论