Vulkan其实一直很想好好学的,当初还想借着Piccolo的代码一次学通透,但是又觉得自己OpenGL都没学好,想尽快做点图形学上流体仿真和渲染的东西,加上还有学业研究压力,所以一直都给自己的任务队列提交了太多任务,学习进度非常缓慢,不过总归是有收获的。😀
罗列一下我学习Vk的参考资料,主要有四份:
- 克洛诺斯的喔啃文档,超级详尽 https://github.com/KhronosGroup/Vulkan-Docs
- 喔啃兔兔 https://vulkan-tutorial.com/
- 《Vulkan应用开发指南》,图书馆毛来的蓝书
- 喔啃盖德 https://vkguide.dev/
这几份资料我都推荐作为入门参考书,或者学习字典,遇到不会的概念或者名词能有可信赖的文档查找翻阅,然后再回归代码例子。我闲暇时或者睡前翻阅,大部分内容来来回回看了好几遍,结果发现还真慢慢开始理解了现代GPU管线的设计,越看越是感觉“就应该是这么回事”,之后再看OpenGL觉得隐藏了太多默认,反而觉得有些地方不大清晰了🤣。加上最近Games106开课,再次打开喔啃的代码发现也没有这么晦涩了,可能那个觉悟的时刻快到了,所以就有了翻译文档分享出来的冲动。
至于选择,由于喔啃的代码比较冗长,特别是有些C风格的代码加重了这一点,喔啃兔兔和蓝书能生啃下来其实也不容易消化理解。喔啃盖德很聪明的选择了vk-boostrap( https://github.com/charles-lunarg/vk-bootstrap )优化了喔啃的初始化封装,把命令队列前的工作都打包得非常漂亮,却不影响理解细节和层级分工,个人觉得是达到了可读性和可学习性一个比较好的平衡,加之作者也提到这样的封装是考虑到读者后期引擎开发的便利性,由此去构造的一个代码模板,有助于进一步做自己感兴趣的辅助设计和图形开发。
我会根据自己的学习进度逐步把这份文档翻译过来,希望能做一点点绵薄的贡献,如果能稍稍帮到读者,那就再好不过了。😀