该项目是使用纯 Vulkan 接口在 Windows 、 Linux 和 macOS 平台下渲染一个三角形的示例程序。只用于学习,禁止用于商业。
不需要配置任何环境,直接使用 CMake 导出工程编译即可。
将会输出 VulkanTriangle.exe 可执行程序。
Note
Linux 需要配置如下依赖库:
sudo apt install libx11-dev //cmake
sudo apt install libxrandr-dev //glfw
sudo apt install libxinerama-dev //glfw
sudo apt install libxcursor-dev //glfw
sudo apt install libxi-dev //glfw
sudo apt install libwayland-dev //build
sudo apt install build-essential //build
sudo apt install freeglut3-dev //build 2026/4/30
增加对
Push Constants使用,使得三角形大小随时间变化。更新
triangle.vert使用Push Constants改变三角形大小。适配
Linux窗口大小发生变化。
2025/8/14
移除
CMakeLists.txt中的target_link_directories的使用。冗余。
README.md增加Linux环境下的配置说明。
2024/11/25
动态适配
Swapchain纹素的格式和空间,而不是单独选配某些格式。
TODO: 当所有的 Swapchain 格式都不支持 Color Attachment 时,考虑找到支持拷贝的格式,并使用拷贝显示渲染结果
2024/11/22
增加动态适配
Swapchain纹素的格式和空间,而不是写死。
Note:需要判断Surface打头第一个格式是否支持COLOR_ATTACHMENT
2024/11/18
尝试适配
Swapchain大小改变。优化代码结构
2024/11/15
MacOS系统成功编译。
2024/11/14
动态判断加载
Layer和Extension适配了一版
苹果系统,还未进行测试,不知是否可行。
2024/11/13
成功适配
Deepin V23安装如下
libx11-dev libxrandr-dev libxinerama-dev libxcursor-dev libxi-dev freeglut3-dev
VK_LAYER_KHRONOS_validation验证层找不到,非必须,目前暂时注释掉,修改意见:增加vkEnumerateInstanceLayerProperties(...)的使用。
vkGetPhysicalDeviceSurfaceCapabilitiesKHR(...)获取到的VkSurfaceCapabilitiesKHR::minImageCount不为0而VkSurfaceCapabilitiesKHR::maxImageCount为0。增加了如下判断
vk_swapchain_create_info_khr.minImageCount = std::max(vk_surface_capabilities_khrminImageCount, vk_surface_capabilities_khr.maxImageCount);
