异步截图

异步截图

异步处理截图编码和保存,在渲染线程之外进行,以防止F2帧卡顿。

性能

异步截图

截图可能会让游戏明显卡顿片刻。本模组将繁重的工作——PNG编码和将文件写入磁盘——从渲染线程中移出,因此按下F2不再造成帧率卡顿。

仅客户端使用。支持Fabric、Forge和NeoForge。无需配置。

为什么你可能需要这个

当你按下截图键时,原版Minecraft会在渲染线程上直接将图像编码为PNG并写入磁盘。这会让帧率冻结数十毫秒。连续快速截图——连拍、录制,或只是狂按F2——会让情况更糟,尤其是在高分辨率或使用大型资源包时。

工作原理

渲染线程从GPU获取像素(这部分必须保留在那里),然后将所有其他工作交给后台线程:生成唯一文件名、编码PNG和写入文件。信号量确保并发截图不会在相同文件名上发生冲突。当写入完成后,“截图已保存”消息会像原版一样在主线程上送达。

如果模组无法接入你的游戏版本,它会自行禁用,截图行为将与原版完全一致。

安装

  1. 为你的Minecraft版本安装Fabric、Forge或NeoForge。
  2. 将jar文件放入你的mods文件夹。
  3. 启动游戏。无需其他配置。

经典Forge用户:你还需要安装MixinBooter,因为经典Forge不附带Mixin加载器。

需要Java 17或更高版本。

兼容性

已在Minecraft 1.18至26.2版本的Fabric、Forge和NeoForge上测试。如果模组无法接入你的特定版本,它会静默禁用——游戏运行起来就像模组不存在一样。

限制

  • 渲染线程仍然需要从GPU获取像素(这是OpenGL的要求),因此在极高分辨率下可能仍会存在轻微卡顿。
  • “截图已保存”消息会在后台编码完成后出现,因此可能会略有延迟。
  • 如果一张截图仍在保存中时又拍摄了新截图,新截图将被丢弃以防止文件冲突。