Skip to content

getCoreFeatures

获取 Core 支持特性

getCoreFeatures 是用于功能兼容性探测的核心接口。由于不同版本的 Runtime Core 内核引擎在渲染能力、多线程支持以及底层协议上存在差异,该方法允许开发者在运行时动态获取当前内核支持的“特性列表”。

它是确保游戏在不同性能表现的引擎上平稳运行、实现“渐进式增强”或“优雅降级”的关键。


方法声明

java
/**
 * 返回 Runtime Core 支持的特性。
 * 此 API 主要用来进行判断 Core 功能的兼容性。
 *
 * @return 包含特性标识的字符串数组(例如 ["webgl2", "worker", "etc2"])
 */
String[] getCoreFeatures();

运行行为

  1. 能力声明:引擎在加载时会自检底层环境(如 GPU 驱动、指令集),并将可用的高级能力封装在数组中返回。
  2. 硬性兼容性检查:如果某个高性能游戏要求必须有 webgl2 才能运行,业务层应在启动前检查该列表中是否包含该关键字。
  3. 动态匹配:即便内核版本(Version)相同,在不同的手机硬件上返回的 Features 也可能因设备限制而有所不同。

常用特性标识示例

虽然具体标识随 SDK 版本更新而变化,但常见的特性通常包括:

特性标识描述
"webgl2"支持 WebGL 2.0 渲染,提供更高级的着色器支持。
"multithread"支持多线程逻辑,提升复杂游戏的运行效率。
"etc2" / "astc"支持特定的硬件纹理压缩格式,减少显存占用。
"wasm"支持 WebAssembly,允许运行高性能的 C++/Rust 编译逻辑。

代码示例

java
// 检查当前内核是否支持 WebGL2
String[] features = coreHandle.getCoreFeatures();
boolean isWebGL2Supported = false;

if (features != null) {
    for (String feature : features) {
        if ("webgl2".equalsIgnoreCase(feature)) {
            isWebGL2Supported = true;
            break;
        }
    }
}

if (isWebGL2Supported) {
    Log.i("SUDOP", "Great! Enabling high-fidelity graphics mode.");
} else {
    Log.w("SUDOP", "WebGL2 not supported. Falling back to basic rendering.");
}

注意事项

  • 非空校验:虽然正常加载后 handle 不为 null,但建议对返回的数组进行空值或长度校验,以防极端的初始化失败情况。
  • 特性前缀:某些版本可能会对特性加前缀(如 rt.feature.webgl2),在进行字符串比对时建议查阅当前版本的具体接入指南。
  • 时机要求:必须在 loadCoreonSuccess 回调之后通过 SUDRTGameCoreHandle 实例调用。