洞若观火(三)VSG库依赖库vulkan
·
VSG库依赖vulkan
1. vulkan简介
Vulkan 是由 Khronos Group 推出的一个 低开销、跨平台、面向现代硬件的图形与计算 API(应用编程接口)。它是 OpenGL 的“继任者”,也是和 DirectX 12、Metal(苹果) 同级别的新一代 GPU 编程接口。
- Vulkan SDK:https://vulkan.lunarg.com/sdk/home
- 下载 Windows 64-bit SDK(推荐最新)
VSG编译条件
| 名称 | 说明 | 推荐版本 |
|---|---|---|
| CMake | 构建工具 | ≥3.18(建议3.27+) |
| Visual Studio | C++编译器 | 2019或2022,含C++开发工具集 |
| Vulkan SDK | Vulkan图形API开发包 | ≥1.1.70.0(建议最新) |
| Git | 获取VSG源码 | 最新 |
Vulkan 可以干什么?
-
3D 图形渲染:
做游戏、图形软件(比如3D建模、虚拟现实)、CAD、可视化等,Vulkan 可以直接控制 GPU 渲染图形。 -
计算任务(GPGPU):
除了图形,Vulkan 也可以做 GPU 计算任务(类似 CUDA、OpenCL),例如图像处理、AI 推理等。 -
跨平台开发:
支持 Windows、Linux、Android、Steam Deck 等(苹果系不支持,但有 MoltenVK 可转 Metal)。 -
高性能、低开销:
Vulkan 设计之初就为多核CPU和现代GPU架构,允许开发者手工控制内存管理、命令队列、同步等,提升性能,适合复杂、高帧率应用(如大型游戏或仿真)。
与其他图形库的比较
| 特性 | Vulkan | OpenGL | DirectX 12 |
|---|---|---|---|
| 控制粒度 | 低级(开发者全控制) | 高级(自动管理多) | 低级 |
| 性能 | 高(更少CPU开销) | 中(有驱动开销) | 高 |
| 易用性 | 难(需要写更多代码) | 简单(易入门) | 难(类似 Vulkan) |
| 跨平台 | 跨平台(Win/Linux/Android等) | 跨平台 | 仅Windows/Xbox |
| 多线程渲染支持 | 好(原生) | 差(几乎不支持) | 好 |
2. 支持 Vulkan 的主要开源库/框架
- VTK:实验性 Vulkan backend,但 OpenGL 仍是默认。
- bgfx / Filament / Magnum /Diligent Engine:完整且成熟的 Vulkan 支持,适合替代 OpenGL。
- SDL2 / GLFW / Qt6:适合Vulkan 窗口和输入管理。
- Dear ImGui:可轻松接 Vulkan 作为 GUI。
- 游戏引擎(Unreal/Godot/Unity):已完全支持 Vulkan。
2.1 图形/渲染框架
| 库 / 框架 | Vulkan 支持情况 | 说明 |
|---|---|---|
| VTK | 正在开发中(部分分支支持) | VTK 9.x 实验性 Vulkan 支持,但主分支仍主要基于 OpenGL。Vulkan backend 计划中(未默认启用)。 |
| bgfx | ✔️ 完整支持 | 跨平台渲染库,可选后端包括 Vulkan、OpenGL、DirectX。 |
| Magnum | ✔️ 好 | 现代 C++ 渲染引擎,支持 Vulkan + OpenGL。 |
| Filament (Google) | ✔️ 完整 Vulkan 渲染后端 | 专业级 PBR 渲染引擎,适用于移动、AR、桌面。 |
| Diligent Engine | ✔️ 完整 | 跨平台现代图形库,支持 Vulkan、D3D12、Metal。 |
| Ashes | ✔️ 纯 Vulkan 渲染框架 | 专为 Vulkan 设计,简化多平台渲染。 |
| OGRE-next (OGRE 2.x) | ✔️ 正在集成 | 经典 3D 引擎 OGRE 的新版,Vulkan 渲染器开发中。 |
2.2 GUI & 计算框架
| 库 / 框架 | Vulkan 支持情况 | 说明 |
|---|---|---|
| Dear ImGui | ✔️(通过 backend) | 提供 Vulkan backend 示例,可用于 Vulkan 渲染。 |
| SDL2 | ✔️ | 创建 Vulkan 窗口、处理输入。 |
| Qt 6.x | ✔️ | QVulkanWindow、QShader 等,支持 Vulkan。 |
| GLFW | ✔️ | 提供 Vulkan 窗口 surface 支持。 |
| Vulkan-Hpp | ✔️ | 官方 Vulkan C++ header(仅 API 封装)。 |
2.3 计算/图形混合框架
| 库 / 框架 | Vulkan 支持情况 | 说明 |
|---|---|---|
| TensorFlow (GPU) | ✔️(部分分支) | Vulkan Compute 实验性支持,尚不普及。 |
| MLIR / SPIR-V | ✔️ | Vulkan Compute Shader 的 IR 格式。 |
| OpenCV | ❌(未官方支持 Vulkan) | 仍以 OpenCL/CUDA/Metal 为主,Vulkan compute shader 尚未原生支持。 |
2.4 游戏引擎
| 引擎 | Vulkan 支持情况 | 说明 |
|---|---|---|
| Unreal Engine | ✔️(默认) | UE4/UE5 完全支持 Vulkan。 |
| Unity | ✔️ | 各平台支持 Vulkan。 |
| Godot 4.x | ✔️(默认渲染器) | Godot 4.0 以 Vulkan 为核心。 |
3. Vulkan 进展
科学计算/可视化领域中“可能替代 VTK 且支持 Vulkan”的库 目前确实不多,但以下是经过筛选和分析的可行方案(根据 2025 年现状):
🎯 整体概述是:
| 需求 | 推荐 |
|---|---|
| 想继续 VTK 生态 | 等待 VTK Vulkan 后端 |
| 轻量级、自控管线 | Filament / Diligent Engine |
| 教育、交互式科学工具 | Godot 4.x + Vulkan |
| 极致性能 + 自写算法 | Vulkan Native + ImGui + GLM |
| 简化 OpenGL 替代 | bgfx |
3.1.🎯 VTK 本身(Vulkan backend) — 未来可考虑
- 状态:实验性(部分分支 / 未来主线规划)
- 参考:vtkRenderingVulkan module(目前未默认启用)。
- 适用场景:若坚持使用 VTK 生态,未来可能直接升级到 Vulkan 版本,无需改太多代码。
- 风险:目前尚未正式发布/稳定,2026年或更晚正式可用。
3.2.🎯 Filament(Google) — 科学可视化潜力股
- 语言:C++
- 支持:Vulkan、OpenGL、Metal
- 特点:
- 专业级 PBR 渲染器(图形质量远超 VTK OpenGL)。
- 支持 3D 网格、曲面、体绘制(Volume Rendering),适合科学/医疗/工程可视化。
- 拥有 Vulkan 专用后端,且 Google 在积极维护。
- 缺点:
- 没有 VTK 那样的“高阶可视化”模块(如等值面、流线、切片)。
- 需自行扩展可视化算法。
- 适用场景:高性能 3D 显示、科学渲染、VR/AR。
- 👉 GitHub: https://github.com/google/filament
3.3.🎯 Diligent Engine — 科学与通用计算结合者
- 语言:C++
- 支持:Vulkan、D3D12、OpenGL、Metal
- 特点:
- 支持图形与计算(Compute Shader)。
- 适合需要图形+科学计算(如点云、体积渲染)的场景。
- 提供封装的高效图形管线,可类比 VTK 的低层封装。
- 缺点:
- 无现成高阶科学可视化组件(需手写 pipeline)。
- 学习曲线略高。
- 适用场景:高性能科学渲染,尤其是自定义几何、点云处理。
- 👉 GitHub: https://github.com/DiligentGraphics/DiligentEngine
3.4.🎯 bgfx — 跨平台简单图形库
- 语言:C++
- 支持:Vulkan、OpenGL、Metal、D3D
- 特点:
- 易于集成。
- 支持 Mesh、Volume 渲染(但需自写)。
- 缺点:
- 没有 VTK 的算法库(如 Marching Cubes)。
- 适用场景:轻量 3D 显示、科学模型渲染。
- 👉 GitHub: https://github.com/bkaradzic/bgfx
3.5.🎯 Godot 4.x Engine(改为科学可视化)
- 语言:C++ / GDScript
- 支持:Vulkan(默认)、OpenGL
- 特点:
- 强大且免费。
- 支持 Volume、Shader 编程、3D 模型处理。
- 缺点:
- 专为游戏设计,科学计算需自己扩展。
- 适用场景:交互性强的 3D 科学应用(如虚拟实验室、教育可视化)。
- 👉 官网: https://godotengine.org/
⚠️ 不推荐的原因
| 库 | 原因 |
|---|---|
| OpenCV | 没有 Vulkan 渲染/可视化支持。 |
| Assimp | 仅为模型导入,无渲染能力。 |
| VTK 9.x(OpenGL 分支) | 仍旧以 OpenGL 为主,无 Vulkan 渲染。 |
3.6.🎯 Vulkan 原生 + Dear ImGui + GLM + SPIR-V (纯定制方案)
如果你要做:
- 自定义点云/网格渲染。
- 科学级 Volume Rendering。
- 完全控制渲染管线(如 VTK 的 Marching Cubes / Clip Plane / Streamlines 等)。
可以考虑直接用 Vulkan 原生:
- GLM:数学库(代替 VTK 的数学)。
- SPIR-V Cross/Reflect:Shader 编译器。
- Dear ImGui Vulkan backend:作为科学工具 GUI。
- 自写 compute pipeline:支持科学计算(代替 VTK filter)。
✔️ 性能极致,❌ 代码工作量巨大。
更多推荐
所有评论(0)