渲染管线与 GUI 组件
基本信息
| 属性 | 值 |
|---|---|
| 涉及包 | codechicken.lib.render(20 类)、codechicken.lib.render.uv(8 类)、codechicken.lib.gui(2 类)、codechicken.core.gui(8 类) |
| 公开类型数 | 38 |
| 核心类 | CCRenderState(643 行)、CCRenderPipeline |
功能
CCRenderState 是一套从 CCL 1.16 分支回移植的线程局部渲染状态机。类头注释明确写着 Backported from CCL - 1.16.x(CCRenderState.java:25)。
它用 private static final ThreadLocal<CCRenderState> instances = ThreadLocal.withInitial(CCRenderState::new)(:32)加 public static CCRenderState instance()(:38-40)取代了原先的静态字段。CCRenderState 目前没有任何 public static 字段,只有 5 个 public final 实例字段(其中 pipeline 持有 CCRenderPipeline,:30)与 35 个静态方法。
这套「静态方法 → 线程局部实例方法」的迁移正是 RedirectorTransformer 存在的原因:老 mod 字节码里对静态字段的访问会被重写成 instance().field。
类清单(codechicken.lib.render)
| 类 | 说明 |
|---|---|
CCRenderState |
线程局部渲染状态核心 |
CCRenderPipeline |
渲染管线(由 CCRenderState.pipeline 持有) |
IVertexOperation |
顶点操作接口(CCRenderState.java:55) |
CCModel |
模型数据(:716 处有模型表加载逻辑) |
CCModelLibrary |
模型库 |
BlockRenderer |
方块渲染 |
EntityDigIconFX |
挖掘裂纹特效 |
RenderUtils |
渲染工具 |
ColourMultiplier |
颜色乘算 |
IFaceRenderer |
面渲染接口 |
ManagedTextureFX / TextureFX / TextureSpecial / PlaceholderTexture |
纹理特效体系 |
TextureUtils |
纹理工具(含 @SubscribeEvent,全仓仅 5 个事件订阅类之一) |
TextureDataHolder |
纹理数据容器 |
SpriteSheetManager |
精灵图管理 |
ShaderProgram |
着色器程序 |
FontUtils |
字体工具 |
Vertex5 |
顶点格式 |
QBImporter |
Quake-Brush 模型导入(:633、:642 处有模型表与贴图导出逻辑) |
codechicken.lib.render.uv(8 类)为 UV 坐标辅助。
GUI 组件
codechicken.core.gui(8 类):GuiWidget、GuiScreenWidget、GuiCCButton、GuiCCTextField、GuiScrollPane、GuiScrollSlot、ClickCounter、IGuiActionListener。
codechicken.lib.gui(2 类):Canvas9Seg(九宫格画布)、GuiDraw(绘制工具)。
按钮、文本框、滚动面板的配色全部取自 LocalizedColours(见 几何、颜色与数学库)中的 24 个常量。
相关条目
- RedirectorTransformer - 让老 mod 字节码适配本线程局部 API 的转换器
- 几何、颜色与数学库 -
Vertex5、Colour等底层类型 - 客户端运行时与事件 - 模组列表滚动与本地化颜色重载