在 macOS 上开发 Vulkan 程序

2017-11-29  本文已影响366人  _菜菜

Vulkan 作为新的标准图形显示 API 已经发布已久,Windows 和 Linux 上早已由各主流显卡厂商所适配,唯独 macOS 上苹果对 Vulkan 反应迟钝,距 Vulkan 1.0 标准正式发布已经过去了近两年,macOS 仍旧没有提供 Vulkan 的支持。当然苹果没提供官方层面的支持并不代表在 macOS 上就不能开发和“运行”使用 Vulkan API 开发的程序了,MoltenVK 项目提供了一个使用 Metal API 实现的 Vulkan API 兼容的框架,并且提供了一个 GLSL、SPIR-V 与 MSL 三种着色器程序代码离线状态相互转换的工具,这使得在 macOS 上开发 Vulkan 程序成为了可能。

运行环境

开发环境

环境搭建

MoltenVK 官方网站上点击 Free Trial(免费试用)便可下载得到专用 SDK。
为了确保代码的可移植性,我们用 GLFW 与操作系统交互,不过需要注意的是,最新的稳定版并不支持 MoltenVK,git 中的版本则可以做到这一点。
GLFW 官网不提供 macOS 二进制下载,需要自行下载代码编译。编译仅需依赖 CMake,利用第三方包管理或者从 CMake 官网 下载皆可。
在终端中进入到 GLFW 的目录,在其中执行

mkdir build
pushd build
cmake ../ -DVULKAN_LIBRARY=/path/to/libMoltenVK.dylib -DVULKAN_INCLUDE_DIR=/path/to/MoltenVK/include
popd
make --build ./build

需要把 VULKAN_LIBRARYVULKAN_INCLUDE_DIR 手动制定到 MoltenVK SDK 中对应的位置。
在 Xcode 中新建 Command Line 项目,把 build/src 下的 libglfw.a 连同 MoltenVK.framework 添加到项目中,在项目中设定好头文件搜索位置。

image.png

写个 Demo

代码则请参考 黑桃花 的 Vulkan 系列文章。需要注意的是,MoltenVK 并不支持文中所使用的 VK_LAYER_LUNARG_standard_validaction 层,这个步骤跳过即可。
对于 GLSL 编译为 SPIR-V 的步骤,GLSL 转换为 SPIR-V 的工具 MoltenVK 也有提供,在文件夹中的 MoltenShaderConverter/Tools/MoltenShaderConverter,使用 MoltenShaderConverter -gi shader.frag -so frag.spvMoltenShaderConverter -gi shader.vert -so vert.spv 也可以达成同样效果。
最后 ⌘R 运行即可看到效果。

image.png
如果只是想看个结果,请从这里下载经过一定修改后的代码。
这段代码是完全标准的,你可以在Windows和Linux上不需要改动一行就可以运行。祝你们好运吧。
上一篇下一篇

猜你喜欢

热点阅读