1. FastTESR
FastTESR
的使用和普通 TESR 基本一致,但有一处非常关键的不同:
public class CrazyFastRenderer extends FastTESR<MyCrazyTileEntity> {
@Override
public void render(MyCrazyTileEntity tile, double x, double y, double z, float partialTicks, int destroyStage, float alpha, BufferBuilder bufferBuilder) {
// 在这里你可以拿到这些信息:
// 1. TileEntity 的坐标(x, y, z),以 double 的形式出现
// 2. partialTicks // TODO 它的具体含义该怎么解释?
// 3. destroyStage 大约是“方块被破坏的进度”的意思 // TODO 查清楚
// 4. alpha // TODO 可能是“透明度”的意思,待查
// 5. bufferBuilder:这便是 FastTESR 被称之为 FastTESR 的秘诀所在,所有要渲染的
// 数据都应统一走这里,而非直接用 Tessellator 反复 draw,实际上你也不应该这么做。
// 这个 BufferBuilder 收集的是顶点数据,数据的格式可在 VertexFormat 类中找到线索。
// 所有的数据都必须统一按格式传入,否则会有非常诡异的渲染效果。
}
}
1.1. 将 FastTESR 与 TileEntity 绑定
因为 FastTESR
也继承 TileEntitySpecialRenderer
,所以它的注册与普通 TESR 无异。
但仍然需要注意一点:对于绑定了一个 FastTESR
的 TileEntity,其 hasFastRenderer
方法应返回 true
:
// 在 TileEntity 类中覆写这个 Forge patch 出来的方法
@Override
public boolean hasFastRenderer() {
return true;
}