Skip to content

931122/laka_vulkan

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

laka::vulkan

为Vulkan添加Cpp封装.

开源协议

zlib/libpng License.
大致意思就是可以随便用,但不能剽窃,不能说是自己原创的.

目标

  • 不省略功能
    严格参照官方手册,对所有功能都提供使用途径.

  • 使用方便
    处理生成依赖管理生命周期,减少API调用参数,能自动完成的就让它自动完成.

  • 易上手
    丰富的信息输出,引导性的接口设计,避免出错的措施.

目前进度

(大部分功能没测试过 阶段性整理散乱的代码 目前只保证语法正确过编译 欢迎发现和提交问题)

(目前正在改 不能过编)

  • 建立API列表
  • 基础设计
  • 处理生成依赖
  • 确定API归属
  • 简化参数
    • 为位标提供封装(自动生成代码)
    • 为pNext提供封装(自动生成代码)
    • 为enum提供封装(自动生成代码)
    • 进一步封装struct(自动生成代码)
    • 创造些类型 用于简化
  • 修正生命周期
  • 绘制描述图.
    • 封装层的描述图
    • 封装层与API的关系图.
  • 整理代码出个版本
    • 只包含一个头文件,以及一个Cpp文件.
  • 英文版.

源码使用建议

目前完成度上还不够,还要面临很多修改的可能,现阶段不提供详细的说明.

那什么时候提供呢? 当它可以用了,我会总结出一个文章放在知乎专栏,专门介绍.

不过可以介绍一下项目文件:

真正核心的就是vk.h和vk.cpp了. 我希望项目成型后,使用者就放这两个文件到项目里就能用,干净利落没有任何麻烦的地方.

classes.h: 类的前置声明.这种文件独立存在,仅仅是为了编码时看得舒服点.

common.h common.cpp: 一些宏,以及具有通用性的函数.比如加载dll模块,为spdlog定义的宏等.

laka_vk_define.h: 用来存放有关vulkan api的列表,我净化代码用(懒)的技巧.

vk_shortcut.cpp: 里面的内容主要跟简化api参数有关.

vk_mean.h vk_mean.cpp: 专门用来写解释vk各种枚举 结构体的功能,为使用者省去查手册的麻烦(当然也有点过度负责, 还要随时保持和手册同步, 这也是最苦力的工作量了吧).

名为vk 的excel文件: 存放一些整理后的vulkan的信息.有点参考价值.

资料

目前全靠看官方文档做:

为什么封装?

  • 对官方的Cpp封装,我自己感觉使用起来还是不够方便. 封装是千差万别的,不然也不会绞尽脑汁自己搞封装.

  • 基于我自身对Vulkan的兴趣,封装它也是学习的过程.

  • 面对一辆方轮自行车, 有的人直接骑上它,努力骑行,以此夸自己力气大. 这样的人很自我享受.
    但相对而言我更乐意对它外边套一层变成圆形,骑圆轮自行车.

欢迎一起完善它 或者 参与讨论

本项目需要绞尽脑汁满足目标 也考验阅读文档、整理信息的能力和耐心.

Q群:679351558

做人要真诚,非诚勿扰.

如何配置Vulkan开发环境?

请参考:https://zhuanlan.zhihu.com/p/44502301

About

laka库 用Cpp封装Vulkan

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 95.4%
  • Python 3.9%
  • C 0.7%