getCoreFeatures
获取 Core 支持特性
getCoreFeatures 是用于功能兼容性探测的核心接口。由于不同版本的 Runtime Core 内核引擎在渲染能力、多线程支持以及底层协议上存在差异,该方法允许开发者在运行时动态获取当前内核支持的“特性列表”。
它是确保游戏在不同性能表现的引擎上平稳运行、实现“渐进式增强”或“优雅降级”的关键。
方法声明
java
/**
* 返回 Runtime Core 支持的特性。
* 此 API 主要用来进行判断 Core 功能的兼容性。
*
* @return 包含特性标识的字符串数组(例如 ["webgl2", "worker", "etc2"])
*/
String[] getCoreFeatures();运行行为
- 能力声明:引擎在加载时会自检底层环境(如 GPU 驱动、指令集),并将可用的高级能力封装在数组中返回。
- 硬性兼容性检查:如果某个高性能游戏要求必须有
webgl2才能运行,业务层应在启动前检查该列表中是否包含该关键字。 - 动态匹配:即便内核版本(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),在进行字符串比对时建议查阅当前版本的具体接入指南。 - 时机要求:必须在
loadCore的onSuccess回调之后通过SUDRTGameCoreHandle实例调用。