第 1 章 VulkanSceneGraph 是什么本章定位概念导论。先建立对 VSG 的整体认知再在后续章节逐步落到代码。本教程统一采用「目标 → 前置准备 → 正文 → 小结 → 延伸阅读」的结构带代码的章节扩展为九段式见第 5 章模板。1.1 本章目标学完本章你将能够用一句话说清 VulkanSceneGraphVSG是什么理解 VSG 的设计理念与底层渲染模型讲清楚 VSG 与 OpenSceneGraphOSG的「继承」与「决裂」判断 VSG 相比传统场景图的核心优势是否契合你的项目。1.2 前置准备本章为纯概念章无需代码或构建环境可直接阅读。建议配合第 2 章《架构概览》一起看建立「模块 → 职责」的地图。1.3 VSG 是什么设计理念VulkanSceneGraph简称 VSG是一个现代、开源、面向 Vulkan 的场景图Scene Graph库。它的核心目标只有一个让你用「场景图」这种高层、直观的方式组织 3D 世界同时把世界高效地渲染到屏幕上——而「高效」来自它直接构建在 Vulkan 之上而不是套一层 OpenGL 兼容层。VSG 的设计理念可以概括成五点Vulkan 原生Vulkan-nativeVSG 不依赖 OpenGL所有渲染最终都落到 Vulkan 的VkDevice、VkCommandBuffer、VkPipeline等原语上。你写的是场景图VSG 在背后把它翻译成 Vulkan 命令。场景图「编译」成命令图这是 VSG 区别于 OSG 的精髓。场景图在初始化阶段被compile()成RenderGraphCommandGraph详见第 12 章渲染时只是「回放」预先录好的命令缓冲CPU 开销极低。多线程友好Vulkan 天生支持多线程并行录制命令缓冲。VSG 的Viewer内置线程模型可以把不同视口/子图的录制分配到多个线程充分利用多核 CPU。数据导向与低开销节点、数据都用ref_ptr引用计数管理几何体用紧凑的Data数组vec3Array等表示命令栈State栈在录制时做最小状态切换避免无谓的 Vulkan 调用。跨平台与可扩展一份场景图代码可在 Windows / Linux / macOS / Android 上运行模型加载、UI、Qt 集成等以「组件库」形式外挂见第 2 章核心保持精简。一句话总结VSG 场景图的易用性 Vulkan 的性能。它让你用接近「声明式」的方式描述 3D 世界同时享受现代 GPU API 的全部红利。1.4 与 OpenSceneGraphOSG的关系很多读者是从 OSG 来的这里把关系说清楚精神继承者VSG 由 OSG 的作者 Robert Osfield 主导开发是 OSG 理念的「现代重制」。场景图、访问者模式Visitor、状态栈、相机/视图等核心思想一脉相承。共享的概念Node/Group/MatrixTransform/Switch/LOD、Visitor 遍历、StateGroup承载状态——这些在 VSG 里依然成立。底层的决裂OSG 构建在 OpenGL 的「立即模式 固定管线」之上VSG 构建在 Vulkan 的「命令缓冲 显式管线」之上。因此很多 OSG 的写法在 VSG 里不成立或改名了例如OSG 的osg::AnimationPath在 VSG 中不存在改用vsg::Animation 各类Sampler第 14 章OSG 里Geometry直接挂PrimitiveSetVSG 里用vsg::Geometry配合BindVertexBuffers/BindIndexBuffer/DrawIndexed第 7 章OSG 的NodeVisitor在 VSG 里仍是Visitor但录制阶段多了一个专门的RecordTraversal。不是封装层VSG 不是「用 Vulkan 重新实现一遍 OSG」而是从渲染模型层面重写。理解这一点能帮你避开「用 OSG 思维硬套 VSG」的坑。1.5 核心优势维度VSG 的优势性能Vulkan 显式控制、多线程命令缓冲录制、低开销状态栈现代渲染原生支持 PBR、计算着色器、光线追踪已并入核心raytracing模块第 16 章可移植纯 Vulkan可覆盖桌面、移动端、云渲染、VR/AR可扩展组件库模式vsgXchange模型加载、vsgImGui调试 UI、vsgQt等工程化类型安全的场景图、内置序列化ascii/binary、验证层友好语言C17API 现代、表达力强1.6 VSG 适用与不适用场景了解 VSG 的核心优势后更重要的是判断它是否适合你的项目。下面通过对比列表的形式清晰说明 VSG 最适合哪些类型的项目以及哪些情况下可能不是最佳选择。✅ VSG 最适合的场景追求极致性能的桌面应用如 CAD/CAM、科学可视化、仿真软件、游戏引擎编辑器等需要充分利用多核 CPU 和现代 GPU 特性。跨平台渲染引擎/中间件需要一套代码覆盖 Windows、Linux、macOS、Android 等多个平台且希望底层渲染 API 统一为 Vulkan。需要现代图形特性的项目如基于物理的渲染PBR、实时光线追踪、计算着色器处理、VR/AR 应用等。长期维护的大型 3D 应用看重代码的可维护性、类型安全、良好的工程化支持序列化、验证层友好。从 OSG 迁移到现代图形栈的项目团队熟悉场景图概念但希望摆脱 OpenGL 限制拥抱 Vulkan 生态。教育/研究用途的图形学框架希望学习 Vulkan 但不想从零开始处理窗口管理、资源加载等基础工作。❌ VSG 可能不是最佳选择的场景需要快速原型且不关心底层性能如果项目周期短主要目标是快速验证想法使用 Unity、Unreal Engine 或 Godot 等成熟引擎可能更高效。项目强绑定 OpenGL 生态如果已有大量基于 OpenGL 的代码、着色器、工具链且团队没有 Vulkan 经验迁移成本可能过高。纯 2D 或简单 UI 渲染VSG 专为 3D 场景图设计对于纯 2D 界面使用 Skia、Dear ImGui 或 Qt 的 2D 绘图可能更合适。Web 或纯云渲染前端VSG 是原生 C 库不直接支持 WebAssembly 或浏览器环境。如需 Web 3D考虑 Three.js 或 Babylon.js。团队缺乏 C17 和现代图形学经验VSG 要求开发者熟悉现代 C、Vulkan 基础概念和多线程编程学习曲线较陡。依赖特定引擎高级功能如需要内置的物理引擎、网络同步、动画状态机等VSG 作为渲染层不提供这些需自行集成或选择全功能引擎。决策建议如果你的项目属于「高性能 3D 应用」「跨平台渲染中间件」或「现代图形学学习框架」且团队愿意投入时间掌握 Vulkan 和场景图思想VSG 是一个极具竞争力的选择。反之若追求快速上线、已有强 OpenGL 绑定或只需简单 2D 渲染则应评估其他方案。1.6 小结VSG 是一个构建在 Vulkan 之上的场景图库把高层场景图编译成低开销的 Vulkan 命令图它与 OSG 共享场景图思想但渲染模型已彻底现代化Vulkan 化用 VSG 的「爽点」在于既能像场景图那样组织世界又能拿到现代 GPU API 的全部性能。1.7 延伸阅读与下一章预告第 2 章《架构概览》看清vsg核心库由哪些子模块组成、哪些能力在外部组件库第 5 章《第一个 VSG 程序》用 100 行左右代码跑通窗口 三角形建立第一手直觉第 12 章《RenderGraph 与 CommandGraph》理解「场景图 → 命令图」的编译机制——这是 VSG 性能的源头。模板一致性提醒后续带代码的章节均沿用第 5 章的九段式结构纯概念章如本章采用「目标 / 前置 / 正文 / 小结 / 延伸」精简结构代码均对照include/vsg/实际 API 校验后写入。