RenderPass.java
com.mojang.blaze3d.systems.RenderPass
信息
- 全限定名:com.mojang.blaze3d.systems.RenderPass
- 类型:public class
- 包:com.mojang.blaze3d.systems
- 源码路径:src/main/java/com/mojang/blaze3d/systems/RenderPass.java
- 起始行号:L19
- 实现:AutoCloseable
- 职责:
TODO
字段/常量
-
LOGGER- 类型:
Logger - 修饰符:
private static final - 源码定位:
L20 - 说明:
TODO
- 类型:
-
backend- 类型:
RenderPassBackend - 修饰符:
private final - 源码定位:
L21 - 说明:
TODO
- 类型:
-
device- 类型:
GpuDeviceBackend - 修饰符:
private final - 源码定位:
L22 - 说明:
TODO
- 类型:
-
pushedDebugGroups- 类型:
int - 修饰符:
private - 源码定位:
L23 - 说明:
TODO
- 类型:
内部类/嵌套类型
-
com.mojang.blaze3d.systems.RenderPass.Draw- 类型:
record - 修饰符:
public - 源码定位:
L129 - 说明:
TODO
- 类型:
-
com.mojang.blaze3d.systems.RenderPass.UniformUploader- 类型:
interface - 修饰符:
public - 源码定位:
L145 - 说明:
TODO
- 类型:
构造器
public RenderPass(RenderPassBackend backend, GpuDeviceBackend device) @ L25
- 构造器名:RenderPass
- 源码定位:L25
- 修饰符:public
参数:
- backend: RenderPassBackend
- device: GpuDeviceBackend
说明:
TODO
方法
下面的方法块按源码顺序生成。
public void pushDebugGroup(Supplier<String> label) @ L30
- 方法名:pushDebugGroup
- 源码定位:L30
- 返回类型:void
- 修饰符:public
参数:
- label: Supplier
说明:
TODO
public void popDebugGroup() @ L39
- 方法名:popDebugGroup
- 源码定位:L39
- 返回类型:void
- 修饰符:public
参数:
- 无
说明:
TODO
public void setPipeline(RenderPipeline pipeline) @ L50
- 方法名:setPipeline
- 源码定位:L50
- 返回类型:void
- 修饰符:public
参数:
- pipeline: RenderPipeline
说明:
TODO
public void bindTexture(String name, GpuTextureView textureView, GpuSampler sampler) @ L54
- 方法名:bindTexture
- 源码定位:L54
- 返回类型:void
- 修饰符:public
参数:
- name: String
- textureView: GpuTextureView
- sampler: GpuSampler
说明:
TODO
public void setUniform(String name, GpuBuffer value) @ L58
- 方法名:setUniform
- 源码定位:L58
- 返回类型:void
- 修饰符:public
参数:
- name: String
- value: GpuBuffer
说明:
TODO
public void setUniform(String name, GpuBufferSlice value) @ L62
- 方法名:setUniform
- 源码定位:L62
- 返回类型:void
- 修饰符:public
参数:
- name: String
- value: GpuBufferSlice
说明:
TODO
public void enableScissor(int x, int y, int width, int height) @ L71
- 方法名:enableScissor
- 源码定位:L71
- 返回类型:void
- 修饰符:public
参数:
- x: int
- y: int
- width: int
- height: int
说明:
TODO
public void disableScissor() @ L75
- 方法名:disableScissor
- 源码定位:L75
- 返回类型:void
- 修饰符:public
参数:
- 无
说明:
TODO
public void setVertexBuffer(int slot, GpuBuffer vertexBuffer) @ L79
- 方法名:setVertexBuffer
- 源码定位:L79
- 返回类型:void
- 修饰符:public
参数:
- slot: int
- vertexBuffer: GpuBuffer
说明:
TODO
public void setIndexBuffer(GpuBuffer indexBuffer, VertexFormat.IndexType indexType) @ L83
- 方法名:setIndexBuffer
- 源码定位:L83
- 返回类型:void
- 修饰符:public
参数:
- indexBuffer: GpuBuffer
- indexType: VertexFormat.IndexType
说明:
TODO
public void drawIndexed(int baseVertex, int firstIndex, int indexCount, int instanceCount) @ L87
- 方法名:drawIndexed
- 源码定位:L87
- 返回类型:void
- 修饰符:public
参数:
- baseVertex: int
- firstIndex: int
- indexCount: int
- instanceCount: int
说明:
TODO
public <T> void drawMultipleIndexed(Collection<RenderPass.Draw<T>> draws, GpuBuffer defaultIndexBuffer, VertexFormat.IndexType defaultIndexType, Collection<String> dynamicUniforms, T uniformArgument) @ L95
- 方法名:drawMultipleIndexed
- 源码定位:L95
- 返回类型:
void - 修饰符:public
参数:
- draws: Collection<RenderPass.Draw
> - defaultIndexBuffer: GpuBuffer
- defaultIndexType: VertexFormat.IndexType
- dynamicUniforms: Collection
- uniformArgument: T
说明:
TODO
public void draw(int firstVertex, int vertexCount) @ L109
- 方法名:draw
- 源码定位:L109
- 返回类型:void
- 修饰符:public
参数:
- firstVertex: int
- vertexCount: int
说明:
TODO
public void close() @ L117
- 方法名:close
- 源码定位:L117
- 返回类型:void
- 修饰符:public
参数:
- 无
说明:
TODO
代码
@OnlyIn(Dist.CLIENT)
public class RenderPass implements AutoCloseable {
private static final Logger LOGGER = LogUtils.getLogger();
private final RenderPassBackend backend;
private final GpuDeviceBackend device;
private int pushedDebugGroups;
public RenderPass(RenderPassBackend backend, GpuDeviceBackend device) {
this.backend = backend;
this.device = device;
}
public void pushDebugGroup(Supplier<String> label) {
if (this.backend.isClosed()) {
throw new IllegalStateException("Can't use a closed render pass");
} else {
this.pushedDebugGroups++;
this.backend.pushDebugGroup(label);
}
}
public void popDebugGroup() {
if (this.backend.isClosed()) {
throw new IllegalStateException("Can't use a closed render pass");
} else if (this.pushedDebugGroups == 0) {
throw new IllegalStateException("Can't pop more debug groups than was pushed!");
} else {
this.pushedDebugGroups--;
this.backend.popDebugGroup();
}
}
public void setPipeline(RenderPipeline pipeline) {
this.backend.setPipeline(pipeline);
}
public void bindTexture(String name, @Nullable GpuTextureView textureView, @Nullable GpuSampler sampler) {
this.backend.bindTexture(name, textureView, sampler);
}
public void setUniform(String name, GpuBuffer value) {
this.backend.setUniform(name, value);
}
public void setUniform(String name, GpuBufferSlice value) {
int alignment = this.device.getUniformOffsetAlignment();
if (value.offset() % alignment > 0L) {
throw new IllegalArgumentException("Uniform buffer offset must be aligned to " + alignment);
} else {
this.backend.setUniform(name, value);
}
}
public void enableScissor(int x, int y, int width, int height) {
this.backend.enableScissor(x, y, width, height);
}
public void disableScissor() {
this.backend.disableScissor();
}
public void setVertexBuffer(int slot, GpuBuffer vertexBuffer) {
this.backend.setVertexBuffer(slot, vertexBuffer);
}
public void setIndexBuffer(GpuBuffer indexBuffer, VertexFormat.IndexType indexType) {
this.backend.setIndexBuffer(indexBuffer, indexType);
}
public void drawIndexed(int baseVertex, int firstIndex, int indexCount, int instanceCount) {
if (this.backend.isClosed()) {
throw new IllegalStateException("Can't use a closed render pass");
} else {
this.backend.drawIndexed(baseVertex, firstIndex, indexCount, instanceCount);
}
}
public <T> void drawMultipleIndexed(
Collection<RenderPass.Draw<T>> draws,
@Nullable GpuBuffer defaultIndexBuffer,
VertexFormat.@Nullable IndexType defaultIndexType,
Collection<String> dynamicUniforms,
T uniformArgument
) {
if (this.backend.isClosed()) {
throw new IllegalStateException("Can't use a closed render pass");
} else {
this.backend.drawMultipleIndexed(draws, defaultIndexBuffer, defaultIndexType, dynamicUniforms, uniformArgument);
}
}
public void draw(int firstVertex, int vertexCount) {
if (this.backend.isClosed()) {
throw new IllegalStateException("Can't use a closed render pass");
} else {
this.backend.draw(firstVertex, vertexCount);
}
}
@Override
public void close() {
if (!this.backend.isClosed()) {
if (this.pushedDebugGroups > 0) {
throw new IllegalStateException("Render pass had debug groups left open!");
}
this.backend.close();
}
}
@OnlyIn(Dist.CLIENT)
public record Draw<T>(
int slot,
GpuBuffer vertexBuffer,
@Nullable GpuBuffer indexBuffer,
VertexFormat.@Nullable IndexType indexType,
int firstIndex,
int indexCount,
int baseVertex,
@Nullable BiConsumer<T, RenderPass.UniformUploader> uniformUploaderConsumer
) {
public Draw(int slot, GpuBuffer vertexBuffer, GpuBuffer indexBuffer, VertexFormat.IndexType indexType, int firstIndex, int indexCount, int baseVertex) {
this(slot, vertexBuffer, indexBuffer, indexType, firstIndex, indexCount, baseVertex, null);
}
}
@OnlyIn(Dist.CLIENT)
public interface UniformUploader {
void upload(String name, GpuBufferSlice buffer);
}
}引用的其他类
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数/字段
- 引用位置:
-
- 引用位置:
参数/字段
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数
- 引用位置: