子项目(glsm / sdl-gpu / tracy-client / lwjgl3-backend)

基本信息

settings.gradle.kts 通过 include(...) 引入 4 个子项目:

include("glsm")
include("lwjgl3-backend")
include("tracy-client")
include("sdl-gpu")

四者都没有 gradle.properties,因此都没有 modid。它们是随 Angelica 主 jar 一起分发的支持库,不是独立的 Forge mod 容器。

规模

子项目 java 文件总数 其中测试 主代码 modid
glsm 316 97(src/test)+ 13(src/testFixtures) 202 + 3(src/stubs) 无
sdl-gpu 232 148 84 无
tracy-client 12 5 7 无
lwjgl3-backend 2 0 2 无
合计 562 263 299 —

umbra/(25 个 java 文件)不在 settings.gradle.kts 中,是仓库内嵌套的独立工程,有自己的 modId = umbra,不属于 Angelica 主构建产物,本条目不收录。

glsm(GL State Manager,316)

包 文件数
com.gtnewhorizons.angelica.glsm 202
com.gtnewhorizons.angelica.config 1(SystemProperties.java)
glsm/src/test/java 97
glsm/src/testFixtures/java 13
glsm/src/stubs/java 3

包名与目录名错位

SystemProperties.java 声明在 com.gtnewhorizons.angelica.config 包(见 SystemProperties),物理文件却在 glsm/ 子项目内。主源码树 src/main/java/.../config/ 下没有这个文件 —— 直接在 Angelica 主树里搜 SystemProperties.java 会得到 0 结果,必须去 glsm/ 找。

其余 202 个文件在 com.gtnewhorizons.angelica.glsm 包下,与目录名一致。

Angelica 侧引用 GLStateManager(ClientProxy.java:60)与 VSyncMode(:61)、Tracy(:62)、CaptureGate(Mixins.java:9)。AngelicaClientTweaker 构造函数里把 com.gtnewhorizons.angelica.glsm.GLStateManager 加进 classloader 排除列表。

sdl-gpu(232)

主代码 84 个文件,全部在 com.gtnewhorizons.angelica.sdlgpu 包下:

子包 文件数
resource 18
shader 16
pipeline 13
frame 7
sampler 5
device 5
util 4
compute 3
compat 2
顶层 11

另有 src/glsmSdlStubs/java 4 个桩文件(把 GLSM 的类打成 stub 供 sdl-gpu 独立编译用)。

测试 148 个,是 4 个子项目中测试占比最高的。

入口是 SDLGPUGate.isSDLGPUAvailable(),由 AngelicaClientTweaker.java:92 在 SystemProperties.USE_SDL_GPU 为 true 时调用。相关 mixin 2 个,见 其余 mixin 分组。

tracy-client(12)

文件 作用
TracyNativeLoader.java 加载原生库
TracyLibrary.java JNI 库
TracyClientBackend.java 客户端后端
TracyCapture.java 采集
TracyPorts.java 端口
SrcLocInterner.java 源码位置驻留
loading/TracyCorePlugin.java RFB coremod 插件
5 个测试 TracyPortsTest 等

Angelica 侧有 5 个 early/angelica/tracy/ mixin,1 个按键 angelica.keybind.tracyCapture(见 KeyBinding 注册总表),以及 AngelicaConfig 的 4 条 Tracy 配置 + SystemProperties 的 4 条属性。

TracyCorePlugin 是又一个 RfbPlugin 实现 —— 与 AngelicaRfbPlugin 并列。

lwjgl3-backend(2)

文件 行数 作用
Lwjgl3GLRenderBackend.java — lwjgl3 渲染后端
MissingDependencySdl.java — 缺依赖时的致命对话框

MissingDependencySdl 被 AngelicaClientTweaker.java:89-90 用作 DependencyVerifier.verifyOrHalt 的回调:

(title, message) -> MissingDependencySdl.showFatal(title, message)

依赖关系

Angelica (主)
├── glsm            GL 状态管理 + SystemProperties + Tracy 接口
├── sdl-gpu         SDL GPU 后端(依赖 glsm 的 stub)
├── tracy-client    Tracy JNI
└── lwjgl3-backend  lwjgl3 后端

lwjgl3ify 被 AngelicaMod.java:21 声明为 before(Angelica 必须先于它加载)。

相关条目