大连做网站那个公司最好,帮忙网页设计师,安庆专业网站建设公,dedecms 5.7 通用企业网站模板1. 为什么选择Vulkan#xff1f;从零开始的动力 如果你和我一样#xff0c;是个对图形编程充满好奇的开发者#xff0c;可能早就听说过OpenGL的大名#xff0c;也听说过DirectX的威名。但当你开始深入#xff0c;尤其是想榨干你那块显卡的每一分性能#xff0c;或者想跨平…1. 为什么选择Vulkan从零开始的动力如果你和我一样是个对图形编程充满好奇的开发者可能早就听说过OpenGL的大名也听说过DirectX的威名。但当你开始深入尤其是想榨干你那块显卡的每一分性能或者想跨平台比如兼顾Windows、Linux甚至移动端开发时一个名字会越来越频繁地出现Vulkan。Vulkan到底是什么你可以把它理解为一个“低开销、高性能”的图形和计算API。和OpenGL那种“大管家”式的风格不同Vulkan更像一个“工具箱”。它把很多控制权交还给了开发者比如内存管理、多线程渲染的同步这意味着你需要写更多的代码来管理这些细节但换来的是极致的性能和灵活性。对于现代的多核CPU和多GPU系统Vulkan能更好地发挥硬件潜力。我当初想学Vulkan就是被一个用Vulkan渲染的、画面细节爆炸的Demo给震撼到了心想“我的显卡居然还能这么用”那么在Windows上搞Vulkan开发第一步也是最关键的一步就是把环境给搭起来。这个过程说难不难但细节不少尤其是对于刚接触的“小白”来说很容易在配置依赖库、链接库文件这些环节上卡壳。我自己第一次搭环境就花了小半天踩了好几个坑。所以这篇攻略就是把我趟过的路、踩过的坑都总结出来手把手带你从零开始在Windows上把Vulkan的开发环境配置得明明白白最后还能跑起来一个验证程序看到成果。咱们的目标是不报错一次过。2. 环境准备兵马未动粮草先行在开始下载安装任何东西之前我们先得搞清楚需要准备哪些“粮草”。Vulkan开发不是一个孤立的SDK就能搞定的事情它需要一个完整的“生态位”。2.1 硬件与操作系统检查首先最基础的是你的硬件和系统。Vulkan是一个现代的API对硬件有一定要求。显卡这是核心。你的显卡需要支持Vulkan。好消息是近几年主流的NVIDIA GeForceGTX 10系列及以后、AMD RadeonRX 400系列及以后和Intel第7代酷睿及更新的核显都提供了良好的Vulkan支持。你可以去显卡制造商的官网查看具体型号的支持情况。操作系统我们聚焦Windows。Windows 10版本1709或更高和Windows 11是官方推荐且支持最好的。我自己的环境是Windows 11 23H2整个过程非常顺畅。驱动请务必更新你的显卡驱动到最新版本这是避免无数诡异问题的关键一步。去NVIDIA、AMD或Intel的官网下载最新的Game Ready或Studio驱动它们通常包含了最新的Vulkan运行时和功能支持。怎么快速检查你的硬件是否支持Vulkan呢有个很简单的方法下载一个叫“GPU-Z”的小工具运行后看“Advanced”标签页里有没有“Vulkan”这一项并且状态是支持的。或者更直接一点等我们装完SDK后用SDK自带的工具来验证。2.2 开发工具选择Visual Studio是首选在Windows上进行C开发Visual Studio无疑是体验最好的集成开发环境IDE它对Vulkan的支持也最成熟。社区版Visual Studio Community是免费的功能对于学习和个人开发完全足够。我使用的是Visual Studio 2022版本是17.4.10。建议你也安装2022或更新版本。在安装VS时记得勾选“使用C的桌面开发”这个工作负载它会包含我们需要的编译器MSVC、链接器和基本的Windows SDK。其他的像“.NET桌面开发”之类的如果你用不到可以不选以节省磁盘空间。如果你偏爱其他编辑器如VS Code配合CMake那也是完全可行的但配置过程会稍微复杂一些涉及到工具链和生成文件的设置。为了让入门更平滑这篇指南我们还是以Visual Studio为例因为它能帮我们处理很多底层的工程配置问题。3. 核心组件安装一步步搭建舞台好了基础打牢了现在开始安装主角和它的“搭档们”。3.1 获取并安装Vulkan SDKVulkan SDK是LunarG公司由Khronos Group支持官方维护的软件开发包它包含了头文件、库文件、验证层、调试工具和一大堆有用的示例程序。这是我们开发的基础。前往官网打开浏览器访问 Vulkan SDK 的官方下载页面https://vulkan.lunarg.com/sdk/home。页面会自动检测你的操作系统通常直接就会显示Windows的下载选项。选择版本你会看到最新的稳定版SDK。我写这篇文章时版本是1.4.321.1。就下载这个最新版即可。注意选择适合你系统的安装包。对于绝大多数64位Windows系统你应该下载那个名字里带“x64”或者“64-bit”的安装程序例如VulkanSDK-1.4.321.1-Installer.exe。运行安装下载完成后以管理员身份运行安装程序。安装过程非常直观。安装路径建议使用默认路径通常是C:\VulkanSDK\版本号。这样后续很多工具和示例的预设路径都会正确。如果你非要改请记住你改到了哪里后面配置环境变量需要。组件选择安装程序会让你选择组件。对于初学者我强烈建议使用“完整安装”把所有的组件都勾选上。这包括了核心SDK、调试工具如RenderDoc集成、验证层、离线文档和大量的示例代码。这些示例是极好的学习资源安装时一起搞定最省事。就像我当初一样图个省心全选了。验证安装安装完成后一个非常简单的验证方法是按下Win R输入cmd打开命令提示符然后输入vulkaninfo并回车。如果安装成功这个命令会运行并开始刷屏输出你系统上Vulkan的详细信息包括支持的扩展、设备属性等。你可以按CtrlC中断它。如果能运行说明SDK的基础部分安装成功了。3.2 配置GLFW创建窗口的利器Vulkan本身不负责创建和管理窗口这是平台相关的工作。我们需要一个库来帮我们处理这些琐事。GLFW就是一个非常优秀、轻量级且跨平台的选择。它用起来简单而且官方Vulkan教程也用它。下载GLFW访问GLFW的官网https://www.glfw.org/download.html。在“Windows pre-compiled binaries”部分下载64位的预编译库文件比如glfw-3.4.bin.WIN64.zip。解压与放置将下载的ZIP文件解压。你会得到一个包含include和lib-vc2022或类似取决于GLFW版本等文件夹的目录。我的做法是在某个固定的地方比如D:\DevLibs创建一个GLFW文件夹然后把解压出来的内容整个扔进去。这样你的路径可能像D:\DevLibs\GLFW\glfw-3.4.bin.WIN64。记住这个路径后面在Visual Studio里需要告诉它去哪里找头文件和库文件。理解文件结构include/GLFW/这里面是GLFW的头文件.h我们写代码时#include GLFW/glfw3.h就是指向这里。lib-vc2022/这里面是编译好的库文件。通常你会看到两种glfw3.lib这是用于“Release”模式编译的静态导入库。glfw3d.lib这是用于“Debug”模式编译的静态导入库带调试信息。3.3 配置GLM数学计算好帮手图形编程离不开大量的数学运算特别是向量和矩阵。GLMOpenGL Mathematics是一个只有头文件的C数学库它的接口设计模仿了GLSL着色器语言的风格用起来非常顺手而且是Vulkan/OpenGL社区的标配。下载GLM访问GLM在GitHub的发布页面https://github.com/g-truc/glm/releases。下载最新的稳定版比如glm-1.0.1.zip。同样它是一个只有头文件的库。放置头文件解压下载的ZIP文件。你会看到一个glm文件夹里面全是.hpp头文件。和GLFW类似我在D:\DevLibs下创建了一个GLM文件夹然后把整个glm文件夹注意是包含很多子文件夹的那个glm目录复制进去。最终路径类似D:\DevLibs\GLM\glm。这样在代码中就可以通过#include glm/vec4.hpp来引用了。4. Visual Studio项目配置让一切连接起来这是最关键也最容易出错的一步。我们需要在Visual Studio中创建一个新项目并告诉它去哪里找Vulkan、GLFW、GLM的头文件去哪里链接它们的库文件。4.1 创建新项目与基础设置打开Visual Studio 2022选择“创建新项目”。选择“控制台应用”Console App模板项目类型选C然后点击“下一步”。给你的项目起个名字比如HelloVulkan选择好项目存放的位置点击“创建”。项目创建好后我们需要先调整一些基础属性。在“解决方案资源管理器”中右键点击你的项目名HelloVulkan选择“属性”。确保左上角的“配置”是“所有配置”这样我们对Debug和Release的修改能同时生效。“平台”选择“x64”。我们开发64位程序。4.2 包含目录配置告诉编译器头文件在哪在属性页中依次展开“配置属性” - “C/C” - “常规”。找到“附加包含目录”点击右侧的下拉箭头选择“编辑”。这里我们需要添加三个路径Vulkan SDK的头文件路径通常是C:\VulkanSDK\你的版本号\Include。请根据你的实际安装路径修改。GLFW的头文件路径比如D:\DevLibs\GLFW\glfw-3.4.bin.WIN64\include。GLM的头文件路径比如D:\DevLibs\GLM。注意是包含glm文件夹的那个上级目录这样编译器才能正确找到glm/vec4.hpp这样的路径。添加完成后点击“确定”。现在编译器就知道去哪里找vulkan.hGLFW/glfw3.h和glm/vec4.hpp了。4.3 库目录配置告诉链接器库文件在哪在属性页中依次展开“配置属性” - “链接器” - “常规”。找到“附加库目录”点击编辑。这里我们需要添加库文件的搜索路径Vulkan SDK的库路径通常是C:\VulkanSDK\你的版本号\Lib。GLFW的库路径比如D:\DevLibs\GLFW\glfw-3.4.bin.WIN64\lib-vc2022。点击“确定”。4.4 附加依赖项配置具体链接哪个库在属性页中依次展开“配置属性” - “链接器” - “输入”。找到“附加依赖项”点击编辑。这里我们需要手动输入要链接的库文件名。对于Debug和Release配置我们需要链接的库是不同的。首先确保左上角“配置”下拉框选的是“Debug”。然后在输入框中添加glfw3d.lib vulkan-1.lib接着把“配置”下拉框切换到“Release”。然后在输入框中添加glfw3.lib vulkan-1.lib注意glfw3d.lib是Debug版本glfw3.lib是Release版本Vulkan的库则是一样的。分别点击“确定”保存。4.5 一个重要的额外步骤复制DLL文件可选但推荐GLFW的预编译库是动态链接的.dll。这意味着编译时我们链接的是.lib文件但程序运行时需要找到对应的.dll文件。为了让我们的可执行文件能直接运行最简单的方法是把DLL复制到项目生成的可执行文件旁边。找到你GLFW目录下的lib-vc2022文件夹。在里面找到glfw3.dll对应Release文件。在Visual Studio的“解决方案资源管理器”中右键点击你的项目选择“在文件资源管理器中打开文件夹”。进入与你的解决方案.sln文件同级的目录你应该能看到一个以你项目名命名的文件夹例如HelloVulkan里面应该有Debug和Release子文件夹如果你已经编译过。将glfw3.dll文件分别复制到Debug和Release文件夹中。 这样做之后无论你在IDE里调试Debug模式还是直接运行Release版的exe都能找到所需的DLL。5. 编写并运行测试程序见证成功的时刻环境配置好了我们来写一个最简单的Vulkan程序验证一下。这个程序不渲染任何东西只做三件事初始化GLFW、创建一个窗口、查询Vulkan支持的扩展数量。如果这个能成功运行说明你的环境配置完全正确5.1 替换主程序代码打开Visual Studio项目中自动生成的HelloVulkan.cpp文件或者你自己创建的主源文件将里面的内容全部删除替换为以下代码#define GLFW_INCLUDE_VULKAN // 这个宏必须定义在包含glfw3.h之前它告诉GLFW自动包含vulkan.h #include GLFW/glfw3.h #define GLM_FORCE_RADIANS // 让GLM使用弧度制 #define GLM_FORCE_DEPTH_ZERO_TO_ONE // 让GLM的深度范围是[0, 1]这是Vulkan的标准 #include glm/vec4.hpp #include glm/mat4x4.hpp #include iostream int main() { // 1. 初始化GLFW库 glfwInit(); // 2. 告诉GLFW我们不要它创建OpenGL上下文我们要用Vulkan glfwWindowHint(GLFW_CLIENT_API, GLFW_NO_API); // 3. 创建一个窗口暂时不显示也没关系 GLFWwindow* window glfwCreateWindow(800, 600, My First Vulkan Window, nullptr, nullptr); // 4. 查询Vulkan实例支持的扩展数量这是Vulkan API的第一次调用 uint32_t extensionCount 0; vkEnumerateInstanceExtensionProperties(nullptr, extensionCount, nullptr); // 5. 打印结果到控制台 std::cout Vulkan is ready! Number of supported extensions: extensionCount std::endl; // 6. 使用一下GLM库确保它被正确链接这行代码没有实际作用仅作测试 glm::mat4 matrix; glm::vec4 vec; auto test matrix * vec; // 这个乘法运算实际上不会被执行因为变量未使用但编译器会处理类型。 // 7. 一个简单的事件循环防止窗口创建后立即关闭 while (!glfwWindowShouldClose(window)) { glfwPollEvents(); // 处理窗口事件如点击关闭按钮 } // 8. 清理资源 glfwDestroyWindow(window); glfwTerminate(); return 0; }5.2 编译与运行在Visual Studio顶部的工具栏确保“解决方案配置”选的是“Debug”或“Release”建议先用Debug方便调试 “解决方案平台”是“x64”。按下F7键或点击“生成 - 生成解决方案”。如果前面所有步骤都正确你应该会在下方的“输出”窗口看到“生成成功”的字样。如果有任何错误请根据错误信息回头检查最常见的问题是头文件路径、库路径或附加依赖项设置错误。生成成功后按下F5键或点击“调试 - 开始调试”来运行程序。5.3 验证结果程序运行后会弹出一个黑色的控制台窗口和一个标题为“My First Vulkan Window”的空白图形窗口。重点看控制台窗口的输出。如果一切顺利你会看到类似这样的输出Vulkan is ready! Number of supported extensions: 256这个数字扩展数量可能因你的显卡和驱动版本而异只要它不是0就大功告成了这证明Vulkan SDK安装正确编译器找到了vulkan.h。GLFW库链接正确窗口创建成功。你的显卡驱动支持Vulkan并且程序成功调用了Vulkan API。GLM库也被正确包含。你可以点击图形窗口的关闭按钮或者回到控制台窗口按任意键来结束程序。6. 常见问题与排坑指南第一次配置很难一帆风顺这里我总结几个我遇到过以及新手朋友常问的问题。6.1 “无法打开源文件 vulkan.h” 或 “无法打开 GLFW/glfw3.h”这是最典型的包含目录配置错误。检查项目属性 - C/C - 常规 - 附加包含目录。确保你添加的路径是文件夹的绝对路径并且路径确实存在这些头文件。特别注意Vulkan SDK的版本号文件夹名是否正确。技巧在附加包含目录的编辑框里可以点击那个文件夹图标然后直接浏览到对应的Include或include文件夹这样能避免手动输入出错。6.2 “无法解析的外部符号”链接错误LNK2019这是库文件链接错误。错误信息通常会告诉你哪个函数找不到比如glfwInit或者vkEnumerateInstanceExtensionProperties。检查步骤库目录项目属性 - 链接器 - 常规 - 附加库目录。路径是否正确附加依赖项项目属性 - 链接器 - 输入 - 附加依赖项。你输入的.lib文件名拼写是否正确Debug和Release配置是否区分开了Debug用glfw3d.libRelease用glfw3.lib。平台一致性确保项目属性左上角平台是x64并且你下载的GLFW库也是64位x64/WIN64的。32位和64位的库不能混用。6.3 程序运行时崩溃或提示“找不到 glfw3.dll”这是运行时动态库缺失。解决按照第4.5节的方法将glfw3.dll复制到你的可执行文件.exe所在的目录下Debug或Release文件夹。你也可以将包含这个DLL的目录如GLFW的lib-vc2022添加到系统的PATH环境变量中但前者更简单直接。6.4vkEnumerateInstanceExtensionProperties返回0如果扩展数量打印出来是0说明Vulkan API调用失败了但程序没崩溃。首要原因显卡驱动太旧。请务必去官网更新到最新版驱动。其次可能Vulkan运行时未正确安装。可以重新运行Vulkan SDK安装程序选择“Repair”进行修复。再次运行vulkaninfo命令看是否能正常输出信息。6.5 想用CMake管理项目怎么办很多开源Vulkan项目使用CMake。如果你也想尝试可以确保安装了CMake工具。在项目根目录创建CMakeLists.txt文件。使用find_package(Vulkan REQUIRED)和find_package(glfw3 REQUIRED)来查找库。对于GLM因为它只有头文件通常直接用include_directories(path/to/glm)。使用target_link_libraries(your_target Vulkan::Vulkan glfw)来链接。 这种方式更通用但需要一些CMake的基础知识。对于纯Windows初学者先用Visual Studio的图形化配置把流程走通理解各个部分的作用之后再迁移到CMake会更轻松。走到这一步看到控制台打印出支持的扩展数量你的Windows Vulkan开发环境就已经宣告搭建成功了。这只是一个开始后面还有更精彩的渲染管线、着色器、纹理等内容等着你去探索。环境搭好了就像有了趁手的工具接下来就可以尽情地学习和创造。我建议你接下来可以去看看Vulkan官方教程https://vulkan-tutorial.com或者LunarG SDK自带的那些示例程序它们都是极好的学习材料。记住图形编程的学习曲线比较陡遇到问题多查文档、多搜索社区里有很多热心的开发者。祝你学习愉快