跳过正文
  1. 项目/

MonoGame 鸿蒙移植项目

项目简介
#

MonoGame 3.8.x 的运行时引擎逐行移植为 C++20,目标平台鸿蒙 HarmonyOS,渲染后端计划采用 Vulkan

项目定位:对源项目的完整 C++ 移植——代码结构与上游保持一致,不省略、不替代,最多以 TODO 标注待办。不是"做一个可用的 C++ 引擎",而是逐行镜像上游。

技术路线
#

机制做法
平台层 partial 类C# 前端 partial → C++ 基类(成员+属性+前端逻辑+Platform* 虚方法钩子);平台 partial → 派生类(override)
钩子语义C# 跨 partial 文件私有方法 → C++ 纯虚函数强制实现;构造内不调纯虚(UB),改由派生类构造后显式调用
文件结构一文件一类型(对应 C# 源文件结构,杜绝跨文件合并;唯一豁免 MathHelper+Random 嵌套平台无关 partial)
后端Vulkan 第一后端(参考 DirectX 实现为主、OpenGL 脏标记技巧为辅),GLES 可选第二后端

当前进度(2026-08-19)
#

  • 145+ 头文件 + 34 cpp,编译链接验证通过
  • 21 个平台层类全部基类化(GraphicsDevice/Texture2D/3D/Cube/RenderTarget×3/VertexBuffer/IndexBuffer/Shader/ConstantBuffer/OcclusionQuery + 4 状态类 + 2 集合类 + Adapter×3)
  • 一文件一类型拆分(2026-08-19)
  • ✅ 与 C# 源码逐行比对(核心逻辑一致;差异项标注 TODO)
  • ⏳ 未移植盘点:枚举 16 个(10 个状态依赖)+ 平台无关文件约 50 个

里程碑
#

里程碑内容状态
M0平台无关核心(数学/几何/Input/Audio 等)✅ 完成
M1状态依赖枚举 + 资源基类(全量编译零警告)⏳ 进行中
M2B1 窗口显示(XComponent → NativeWindow)待启动
M3B2 首帧:Clear + 三角形(Vulkan)待启动
M4-M6输入/音频/完整 Game 循环待启动

专栏文章
#

(本栏目按进度持续更新:进度报告 + 技术解说)

2026