SepComet
|
046c21d47a
|
Merge branch 'master' of https://gitea.sepcomet.xyz/basil/IMX6U-Game
|
2026-06-07 18:24:50 +08:00 |
SepComet
|
b248bd5cff
|
性能优化:P0/P1 热路径优化及 DepthBuffer 定点化
- 新增 USE_RGB565_BACKBUFFER 选项,FrameBuffer 内部以 RGB565 存储,present 阶段直接 memcpy,消除逐像素格式转换
- 新增 set_pixel_unsafe / get_depth_unsafe / set_depth_unsafe 快路径,热路径去除重复边界检查
- fill_rect 改为行级批量填充,draw_text/draw_sprite_ex 改用 unsafe 写入
- DepthBuffer 从 float 迁移至 uint16_t 定点深度,clear 支持 memset 快速路径
- TriangleRasterizer 深度测试适配 uint16_t(临时桥接,待全面定点化)
- 修复 USE_RGB565_BACKBUFFER 宏未传递到编译器的问题
|
2026-06-07 18:24:36 +08:00 |
HP
|
8d8c9ed9d1
|
修复CMakeLists路径问题
|
2026-06-07 17:06:49 +08:00 |
HP
|
b82339b185
|
将CMakeLists分成主CMakeLists和分游戏CMakeLists;README里补了单独构建Tom/Demo和资源转换的命令;把残留的Gfx文案改成Core。
|
2026-06-07 16:42:05 +08:00 |
HP
|
0defa04eef
|
Merge branch 'master' of https://gitea.sepcomet.xyz/basil/IMX6U-Game
|
2026-06-07 14:37:58 +08:00 |
SepComet
|
d92b890528
|
修正板端性能测试误判并加速 framebuffer 提交
板端测试发现轻量 Demo 在未优化 ARM 构建下只有十几帧,但 Release 构建后可达到约 76 FPS。问题主要来自单配置 CMake 构建未默认启用 Release,以及 fb0 提交路径逐像素通用转换成本过高。
本次变更将单配置生成器默认构建类型设为 Release,避免 ARM/fb0 性能测试误用未优化构建;同时为 FBDisplay 增加 RGB565、ARGB8888/XRGB8888、RGBA8888 连续内存等常见格式快速路径。Demo 临时移除旋转正方体,保留 2D sprite、tilemap、FPS 和 Frame/Present 耗时显示,用于定位板端 framebuffer 提交瓶颈。
Constraint: IMX6U framebuffer 性能结论必须基于 Release 构建
Constraint: 核心代码保持 C++11 兼容,不引入新依赖
Rejected: 直接判断板子性能不足 | 未优化构建会严重放大逐像素循环成本
Rejected: 继续优化 3D 正方体路径 | 当前瓶颈已由 Frame/Present 计时证明主要在 fb0 present
Confidence: high
Scope-risk: moderate
Directive: 后续板端性能测试先确认 CMAKE_BUILD_TYPE=Release,再分析算法瓶颈
Directive: 2D-only 场景不要使用会清 depth buffer 的 DrawContext::clear()
Tested: cmake --build build-win --config Release
Tested: wsl bash -lc "cd /mnt/d/source/IMX6U-Game && cmake --build build-arm-fb"
Not-tested: 实机 framebuffer 像素格式以外的非常见 fb0 layout
|
2026-06-07 14:24:32 +08:00 |
HP
|
c177114bf3
|
111
|
2026-06-07 12:34:07 +08:00 |
HP
|
b093796e61
|
merge remote and local changes
|
2026-06-07 10:39:29 +08:00 |
HP
|
3beae16917
|
local changes before merge
|
2026-06-07 10:38:34 +08:00 |
SepComet
|
213fa7e961
|
加入离线 sprite 与位图字体转换流程
Demo 现在通过生成的 C++ 头文件使用测试 sprite 和像素风 bitmap font,避免在运行时解码 PNG/TTF。同步补充资源转换文档,明确源资源、生成脚本和生成头文件需要一起提交,保证后续可追溯和可重新生成。
Constraint: IMX6U 运行时路径应尽量轻量,避免图片/字体解码开销
Constraint: 生成像素沿用当前 framebuffer 的 uint32_t RGBA 格式
Rejected: 运行时加载 PNG/TTF | 会增加解码依赖和运行时成本
Confidence: high
Scope-risk: moderate
Directive: 修改 sprite 或字体时,必须同步提交源资源、转换脚本和生成头文件
Tested: cmake -B build-win .; cmake --build build-win --config Release
Not-tested: 尚未在 IMX6U 真机上验证 ARM framebuffer/SDL 后端
|
2026-06-06 23:55:27 +08:00 |
SepComet
|
3e735e27b0
|
引入 Gfx::DrawContext 统一绘制入口,封装FrameBuffer/DepthBuffer/Rasterizer/角形光栅化;main.cpp 改用 DrawContext;同步更新文档路径
|
2026-06-06 17:55:50 +08:00 |
SepComet
|
a051f6da4c
|
整理文件结构目录,Gfx 里放底层图形库相关函数,Apps 放上层的应用(启动器、游戏)
|
2026-06-06 17:31:19 +08:00 |
SepComet
|
9db7e06aa1
|
init
|
2026-06-05 17:55:22 +08:00 |