本文为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
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 举报,一经查实,本站将立刻删除。