假设你对opengl比较娴熟了,初学vulkan的时候会不是很爽,因为感觉很多东西和opengl完全对应不上,比如commandBuffer, queue, pipeline, renderpass, descriptor, Fence啥的,你会觉着opengl里完全没有这些东西,事实这些确实opengl里没有,除了pipeline, pipeline就是opengl的program,但是你发现pipeline比program多出来的东西太多了,不会认为是一个东西,因为把opengl的配置全部打包进去了。
所以学vulkan是比较困难的,opengl 300行 出三角形 ,vulkan 要1000行,这都是硬编码的前提下,实际上想要好用是不可能硬编码的,如果要封装库都会更多。
vulkan市面上没有特别好的教材,比如opengl有learnopengl这个神作,vulkan只能看官方教材,那个确实可以用,但不算好,你只是照葫芦画瓢,对背后的原理解释并不到位。至于白皮书,那个更没啥用了,怀疑是机器生成的。
而且vulkan的配置特别多,光是硬编码这些配置就能累个半死,全部弄明白这些配置不太可能,只能挑重点。
当然,最终不管你用什么方法部分掌握了vulkan之后,你会认识到其实有些概念还是能对应上的,只不过vulkan更多了一些东西,或者把原有的东西暴露出更多细节,vulkan因为是c语言,所以很多用c++写成成员函数的东西它就写成普通函数了,你可能看不出这种依赖关系。
所以应该学vulkan还是有点难的,主要是比较枯燥,它没有像learnopengl这么好的教材,官方教材其实就比较垃圾,(勉强能用),所以不是很好学,就像opengl的官方教材也不是很好。如果能出像learnopengl这么好的教材的话,那学vulkan还是会比较愉快的。