Files
thaumicadditions/reports/F-018.md
T
2026-10-31 21:42:27 +08:00

2.1 KiB
Raw Blame History

F-018

  • 状态:边界·已驳回(TDLM/thaumicadditions#11,2026-10-31:GUI 内测宽量级微,且脚本打不开这些 GUI 无法实测)
  • 范式:F13
  • 位置:src/main/java/com/pengu/thaumcraft/additions/gui/GUIDarkGenerator.java:35、:36;同型 GUICondensator.java:39、GUIDarkInfuser.java:44、GUIHyperNodeCreator.java:31、:32、GUIInfuser.java:35、GUISealGlobe.java:76、GUIThaumicCrystallizer.java:34、GUIThaumicGenerator.java:32、GUIThaumicRestorer.java:33;src/main/java/com/pengu/thaumcraft/additions/utils/hud/TipMessage.java:35(宽度环 :69-81,入口同包 HUD.java:111)
  • 证据:
        this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 3, 4210752);
    
    (GUIDarkGenerator.java:35;:36 对 Lang.localiseRaw("container.inventory") 取两次翻译再做同式居中)
        float decrease = this.getStringWidth(this.tipText) / 2.0F;
    
    (TipMessage.java:35;tipText 为 final 字段 :9,宽度环 :69-81 逐字符 loadGlyphTexture → renderEngine.bindTexture)
  • 机制:9 个 drawGuiContainerForegroundLayer 与 HUD 提示每帧对不变串重测宽度、随即 drawString 内部再测一遍,偏移只用于居中。串与字体在开窗/提示存活期内不变(GUISealGlobe.java:67/:70 同帧重取 TE 与组合描述属另一面,本块不计)。
  • 频率:每帧(GUI 开启期)/每帧(提示存活期)。
  • 修法:记录不修——量级算式:GUI 侧 10–20 字符测宽约 100–300 ns,GUIDarkGenerator:35-36 另加两次 localiseRaw,GUISealGlobe:76 含每行翻译与测宽合计 ≤3 µs/帧(16.6 ms 的 ≤0.02%);HUD 侧 10–40 字符 × 每次 bindTexture 0.2–1 µs ⇒ 2–40 µs/帧(16.6 ms 的 ≤0.25%)且仅提示存活期间。若要收:开窗期把标题串与宽度缓存在 initGui/构造器,TipMessage 在构造器算好 decrease;宽度为定值,偏移逐像素不变。
  • 风险 · 置信度:无 · 高(形态)
  • 移交:无
  • 来源:P2 2026-10-29 c49b5f0