Theseus 模组文档
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。

代价提示:本出口破坏可移植性、不在中立缝的像素对账范围内、且不承诺跨版本稳定。仅在确有着色器/帧缓冲等需求时使用。