Vulkan是Khronos组织(以OpenGL闻名)发布的新一代图形API。这一新的API可以更好地抽象了当前主流的显卡,并且相比于OpenGL 和Direct3D,拥有更好的性能,更轻便的驱动程序。Vulkan 在设计上类似于Direct3D 12 和Metal,但比之后两者,Vulkan是跨平台的,可以在Windows,Linux和Android平台上使用。
然而更精准的控制,意味着更繁琐的细节。这就需要我们在应用程序中正确地做更多的工作,其中包括创建初始时使用的帧缓冲,及对缓冲和纹理图像的内存管理。
Vulkan并非适合所有人,它是为追求计算机图形性能极限程序员设计的。如果你对游戏开发更感兴趣,或许OpenGL或者Direct3D更适合你,它们在短期内仍然会是主流,另外一种可选方案是使用Unreal或是Unity引擎,他们可以使用Vulkan且给你提供了更高级别的API。目前还有大量的设备尚未支持Vulkan。
起源
以往许多图形API采用固定功能渲染管线设计,程序员必须按照标准格式提供顶点数据,并且在光照和着色选项受GPU制造商的支配。随着显卡架构逐渐成熟,提供了越来越多的可编程功能,这些功能被集成到原有的API中。使得驱动程序要做的工作越来越复杂,应用程序开发者要处理的兼容性问题也越来越多。
其次过去十年移动设备配备了功能强大的图形硬件,移动GPU基于他们的功耗和空间限制拥有不同的架构,例如Tied-rendering可以通过给程序员提供更多的GPU控制功能来提升效率。
过去的APIs对多线程的支持也非常不足,可能导致CPU方面的瓶颈。
Vulkan完全按照现代图形架构设计,给开发者提供了更加详细的API ,大大减少了驱动程序的开销,允许多个线程并行创建和提交指令,使用标准化的着色器字节码,并且将图形和计算功能API进行统一。
启动
为了上手Vulkan应用开发,需要具备些条件:
• 支持Vulkan 的显卡以及驱动程序
• C++ 编程知识(c++11, 熟悉RAII)
• 编译器(Visual Studio 2013+,GCC 4.8+,Android Studio)
• 计算机图形学基础
资源
• 帮助了解图形学方面的知识:https://learnopengl.com/
• 如何使用Vulkan基本图形和计算API:https://vulkan-tutorial.com/
• Vulkan应用示例源码:https://github.com/SaschaWillems/Vulkan
• 下载一份Vulkan规范:https://www.khronos.org/registry/vulkan/
延伸
Khronos Group 是由其成员所提供之基金支持的行业协会,专注于创立开放标准,免授权费的移动设备接口程序API, 用以实现多样化平台及设备上的高质量动态多媒体创作和加速。其设立的部分标准:
来源:vulkaner,转载此文目的在于传递更多信息,版权归原作者所有。