SepComet
|
05d7d9783e
|
添加 LightGame 关卡编辑器并修复死亡扣命、光感门阈值与渲染问题
- 新增 LevelEditor:ImGui 面板支持 tile 绘制、对象放置、选择、擦除、网格/碰撞体可视化、关卡导出为头文件
- 修复 LevelRenderer::draw 中 draw_tilemap 错误传入负 screen 坐标导致摄像机移动后 tile 消失
- 修复 Preview Light 滑块用 reinterpret_cast 将 uint16_t 强转为 int* 写入 4 字节覆盖相邻 bool 成员
- 修复编辑器放置光感门缺少 light_threshold 默认值导致不响应亮度变化
- 统一 LightPlatform[3192,4095] ShadowPlatform[0,1023] Door[1023,3192] 阈值到关卡数据与编辑器默认值
- 修复 SDL_StopTextInput 导致 ImGui InputText 无法输入及键盘状态异常
- 修复死亡状态每帧扣命导致一次死亡直接 GameOver
- 集成 ImGui (SDL2 Renderer 后端) 到构建系统
|
2026-06-11 19:30:04 +08:00 |
SepComet
|
d49aef8c0f
|
调整 LightGame 平台碰撞与门尺寸,修复测试编译
- LightPlatform / ShadowPlatform:移除单向板碰撞逻辑,改为完整 tile 碰撞体
- Door:碰撞箱从 32x64 改为 32x32,与单 tile 素材匹配
- 修复 game_engine_tests 编译:补全 LevelData 初始化字段,增加缺失的 include path
|
2026-06-11 15:27:57 +08:00 |
SepComet
|
e00fc1799d
|
重构键盘输入为 IKeyboardState 接口,消除 App 层对 SDL 的直接依赖
重构键盘输入为 IKeyboardState 接口,消除 App 层对 SDL 的直接依赖
- 新增 IKeyboardState 抽象接口及 SdlKeyboardState/EvdevKeyboardState 实现
- PlayerController 改用 IKeyboardState 替代直接调用 SDL_GetKeyboardState
- 移除 Camera2D.h 中对 Core 私有头文件 Camera.h 的引用
- 将 Timer.h 从 Core/Core 移至 Core/Platform,符合架构边界规范
- 键盘输入优先级调整为高于指针输入
|
2026-06-10 15:22:30 +08:00 |
SepComet
|
aecd5a46ed
|
搭建 LightGame 游戏框架
|
2026-06-09 12:25:01 +08:00 |
SepComet
|
5ac61dca0e
|
统一 2D 渲染链路以消除格式分叉和热路径中转
将图片主路径收口为 RGBA5551 输入、RGB565 backbuffer 输出,并删除 USE_RGB565_BACKBUFFER 双路径。sprite/tilemap 主绘制改为直接 RGBA5551 -> RGB565,透明语义固定为 1-bit alpha test。同步收口 SDL/FB present 路径、sprite 资源加载/导出规范,以及相关测试与文档。
Constraint: 运行时图片主路径需统一到 RGBA5551,不能继续保留主要 RGBA8888 分支
Constraint: 透明仅支持 1-bit 语义,不引入 alpha blending
Rejected: 保留 USE_RGB565_BACKBUFFER 宏双路径 | 持续增加维护成本并掩盖真实主链路
Rejected: 主绘制继续走 RGBA5551 -> RGBA8888 -> RGB565 | 热路径存在不必要中转
Confidence: high
Scope-risk: moderate
Directive: 后续图片资源默认按 RGBA5551 接入;不要重新引入通用 RGBA8888 主运行时路径
Directive: 字体 atlas 目前仍属兼容输入;若继续收口,优先改成 1-bit mask 而不是新的图片分支
Tested: render_pipeline_tests;SDL Demo Release 构建;搜索确认无 USE_RGB565_BACKBUFFER 残留
Not-tested: Linux framebuffer 目标实机构建与显示验证
|
2026-06-08 18:32:04 +08:00 |
HP
|
8785368913
|
修改Tom总流程,完善动画机的状态设置以及游戏逻辑;在core/platform新增win和板端的鼠标点击/触控的逻辑代码/驱动;测试游戏内容。
|
2026-06-08 12:53:38 +08:00 |
HP
|
1e34e15e04
|
重构SpriteAssertTool.cpp,减少中间文件产生;重构TomGame文件夹,删去不必要的文件;修改CMakeLists,PC重构Game自动重新构建资源头文件;修改文档
|
2026-06-08 10:27:31 +08:00 |
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 |