docs: 更新 README 文档以反映最新架构变更

- 添加资源抽象层和显存管理功能说明
- 更新模块优先级和架构图
- 完善目录结构描述
- 新增性能优化策略说明
This commit is contained in:
ChestnutYueyue 2026-02-17 22:53:41 +08:00
parent 2748e80dea
commit 6babd376c9
1 changed files with 81 additions and 17 deletions

View File

@ -43,11 +43,13 @@
- **跨平台支持**Windows、Linux、macOS、Nintendo Switch
- **模块化架构**:模块系统 + 服务系统,灵活可扩展
- **多后端渲染**OpenGL / Vulkan 支持,易于扩展新后端
- **资源抽象层**:统一的 Buffer、Pipeline、Framebuffer 接口
- **高性能批处理**:独立 Batch 层TrigLookup 优化,支持 10000 精灵/批次
- **场景图系统**:树形节点结构,支持变换继承
- **输入系统**:键盘、鼠标、手柄、触摸,事件驱动
- **渲染系统**OpenGL ES 3.2,支持自定义着色器
- **视口适配**:多种适配模式,自动响应窗口大小变化
- **显存管理**VRAM 预算追踪,内存泄漏防护
- **音频系统**:高质量音频播放(规划中)
- **UI 系统**:完整的 UI 控件支持(规划中)
@ -70,15 +72,9 @@ flowchart TB
subgraph Modules["Modules (模块系统)"]
direction TB
subgraph CoreModules["Core Modules"]
CONFIG[Config Module<br/>配置管理]
PLATFORM[Platform Module<br/>平台检测]
WINDOW[Window Module<br/>窗口管理]
end
subgraph OtherModules["Feature Modules"]
INPUT[Input Module<br/>输入处理]
RENDER[Render Module<br/>渲染系统]
end
WINDOW["Window Module<br/>窗口管理 P0"]
RENDER["Render Module<br/>渲染系统 P10"]
INPUT["Input Module<br/>输入处理 P20"]
end
subgraph Services["Services (服务系统)"]
@ -99,12 +95,14 @@ flowchart TB
subgraph Graphics["Graphics (图形系统)"]
direction TB
RESOURCES[Resources<br/>资源抽象层]
BACKEND[RenderBackend<br/>渲染后端]
BATCH[Batch Layer<br/>批处理层]
GL[OpenGL Renderer<br/>OpenGL 渲染器]
VK[Vulkan Renderer<br/>Vulkan 渲染器]
GL[OpenGL Backend<br/>OpenGL 后端]
VK[Vulkan Backend<br/>Vulkan 后端]
SHADER[ShaderManager<br/>着色器管理]
TEXTURE[TexturePool<br/>纹理池]
MEMORY[Memory<br/>显存管理]
end
subgraph Platform["Platform (平台层)"]
@ -125,8 +123,10 @@ flowchart TB
BACKEND --> BATCH
BATCH --> GL
BATCH --> VK
GL --> RESOURCES
GL --> SHADER
GL --> TEXTURE
GL --> MEMORY
WINDOW --> SDL2
INPUT --> INPUT_SYS
INPUT_SYS --> SDL2
@ -136,11 +136,9 @@ flowchart TB
| 模块 | 职责 | 优先级 |
|-----|------|-------|
| Config | 配置管理 | Core (0) |
| Platform | 平台检测 | Core (0) |
| Window | 窗口管理 | Core (0) |
| Input | 输入处理 | Input (50) |
| Render | 渲染系统 | Graphics (100) |
| Window | 窗口管理 | 0 |
| Render | 渲染系统 | 10 |
| Input | 输入处理 | 20 |
### 服务系统
@ -165,6 +163,13 @@ Extra2D 采用分层架构支持多渲染后端:
├─────────────────────────────────────┤
│ Renderer (渲染命令) │
├─────────────────────────────────────┤
│ Resources (resources/) │ ← 资源抽象层(后端无关)
│ - Buffer 接口 │
│ - Pipeline 接口 │
│ - Framebuffer 接口 │
│ - Shader 接口 │
│ - FontAtlas 接口 │
├─────────────────────────────────────┤
│ Batch Layer (batch/) │ ← 后端无关的批处理
│ - 顶点缓存管理 │
│ - 批次策略 (10000 精灵/批次) │
@ -173,11 +178,37 @@ Extra2D 采用分层架构支持多渲染后端:
├─────────────────────────────────────┤
│ Backend Layer (backends/) │ ← 具体 GPU 实现
│ - OpenGL / Vulkan / Metal / D3D │
│ - VAO/VBO 创建 │
│ - GLBuffer / GLPipeline / GLFramebuffer
│ - GPU 提交 │
└─────────────────────────────────────┘
```
### 资源抽象层
统一的资源接口,支持多后端实现:
| 接口 | 功能 | OpenGL 实现 |
|-----|------|------------|
| Buffer | 顶点/索引/统一缓冲 | GLBuffer |
| Pipeline | 渲染状态管理 | GLPipeline |
| Framebuffer | 离屏渲染目标 | GLFramebuffer |
| Shader | 着色器程序 | GLShader |
| FontAtlas | 字体图集 | GLFontAtlas |
### 显存管理
```cpp
// VRAM 预算管理Switch 默认 400MB
VRAMMgr::get().setVRAMBudget(400 * 1024 * 1024);
// 自动追踪显存使用
// - GLTexture 自动追踪纹理显存
// - GLBuffer 自动追踪缓冲区显存
// 打印显存统计
VRAMMgr::get().printStats();
```
### 着色器系统
支持多后端的 JSON 元数据着色器系统:
@ -207,6 +238,8 @@ Extra2D 采用分层架构支持多渲染后端:
| **批量绘制** | `drawBatch()` 一次性处理多个精灵 | CPU 开销减少 20-30% |
| **静态索引** | 预生成索引缓冲区,避免运行时分配 | 内存分配开销消除 |
| **着色器缓存** | 二进制着色器缓存,加速启动 | 启动时间减少 |
| **状态缓存** | GLPipeline 缓存状态,避免冗余 GL 调用 | 状态切换开销减少 |
| **Orphaning** | 动态缓冲区 orphaning 策略 | GPU 同步开销减少 |
---
@ -455,13 +488,32 @@ Extra2D/
│ │ │ ├── graphics/ # 图形渲染
│ │ │ │ ├── backends/ # 渲染后端
│ │ │ │ │ ├── opengl/ # OpenGL 实现
│ │ │ │ │ │ ├── gl_context.h # OpenGL 上下文
│ │ │ │ │ │ ├── gl_buffer.h # 缓冲区实现
│ │ │ │ │ │ ├── gl_pipeline.h # 管线状态
│ │ │ │ │ │ ├── gl_framebuffer.h # 帧缓冲
│ │ │ │ │ │ ├── gl_renderer.h # 渲染器
│ │ │ │ │ │ ├── gl_texture.h # 纹理
│ │ │ │ │ │ ├── gl_shader.h # 着色器
│ │ │ │ │ │ ├── gl_sprite_batch.h # 精灵批处理
│ │ │ │ │ │ └── gl_font_atlas.h # 字体图集
│ │ │ │ │ └── vulkan/ # Vulkan 实现
│ │ │ │ ├── batch/ # 批处理层(后端无关)
│ │ │ │ │ ├── sprite_batch.h
│ │ │ │ │ └── shape_batch.h
│ │ │ │ ├── resources/ # 资源抽象层(新增)
│ │ │ │ │ ├── buffer.h # 缓冲区接口
│ │ │ │ │ ├── pipeline.h # 管线接口
│ │ │ │ │ ├── framebuffer.h # 帧缓冲接口
│ │ │ │ │ ├── shader.h # 着色器接口
│ │ │ │ │ └── font_atlas.h # 字体接口
│ │ │ │ ├── core/ # 渲染核心
│ │ │ │ ├── camera/ # 相机和视口
│ │ │ │ ├── shader/ # Shader 系统
│ │ │ │ ├── texture/ # 纹理系统
│ │ │ │ └── memory/ # GPU 内存管理
│ │ │ │ ├── gpu_context.h # GPU 上下文状态
│ │ │ │ └── vram_manager.h # 显存管理器
│ │ │ ├── platform/ # 平台抽象
│ │ │ ├── scene/ # 场景系统
│ │ │ ├── services/ # 服务接口
@ -481,13 +533,25 @@ Extra2D/
│ ├── graphics/ # 图形实现
│ │ ├── backends/ # 渲染后端实现
│ │ │ ├── opengl/ # OpenGL 实现
│ │ │ │ ├── gl_context.cpp
│ │ │ │ ├── gl_buffer.cpp
│ │ │ │ ├── gl_pipeline.cpp
│ │ │ │ ├── gl_framebuffer.cpp
│ │ │ │ ├── gl_renderer.cpp
│ │ │ │ ├── gl_texture.cpp
│ │ │ │ ├── gl_shader.cpp
│ │ │ │ ├── gl_sprite_batch.cpp
│ │ │ │ └── gl_font_atlas.cpp
│ │ │ └── vulkan/ # Vulkan 实现
│ │ ├── batch/ # 批处理层实现
│ │ ├── resources/ # 资源抽象层(接口定义)
│ │ ├── core/ # 渲染核心
│ │ ├── camera/ # 相机和视口
│ │ ├── shader/ # Shader 系统
│ │ ├── texture/ # 纹理系统
│ │ └── memory/ # GPU 内存管理
│ │ ├── gpu_context.cpp
│ │ └── vram_manager.cpp
│ ├── platform/ # 平台实现
│ │ └── backends/ # 后端实现
│ │ ├── sdl2/ # SDL2 后端