MobileGlues 核心架构:模块拆分与职责
两部分构成
MobileGlues 的完整交付包含两个独立的模块:
- MobileGlues 核心库:用 C++ 编写,负责真正的 OpenGL ES 翻译和渲染工作,作为共享库被启动器加载
- MobileGlues 插件应用:用 Kotlin + Jetpack Compose 编写的 Android 应用,提供图形化配置界面、权限申请、日志查看等外围功能
两者通过 Android JNI 桥接。启动器注入的是核心库,插件应用是独立的 Android APK。
核心库的内部模块
C++ 核心库内部按职责拆分成几个关键模块:
GL 翻译层负责拦截 Minecraft 发出的 OpenGL 调用,转换成 OpenGL ES 等价调用。这是整个项目的心脏。
着色器处理器自动完成桌面 GLSL → GLSL ES 的语法转换、移除不兼容语法、注入平台宏。使用 glslang 和 SPIRV-Cross 作为底层组件。
纹理子系统负责纹理加载、上传、采样,v1.3.5 版本修复过纹理子系统的不正确行为。
着色器缓存把编译过的 GLSL ES 着色器二进制缓存下来,下次加载同一光影包时可以跳过编译步骤,加快重载速度。
GPU 使用率上报在渲染过程中统计 GPU 占用率,供游戏内显示或调试使用。
插件应用的职责
插件应用不参与任何渲染工作,它只做外围配置:
- 申请存储权限(v1.3.5 起使用 MANAGE_EXTERNAL_STORAGE 替代 SAF,简化文件访问)
- 图形化切换 ANGLE 驱动开关
- 配置 MultiDraw 模拟方式(v2.0.0 起支持自动基准测试选最快方案)
- 主题切换(Material / Miuix)
- 显示项目贡献者列表
- 列出第三方开源组件
- 提供隐私声明
第三方依赖
核心库使用了多个开源组件:SPIRV-Cross(着色器交叉编译)、glslang(着色器编译)、FidelityFX-FSR(AMD 的超分辨率技术)、Perfetto(性能追踪)、xxHash(哈希)、flat_hash_map(哈希表实现)。完整列表见插件应用的 Info 标签页。