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()
- 引用位置:
-
- 引用位置:
字段/方法调用/返回值 - 关联成员:
MultiBufferSource.immediateWithBuffers()
- 引用位置:
-
- 引用位置:
字段/构造调用/返回值 - 关联成员:
OutlineBufferSource()
- 引用位置:
-
- 引用位置:
字段/构造调用/返回值 - 关联成员:
SectionBufferBuilderPack()
- 引用位置:
-
- 引用位置:
字段/方法调用/返回值 - 关联成员:
SectionBufferBuilderPool.allocate()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
Sheets.cutoutBlockItemSheet(), Sheets.cutoutItemSheet(), Sheets.translucentBlockItemSheet(), Sheets.translucentItemSheet()
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
RenderTypes.armorEntityGlint(), RenderTypes.entityGlint(), RenderTypes.glint(), RenderTypes.glintTranslucent(), RenderTypes.waterMask()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
Util.make()
- 引用位置: