Mac端搭载Vulkan的开发环境

本文为Vukan学习系列的第三篇文章,主要内容为在Mac端搭载Vulkan的开发环境。

后续的内容都是先基于Mac开发,系列内容讲解完毕后再迁移到Android平台

首先确保Mac中已经安装Xcode和Homebrew

1. 下载Vulkan SDK并安装

// vulkan官网下载对应平台的sdk,这里选择mac端
https://vulkan.lunarg.com/sdk/home#mac

这里我们选择的是最新的1.3.224.1的版本,可以看到SDK下包括了MoltenVK

图片

安装好SDK后可以跑一下Applications目录下的vkcube,如果成功运行说明你的电脑是支持Vulkan的

图片

2. 安装GLFW和GLM

Vulkan是平台无关的图形与计算API,创建本地窗口的能力依赖其它库。这里我们采用GLFW来支持

(GLFW的主要功能是创建并管理窗口和OpenGL上下文,同时提供了处理手柄、键盘、鼠标输入的功能。最新版本已经支持Vulkan)

Vulkan不提供矩阵运算的能力,这里我们选择GLM来支持(也是和OpenGL一起搭配干活的老员工了)

两个库都是通过homebrew进行安装

brew install glfw
brew install glm

最终安装的版本和实际路径如下:

/usr/local/Cellar/glfw/3.3.8/

/usr/local/Cellar/glm/0.9.9.8/

软连接和头文件的路径如下:

/usr/local/lib

/usr/local/include

后面在Xcode配置头文件和lib文件search path的时候用上面的任意一种路径均可

3. Xcode环境配置

新建工程,语言选择C++

图片

配置Vulkan、glfw和glm的头文件/lib文件的search path

图片

链接lib

图片

添加环境变量(Product -> Scheme -> Edit Scheme )

VK_LAYER_PATH = /Users/xyq/VulkanSDK/1.3.224.1/macOS/share/vulkan/explicit_layer.d
VK_ICD_FILENAMES = /Users/xyq/VulkanSDK/1.3.224.1/macOS/share/vulkan/icd.d/MoltenVK_icd.json
Mac端搭载Vulkan的开发环境

4. 测试

运行如下代码测试环境配置是否正常

#define GLFW_INCLUDE_VULKAN
// 定义GLFW_INCLUDE_VULKAN宏,内部会自动导入#include <vulkan/vulkan.h>
#include <GLFW/glfw3.h>

#define GLM_FORCE_RADIANS
#define GLM_FORCE_DEPTH_ZERO_TO_ONE
#include <glm/vec4.hpp>
#include <glm/mat4x4.hpp>
 
#include <iostream>
 
int main() {
    // 初始化GLFW库
    glfwInit();
 
    // GLFW最早是为OpenGL设计
    // 所以此处需要显式的设置GLFW阻止自动创建OpenGL上下文
    glfwWindowHint(GLFW_CLIENT_API, GLFW_NO_API);
    
    // 创建窗口
    GLFWwindow* window = glfwCreateWindow(800, 600, "Vulkan window", nullptr, nullptr);
 
    // 查询本机支持的扩展属性
    uint32_t extensionCount = 0;
    vkEnumerateInstanceExtensionProperties(nullptr, &extensionCount, nullptr);
 
    std::cout << extensionCount << " extensions supportedn";
 
    // 测试glm
    glm::mat4 matrix;
    glm::vec4 vec;
    auto test = matrix * vec;
 
    // 未主动close时持续消费点击event
    while(!glfwWindowShouldClose(window)) {
        glfwPollEvents();
    }
 
    // 销毁window
    glfwDestroyWindow(window);
 
    glfwTerminate();
 
    return 0;
}

运行效果如下:

图片

可以看到我们的环境配置工作已经成功搞定!

~~END~~更多精彩好文欢迎关注公众号—— 雪月清的随笔

版权声明:本文内容转自互联网,本文观点仅代表作者本人。本站仅提供信息存储空间服务,所有权归原作者所有。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至1393616908@qq.com 举报,一经查实,本站将立刻删除。

(0)

相关推荐

发表回复

登录后才能评论