引入 Gfx::DrawContext 统一绘制入口,封装FrameBuffer/DepthBuffer/Rasterizer/角形光栅化;main.cpp 改用 DrawContext;同步更新文档路径
This commit is contained in:
@@ -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 跨平台构建
|
||||
|
||||
|
||||
Reference in New Issue
Block a user