子项目(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 必须先于它加载)。
相关条目
- SystemProperties - 位于 glsm 子项目
- AngelicaRfbPlugin - RFB 路径
- Mod ID 与注册总表 - 4 个子项目均无 modid
- 其余 mixin 分组 - sdlgpu 与 dragonapi 的 4 个 mixin