MobileGlues 中文文档 下载 App

给光影开发者的 MobileGlues 支持指南

自动转换覆盖的语法差异

MobileGlues 在着色器编译前自动完成以下转换:

开发者不需要为这些差异做任何特殊处理。

平台宏:针对 MobileGlues 做条件编译

自 V1.2.6 起,MobileGlues 自动向所有着色器注入两个宏:

#define MG_MOBILEGLUES                   // 表示处于 MobileGlues 环境
#define MG_MOBILEGLUES_VERSION 2000      // 版本号(2000 = V2.0.0)

MG_MOBILEGLUES_VERSION 是四位数,每个平台版本都有唯一值。开发者可以在着色器里用 #ifdef 或 #if 区分 MobileGlues 和桌面端,甚至区分不同 MobileGlues 版本。

用法示例

#ifdef MG_MOBILEGLUES
    #if MG_MOBILEGLUES_VERSION >= 2000
        // MobileGlues V2.0.0 及以上的专用逻辑
        // 比如使用某个 V2.0.0 才引入的 ES 扩展
    #else
        // 旧版 MobileGlues 的回退逻辑
    #endif
#else
    // 桌面端的逻辑
    // 比如使用桌面 OpenGL 独有的渲染特性
#endif

调试:开启忽略报错 + 查看日志

如果你的着色器在 MobileGlues 上无法编译,两步排查:

  1. 在 MobileGlues 插件应用 Settings 标签页启用「忽略 shader/program 报错」,让渲染器跳过报错继续渲染
  2. 查看日志文件 /sdcard/MG/latest.log,里面会记录具体是哪个着色器文件、哪一行、什么错误

日志文件路径是固定的 /sdcard/MG/latest.log。如果你使用的启动器把游戏目录放在其他位置,可以先从日志里确认实际路径。

无法自动转换的情况

如果一个光影包依赖桌面 OpenGL 独有的渲染管线特性(而不是纯语法差异),自动转换无法解决。常见的无法转换场景:

这种情况下需要开发者在平台宏分支里为 MobileGlues 写专门的回退路径。