引入 Gfx::DrawContext 统一绘制入口,封装FrameBuffer/DepthBuffer/Rasterizer/角形光栅化;main.cpp 改用 DrawContext;同步更新文档路径

This commit is contained in:
SepComet
2026-06-06 17:55:50 +08:00
parent a051f6da4c
commit 3e735e27b0
7 changed files with 174 additions and 59 deletions
+21 -16
View File
@@ -57,7 +57,7 @@ cd IMX6U-Game
仓库已自带 SDL2 开发库(`libs/Win/SDL2`),无需额外安装。
```bash
cmake -B build-win .
cmake -B build-win .m
cmake --build build-win --config Release
```
@@ -150,8 +150,6 @@ Framebuffer 对照版本可能需要 root 权限访问 `/dev/fb0`。SDL2 版本
## 目录结构
当前源码仍处于早期验证布局:
```text
IMX6U-Game/
├─ cmake/
@@ -161,27 +159,32 @@ IMX6U-Game/
│ ├─ SDL2/ # Windows 用 SDL2 库(头文件 + lib + DLL)
│ └─ SDL_image/ # SDL2_image 库(头文件 + lib + DLL)
├─ src/
│ ├─ Platform/ # 当前显示后端适配,后续归入 Gfx/Platform
│ ├─ Core/ # FrameBuffer、DepthBuffer 等,后续归入 Gfx/Core
│ ├─ Math/ # 当前 float 数学类型,后续补定点数并归入 Gfx/Math
│ ├─ Rasterizer/ # 当前软光栅化代码,后续归入 Gfx/Draw2D 或 Gfx/Rasterizer
│ ├─ RenderData/ # Color、Triangle 等基础渲染数据
│ ├─ Scene/ # 当前 3D demo 场景数据
│ ├─ Asset/ # 资源加载预留
│ ├─ Shading/ # 着色预留
│ ├─ test_fb.cpp # 独立 fb 测试(最小示例)
│ └─ main.cpp # 当前 demo 入口,后续拆成 App 主循环
│ ├─ Gfx/ # 底层图形库:可复用、无具体游戏规则
│ │ ├─ Draw2D/ # DrawContext 统一绘制入口
│ │ ├─ Core/ # FrameBuffer、DepthBuffer
│ │ ├─ Math/ # 向量、矩阵、数学工具
│ │ ├─ Rasterizer/ # 线段、三角形光栅化
│ │ ├─ RenderData/ # Color、Triangle 等数据结构
│ │ ├─ Scene/ # Camera、Transform、Mesh
│ │ ├─ Shading/ # 着色器(预留)
│ │ ├─ Platform/ # IDisplay、SDLDisplay、FBDisplay
│ │ └─ Asset/ # ObjLoader 等资源加载
│ ├─ Apps/
│ │ └─ Demo/ # 当前 3D 立方体 demo 入口
│ └─ test_fb.cpp # 独立 fb 测试(最小示例)
├─ docs/
│ ├─ DEVELOPMENT_GUIDELINES.md # IMX6U 性能红线
│ └─ APP_AND_GFX_ARCHITECTURE.md # 应用层与图形库分层
│ ├─ APP_AND_GFX_ARCHITECTURE.md # 应用层与图形库分层
│ └─ CONVENTIONS.md # 坐标系、矩阵、深度等数学约定
├─ CMakeLists.txt
└─ README.md
```
目标布局见 `docs/APP_AND_GFX_ARCHITECTURE.md`:后续会收敛为 `src/Gfx`、`src/Apps/Launcher`、`src/Apps/GameA`、`src/Apps/GameB`、`src/Shared`。
## 模块说明
### Draw2D
- **DrawContext**:统一绘制入口,封装 FrameBuffer、DepthBuffer、Rasterizer、TriangleRasterizer,对外提供 `clear`、`draw_line`、`draw_triangle`、`present` 接口
### Core
- **FrameBuffer**:CPU 侧颜色缓冲,渲染结果先写在这里
- **DepthBuffer**:深度测试用 Z-buffer
@@ -204,6 +207,8 @@ IMX6U-Game/
**已完成:**
- 可旋转立方体的 3D 渲染(MVP 变换、背面剔除、扫描线填充、深度测试)
- 双平台显示后端(SDL2 / Framebuffer)
- Gfx 目录规范化,代码收敛到 `src/Gfx/`
- `Gfx::DrawContext` 统一绘制入口,封装现有绘制能力
- C++11 兼容代码
- CMake 跨平台构建