Mac 上布置Vulkan应用 踩坑总结

在这里插入图片描述

大概有一年时间了吧,拖拖拉拉的终于把之前写的vulkan渲染器在mac上跑起来了。

教程里是用的XCode 我这边用的VSCode + CMake

正好熟悉下CMake

刚开始时候对于这些设置这个头痛啊

毕竟在Win上已经跑通很久了 这换个平台又要这么麻烦

感觉什么都是很模糊 毕竟之前接触不多

感觉一切都是蒙着眼睛在往前摸索 遇到问题 很痛苦

所以暂且搁置了很多次 也是拖拉了很长时间

这次能把这个弄完成真的很开心

对于CMakelist的学习 里面的各种配置 头文件目录的引用 库包的链接


在配置完成头文件后 make操作会报错。“Undefined symbols for architecture arm64”

CMakeLists里添加。set(CMAKE_OSX_ARCHITECTURES arm64) 未解决问题

但是在终端里 去file 相关文件 都是支持arm64的

困惑了一段时间 后来对相关的插件重新reinstall 解决


make无异常后 进入程序

glfw的lib 加载异常 感觉是M1芯片 brew install 都是安装在/opt/homebrew 下 不知道有没有关系

所以在CMakelists里加了 set(CMAKE_OSX_CODESIGN_IDENTITY “”) 后 又重新reisntall glfw。解决问题


在进入程序逻辑后 vkCreateInstance 失败 错误码 VK_ERROR_INCOMPATIBLE_DRIVER = -9

后在tutorial里发现解决方法 修改实例的flags

Encountered VK_ERROR_INCOMPATIBLE_DRIVER:

If using MacOS with the latest MoltenVK sdk, you may get VK_ERROR_INCOMPATIBLE_DRIVER returned from vkCreateInstance. According to the Getting Start Notes. Beginning with the 1.3.216 Vulkan SDK, the VK_KHR_PORTABILITY_subset extension is mandatory.

To get over this error, first add the VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR bit to VkInstanceCreateInfo struct’s flags, then add VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME to instance enabled extension list.

Typically the code could be like this:

...

std::vector<const char*> requiredExtensions;

for(uint32_t i = 0; i < glfwExtensionCount; i++) {
    requiredExtensions.emplace_back(glfwExtensions[i]);
}

requiredExtensions.emplace_back(VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME);

createInfo.flags |= VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR;

createInfo.enabledExtensionCount = (uint32_t) requiredExtensions.size();
createInfo.ppEnabledExtensionNames = requiredExtensions.data();

if (vkCreateInstance(&createInfo, nullptr, &instance) != VK_SUCCESS) {
    throw std::runtime_error("failed to create instance!");
}

继续对Shader做Mac上的编译

编译完成后 重新CMake操作

完成 注意导出程序需要依赖的目录关系 比如我导入Shader的文件目录是和build 同级别 所以在make后 重新对文件做了移动操作


完美运行

  • 18
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要在Mac上运行Vulkan,您需要安装MoltenVK软件包。 MoltenVK是一个开源项目,它为Mac OS X和iOS操作系统提供了Vulkan的实现。 MoltenVK通过将Vulkan API转换为Metal API来实现跨平台支持。以下是在Mac上安装和运行Vulkan的步骤: 1. 首先,您需要在Mac上安装Homebrew。打开终端并运行以下命令: ``` /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" ``` 2. 安装MoltenVK。在终端中运行以下命令: ``` brew install --HEAD molten-vk ``` 3. 确认MoltenVK已正确安装。在终端中运行以下命令: ``` vulkaninfo ``` 如果您看到有关您的GPU和Vulkan的信息,则MoltenVK已成功安装。 4. 下载并安装Vulkan SDK。在终端中运行以下命令: ``` curl -L https://vulkan.lunarg.com/sdk/download/1.2.176.1/mac/vulkansdk-macos-1.2.176.1.dmg -o vulkansdk-macos-1.2.176.1.dmg ``` 5. 挂载Vulkan SDK磁盘映像并将其安装。双击vulkansdk-macos-1.2.176.1.dmg文件并按照安装向导完成安装。 6. 设置Vulkan SDK的环境变量。在终端中运行以下命令: ``` export VULKAN_SDK=/path/to/vulkansdk/macOS export PATH=$VULKAN_SDK/bin:$PATH export DYLD_LIBRARY_PATH=$VULKAN_SDK/lib:$DYLD_LIBRARY_PATH ``` 请记得将上面的“/path/to/vulkansdk/macOS”替换为您实际安装Vulkan SDK的路径。 现在您已经可以在Mac上运行Vulkan了。您可以使用Vulkan SDK中提供的示例代码来测试Vulkan是否已正确安装。在终端中导航到示例代码目录并编译示例代码: ``` cd $VULKAN_SDK/1.2.176.1/macOS/samples make -j8 ``` 完成后,您可以运行示例应用程序: ``` ./cube ``` 如果您看到一个旋转的彩色立方体,则表明Vulkan已成功安装并正在运行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值