docs: 更新README以反映新增的Vulkan渲染后端和架构调整

更新文档以包含以下内容:
1. 新增Vulkan渲染后端支持
2. 渲染系统分层架构说明
3. 目录结构调整
4. 多平台支持状态更新
This commit is contained in:
ChestnutYueyue 2026-02-17 14:50:13 +08:00
parent f1cf6a6d85
commit 89fb955eb0
1 changed files with 92 additions and 12 deletions

104
README.md
View File

@ -100,7 +100,9 @@ flowchart TB
subgraph Graphics["Graphics (图形系统)"]
direction TB
BACKEND[RenderBackend<br/>渲染后端]
BATCH[Batch Layer<br/>批处理层]
GL[OpenGL Renderer<br/>OpenGL 渲染器]
VK[Vulkan Renderer<br/>Vulkan 渲染器]
SHADER[ShaderManager<br/>着色器管理]
TEXTURE[TexturePool<br/>纹理池]
end
@ -120,7 +122,9 @@ flowchart TB
NODE --> SHAPE
NODE --> SPRITE
RENDER --> BACKEND
BACKEND --> GL
BACKEND --> BATCH
BATCH --> GL
BATCH --> VK
GL --> SHADER
GL --> TEXTURE
WINDOW --> SDL2
@ -149,6 +153,63 @@ flowchart TB
---
## 渲染系统架构
### 多后端支持
Extra2D 采用分层架构支持多渲染后端:
```
┌─────────────────────────────────────┐
│ Application (游戏逻辑) │
├─────────────────────────────────────┤
│ Renderer (渲染命令) │
├─────────────────────────────────────┤
│ Batch Layer (batch/) │ ← 后端无关的批处理
│ - 顶点缓存管理 │
│ - 批次策略 (10000 精灵/批次) │
│ - TrigLookup 三角函数查表 │
│ - 批量绘制接口 │
├─────────────────────────────────────┤
│ Backend Layer (backends/) │ ← 具体 GPU 实现
│ - OpenGL / Vulkan / Metal / D3D │
│ - VAO/VBO 创建 │
│ - GPU 提交 │
└─────────────────────────────────────┘
```
### 着色器系统
支持多后端的 JSON 元数据着色器系统:
```json
{
"name": "sprite",
"backends": {
"opengl": {
"vertex": "backends/opengl/builtin/sprite.vert",
"fragment": "backends/opengl/builtin/sprite.frag"
},
"vulkan": {
"vertex": "backends/vulkan/builtin/sprite.vert.spv",
"fragment": "backends/vulkan/builtin/sprite.frag.spv"
}
}
}
```
### 性能优化
| 优化技术 | 说明 | 性能提升 |
|---------|------|---------|
| **TrigLookup** | 三角函数查表,避免每帧 sin/cos 计算 | 旋转计算 5-10x |
| **大批次容量** | 10000 精灵/批次,减少 draw call | Draw call 减少 10x |
| **批量绘制** | `drawBatch()` 一次性处理多个精灵 | CPU 开销减少 20-30% |
| **静态索引** | 预生成索引缓冲区,避免运行时分配 | 内存分配开销消除 |
| **着色器缓存** | 二进制着色器缓存,加速启动 | 启动时间减少 |
---
## 构建指南
### 环境要求
@ -205,7 +266,7 @@ xmake build
xmake run demo_basic
```
#### 切换后端
#### 切换窗口后端
```bash
# 切换到 GLFW 后端
@ -218,6 +279,19 @@ xmake f --window_backend=sdl2 -y
xmake f -c -y
```
#### 切换渲染后端
```bash
# 切换到 Vulkan 后端
xmake f --render_backend=vulkan -y
# 切换回 OpenGL 后端(默认)
xmake f --render_backend=opengl -y
# 清理重新配置
xmake f -c -y
```
### Nintendo Switch 构建
```bash
@ -378,12 +452,15 @@ Extra2D/
│ │ │ ├── core/ # 核心类型
│ │ │ ├── event/ # 事件系统
│ │ │ ├── graphics/ # 图形渲染
│ │ │ │ ├── backends/ # 渲染后端
│ │ │ │ │ ├── opengl/ # OpenGL 实现
│ │ │ │ │ └── vulkan/ # Vulkan 实现
│ │ │ │ ├── batch/ # 批处理层(后端无关)
│ │ │ │ ├── core/ # 渲染核心
│ │ │ │ ├── camera/ # 相机和视口
│ │ │ │ ├── shader/ # Shader 系统
│ │ │ │ ├── texture/ # 纹理系统
│ │ │ │ ├── memory/ # GPU 内存管理
│ │ │ │ └── opengl/ # OpenGL 实现
│ │ │ │ └── memory/ # GPU 内存管理
│ │ │ ├── platform/ # 平台抽象
│ │ │ ├── scene/ # 场景系统
│ │ │ ├── services/ # 服务接口
@ -391,9 +468,9 @@ Extra2D/
│ │ ├── glad/ # OpenGL 加载器
│ │ └── stb/ # STB 单文件库
│ ├── shaders/ # 着色器文件
│ │ ├── builtin/ # 内置着色器
│ │ ├── common/ # 公共着色器代码
│ │ └── effects/ # 特效着色器
│ │ ├── backends/ # 后端特定着色器
│ │ │ └── opengl/ # OpenGL 着色器
│ │ └── shared/ # 共享着色器元数据
│ └── src/ # 源文件
│ ├── app/ # 应用实现
│ ├── config/ # 配置实现
@ -401,12 +478,15 @@ Extra2D/
│ ├── event/ # 事件实现
│ ├── glad/ # GLAD 实现
│ ├── graphics/ # 图形实现
│ │ ├── backends/ # 渲染后端实现
│ │ │ ├── opengl/ # OpenGL 实现
│ │ │ └── vulkan/ # Vulkan 实现
│ │ ├── batch/ # 批处理层实现
│ │ ├── core/ # 渲染核心
│ │ ├── camera/ # 相机和视口
│ │ ├── shader/ # Shader 系统
│ │ ├── texture/ # 纹理系统
│ │ ├── memory/ # GPU 内存管理
│ │ └── opengl/ # OpenGL 实现
│ │ └── memory/ # GPU 内存管理
│ ├── platform/ # 平台实现
│ │ └── backends/ # 后端实现
│ │ ├── sdl2/ # SDL2 后端
@ -427,9 +507,9 @@ Extra2D/
| 平台 | 窗口后端 | 图形 API | 状态 |
|-----|---------|---------|------|
| Windows | SDL2 / GLFW | OpenGL ES 3.2 | ✅ 支持 |
| Linux | SDL2 / GLFW | OpenGL ES 3.2 | ✅ 支持 |
| macOS | SDL2 / GLFW | OpenGL ES 3.2 | ✅ 支持 |
| Windows | SDL2 / GLFW | OpenGL ES 3.2 / Vulkan | ✅ 支持 |
| Linux | SDL2 / GLFW | OpenGL ES 3.2 / Vulkan | ✅ 支持 |
| macOS | SDL2 / GLFW | OpenGL ES 3.2 / Vulkan | ✅ 支持 |
| Nintendo Switch | SDL2 / GLFW | OpenGL ES 3.2 | ✅ 支持 |
---