RenderBuffers.java

net.minecraft.client.renderer.RenderBuffers

信息

  • 全限定名:net.minecraft.client.renderer.RenderBuffers
  • 类型:public class
  • 包:net.minecraft.client.renderer
  • 源码路径:src/main/java/net/minecraft/client/renderer/RenderBuffers.java
  • 起始行号:L15
  • 职责:

    TODO

字段/常量

  • fixedBufferPack

    • 类型: SectionBufferBuilderPack
    • 修饰符: private final
    • 源码定位: L16
    • 说明:

      TODO

  • sectionBufferPool

    • 类型: SectionBufferBuilderPool
    • 修饰符: private final
    • 源码定位: L17
    • 说明:

      TODO

  • bufferSource

    • 类型: MultiBufferSource.BufferSource
    • 修饰符: private final
    • 源码定位: L18
    • 说明:

      TODO

  • crumblingBufferSource

    • 类型: MultiBufferSource.BufferSource
    • 修饰符: private final
    • 源码定位: L19
    • 说明:

      TODO

  • outlineBufferSource

    • 类型: OutlineBufferSource
    • 修饰符: private final
    • 源码定位: L20
    • 说明:

      TODO

内部类/嵌套类型

构造器

public RenderBuffers(int maxSectionBuilders) @ L22

  • 构造器名:RenderBuffers
  • 源码定位:L22
  • 修饰符:public

参数:

  • maxSectionBuilders: int

说明:

TODO

方法

下面的方法块按源码顺序生成。

private static void put(Object2ObjectLinkedOpenHashMap<RenderType,ByteBufferBuilder> map, RenderType type) @ L44

  • 方法名:put
  • 源码定位:L44
  • 返回类型:void
  • 修饰符:private static

参数:

  • map: Object2ObjectLinkedOpenHashMap<RenderType,ByteBufferBuilder>
  • type: RenderType

说明:

TODO

public SectionBufferBuilderPack fixedBufferPack() @ L48

  • 方法名:fixedBufferPack
  • 源码定位:L48
  • 返回类型:SectionBufferBuilderPack
  • 修饰符:public

参数:

说明:

TODO

public SectionBufferBuilderPool sectionBufferPool() @ L52

  • 方法名:sectionBufferPool
  • 源码定位:L52
  • 返回类型:SectionBufferBuilderPool
  • 修饰符:public

参数:

说明:

TODO

public MultiBufferSource.BufferSource bufferSource() @ L56

  • 方法名:bufferSource
  • 源码定位:L56
  • 返回类型:MultiBufferSource.BufferSource
  • 修饰符:public

参数:

说明:

TODO

public MultiBufferSource.BufferSource crumblingBufferSource() @ L60

  • 方法名:crumblingBufferSource
  • 源码定位:L60
  • 返回类型:MultiBufferSource.BufferSource
  • 修饰符:public

参数:

说明:

TODO

public OutlineBufferSource outlineBufferSource() @ L64

  • 方法名:outlineBufferSource
  • 源码定位:L64
  • 返回类型:OutlineBufferSource
  • 修饰符:public

参数:

说明:

TODO

代码

@OnlyIn(Dist.CLIENT)
public class RenderBuffers {
    private final SectionBufferBuilderPack fixedBufferPack = new SectionBufferBuilderPack();
    private final SectionBufferBuilderPool sectionBufferPool;
    private final MultiBufferSource.BufferSource bufferSource;
    private final MultiBufferSource.BufferSource crumblingBufferSource;
    private final OutlineBufferSource outlineBufferSource;
 
    public RenderBuffers(int maxSectionBuilders) {
        this.sectionBufferPool = SectionBufferBuilderPool.allocate(maxSectionBuilders);
        SequencedMap<RenderType, ByteBufferBuilder> fixedBuffers = Util.make(new Object2ObjectLinkedOpenHashMap<>(), map -> {
            map.put(Sheets.cutoutBlockItemSheet(), this.fixedBufferPack.buffer(ChunkSectionLayer.CUTOUT));
            map.put(Sheets.translucentBlockItemSheet(), this.fixedBufferPack.buffer(ChunkSectionLayer.TRANSLUCENT));
            put((Object2ObjectLinkedOpenHashMap<RenderType, ByteBufferBuilder>)map, Sheets.cutoutItemSheet());
            put((Object2ObjectLinkedOpenHashMap<RenderType, ByteBufferBuilder>)map, Sheets.translucentItemSheet());
            put((Object2ObjectLinkedOpenHashMap<RenderType, ByteBufferBuilder>)map, RenderTypes.armorEntityGlint());
            put((Object2ObjectLinkedOpenHashMap<RenderType, ByteBufferBuilder>)map, RenderTypes.glint());
            put((Object2ObjectLinkedOpenHashMap<RenderType, ByteBufferBuilder>)map, RenderTypes.glintTranslucent());
            put((Object2ObjectLinkedOpenHashMap<RenderType, ByteBufferBuilder>)map, RenderTypes.entityGlint());
            put((Object2ObjectLinkedOpenHashMap<RenderType, ByteBufferBuilder>)map, RenderTypes.waterMask());
        });
        this.bufferSource = MultiBufferSource.immediateWithBuffers(fixedBuffers, new ByteBufferBuilder(786432));
        this.outlineBufferSource = new OutlineBufferSource();
        SequencedMap<RenderType, ByteBufferBuilder> crumblingBuffers = Util.make(
            new Object2ObjectLinkedOpenHashMap<>(),
            map -> ModelBakery.DESTROY_TYPES.forEach(type -> put((Object2ObjectLinkedOpenHashMap<RenderType, ByteBufferBuilder>)map, type))
        );
        this.crumblingBufferSource = MultiBufferSource.immediateWithBuffers(crumblingBuffers, new ByteBufferBuilder(0));
    }
 
    private static void put(Object2ObjectLinkedOpenHashMap<RenderType, ByteBufferBuilder> map, RenderType type) {
        map.put(type, new ByteBufferBuilder(type.bufferSize()));
    }
 
    public SectionBufferBuilderPack fixedBufferPack() {
        return this.fixedBufferPack;
    }
 
    public SectionBufferBuilderPool sectionBufferPool() {
        return this.sectionBufferPool;
    }
 
    public MultiBufferSource.BufferSource bufferSource() {
        return this.bufferSource;
    }
 
    public MultiBufferSource.BufferSource crumblingBufferSource() {
        return this.crumblingBufferSource;
    }
 
    public OutlineBufferSource outlineBufferSource() {
        return this.outlineBufferSource;
    }
}

引用的其他类

  • ByteBufferBuilder

    • 引用位置: 参数/构造调用
    • 关联成员: ByteBufferBuilder()
  • MultiBufferSource

    • 引用位置: 字段/方法调用/返回值
    • 关联成员: MultiBufferSource.immediateWithBuffers()
  • OutlineBufferSource

    • 引用位置: 字段/构造调用/返回值
    • 关联成员: OutlineBufferSource()
  • SectionBufferBuilderPack

    • 引用位置: 字段/构造调用/返回值
    • 关联成员: SectionBufferBuilderPack()
  • SectionBufferBuilderPool

    • 引用位置: 字段/方法调用/返回值
    • 关联成员: SectionBufferBuilderPool.allocate()
  • Sheets

    • 引用位置: 方法调用
    • 关联成员: Sheets.cutoutBlockItemSheet(), Sheets.cutoutItemSheet(), Sheets.translucentBlockItemSheet(), Sheets.translucentItemSheet()
  • RenderType

    • 引用位置: 参数
  • RenderTypes

    • 引用位置: 方法调用
    • 关联成员: RenderTypes.armorEntityGlint(), RenderTypes.entityGlint(), RenderTypes.glint(), RenderTypes.glintTranslucent(), RenderTypes.waterMask()
  • Util

    • 引用位置: 方法调用
    • 关联成员: Util.make()