Development Environment(开发环境)
1. 安装Vulkan SDK
官网
2. 安装cmake和minGW
2.1 cmake
官网
双击可执行文件,然后直接安装,注意环境变量选择设置,否则需要自己操作。
2.2 minGW
官网
下载如下图所示:
其中:
- x86_64:表示64位硬件平台;
- win32:表示Windows平台程序;
- seh:表示异常处理模式
一般情况下,Windows开发都这样选择。
2.3 环境变量
3. 安装GLFW
官网
3.1 下载GLFW的源码
3.2 编译安装GLFW
C:\glfw-3.3.8\glfw-3.3.8\build> cmake -G "MinGW Makefiles" ..
C:\glfw-3.3.8\glfw-3.3.8\build> mingw32-make install
会有如下输出:
Install the project...
-- Install configuration: ""
-- Installing: C:/Program Files (x86)/GLFW/lib/libglfw3.a
-- Installing: C:/Program Files (x86)/GLFW/include/GLFW
-- Installing: C:/Program Files (x86)/GLFW/include/GLFW/glfw3.h
-- Installing: C:/Program Files (x86)/GLFW/include/GLFW/glfw3native.h
-- Installing: C:/Program Files (x86)/GLFW/lib/cmake/glfw3/glfw3Config.cmake
-- Installing: C:/Program Files (x86)/GLFW/lib/cmake/glfw3/glfw3ConfigVersion.cmake
-- Installing: C:/Program Files (x86)/GLFW/lib/cmake/glfw3/glfw3Targets.cmake
-- Installing: C:/Program Files (x86)/GLFW/lib/cmake/glfw3/glfw3Targets-noconfig.cmake
-- Installing: C:/Program Files (x86)/GLFW/lib/pkgconfig/glfw3.pc
PS C:\glfw-3.3.8\glfw-3.3.8\build>
3.3 拷贝生成库文件
由于自己的项目文件夹,然后设置使用。
4. 创建CMake项目
先把我创建好的项目目录结构展示如下:
├─SelfCode
│ CMakeLists.txt
│ main.cpp
└─ThirtParty├─GLFW └─glm
SelfCode
目录是存放自己编写的代码;
ThirgParty
目录是存放需要的第三方依赖库。
其中,CMakeLists.txt
内容如下:
# 设置cmake最小版本依赖值
cmake_minimum_required(VERSION 3.20.0)# 设置当前项目名称及版本号
project(DrawTriangle VERSION 0.1.0)# 设置CPP版本为 c++17
set(CMAKE_CXX_STANDARD 17)# 可执行二进制文件编译生成
add_executable(DrawTriangle main.cpp)# 设置glfw3库文件的搜索目录,以及搜索,并将其链接到当前可执行二进制文件中
set(glfw3_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../ThirtParty/GLFW/lib/cmake/glfw3)
find_package(glfw3 3.3 REQUIRED)
target_link_libraries(DrawTriangle glfw)# 搜索vulkan库文件,并将其链接到当前可执行二进制文件中
find_package(Vulkan REQUIRED)
target_include_directories(DrawTriangle PRIVATE ${Vulkan_INCLUDE_DIRS})
target_link_libraries(DrawTriangle ${Vulkan_LIBRARIES})
其中,main.cpp
内容如下:
#define GLFW_INCLUDE_VULKAN
#include <GLFW/glfw3.h>#include <iostream>
#include <stdexcept>
#include <cstdlib>class DrawTriangle {
public:// 构造函数,传入窗口宽高DrawTriangle(uint32_t _width, uint32_t _height) :window_width(_width), window_height(_height) {}void Run() {initWindow();initVulkan();mainLoop();cleanup();}private:void initWindow() {glfwInit();glfwWindowHint(GLFW_CLIENT_API, GLFW_NO_API);glfwWindowHint(GLFW_RESIZABLE, GLFW_FALSE);window = glfwCreateWindow(window_width, window_height, "DrawTriangle", nullptr, nullptr);}void initVulkan() {}void mainLoop() {while (!glfwWindowShouldClose(window)) {glfwPollEvents();}}void cleanup() {glfwDestroyWindow(window);glfwTerminate();}private:uint32_t window_width;uint32_t window_height;GLFWwindow *window;
};int main() {DrawTriangle triangle(800, 600);try {triangle.Run();} catch (const std::exception& e) {std::cerr << e.what() << std::endl;return EXIT_FAILURE;}return 0;
}
4.1 编译运行
D:\DrawTriangle\SelfCode\build> cmake -G "MinGW Makefiles" ..
D:\DrawTriangle\SelfCode\build> mingw32-make.exe -j32
D:\DrawTriangle\SelfCode\build> .\DrawTriangle.exe
5. 最终结果
6 代码仓地址
代码仓
欢迎关注,后面会又持续更新。