API 参考 / 渲染、资源与语言
AdvancedRenderAccess
用途:裸图形 API 出口,经 RenderContext#advanced() 获取,给必须直接操作图形 API 的模组一条明路。
完整签名
java
public interface AdvancedRenderAccess {
boolean available();
boolean isRenderThread();
void runOnRenderThread(Runnable task);
long nativeContextId();
}available()
签名:
java
boolean available();行为:当前后端是否支持裸 API。生产后端为 true;验证通道下为 false,此时其余方法不可用(nativeContextId() 返回 0,runOnRenderThread 拒绝执行)。模组必须自行分支,否则功能在验证通道下静默缺失。
isRenderThread()
签名:
java
boolean isRenderThread();行为:当前线程是否为渲染线程。渲染线程内可直接调用图形 API,其它线程必须封送。
runOnRenderThread(Runnable task)
签名:
java
void runOnRenderThread(Runnable task);行为:已在渲染线程 → 立即同步执行;否则入队,由主循环在下一帧的固定排空点(场景 update 之前)执行。单向封送(无返回值、无完成等待),需要结果时在任务内用 CompletableFuture 完成。任务异常由宿主捕获并限流记录,不影响主循环;task 为 null 时无操作。
nativeContextId()
签名:
java
long nativeContextId();行为:原生图形上下文标识,仅供诊断(不同后端含义不同),不得据此做逻辑判断;不可用时返回 0。
代价提示:本出口破坏可移植性、不在中立缝的像素对账范围内、且不承诺跨版本稳定。仅在确有着色器/帧缓冲等需求时使用。