RenderSystem.java

com.mojang.blaze3d.systems.RenderSystem

信息

  • 全限定名:com.mojang.blaze3d.systems.RenderSystem
  • 类型:public class
  • 包:com.mojang.blaze3d.systems
  • 源码路径:src/main/java/com/mojang/blaze3d/systems/RenderSystem.java
  • 起始行号:L37
  • 职责:

    TODO

字段/常量

  • LOGGER

    • 类型: Logger
    • 修饰符: private static final
    • 源码定位: L38
    • 说明:

      TODO

  • MINIMUM_ATLAS_TEXTURE_SIZE

    • 类型: int
    • 修饰符: public static final
    • 源码定位: L39
    • 说明:

      TODO

  • PROJECTION_MATRIX_UBO_SIZE

    • 类型: int
    • 修饰符: public static final
    • 源码定位: L40
    • 说明:

      TODO

  • renderThread

    • 类型: Thread
    • 修饰符: private static
    • 源码定位: L41
    • 说明:

      TODO

  • DEVICE

    • 类型: GpuDevice
    • 修饰符: private static
    • 源码定位: L42
    • 说明:

      TODO

  • sharedSequential

    • 类型: RenderSystem.AutoStorageIndexBuffer
    • 修饰符: private static final
    • 源码定位: L43
    • 说明:

      TODO

  • sharedSequentialQuad

    • 类型: RenderSystem.AutoStorageIndexBuffer
    • 修饰符: private static final
    • 源码定位: L44
    • 说明:

      TODO

  • sharedSequentialLines

    • 类型: RenderSystem.AutoStorageIndexBuffer
    • 修饰符: private static final
    • 源码定位: L52
    • 说明:

      TODO

  • projectionType

    • 类型: ProjectionType
    • 修饰符: private static
    • 源码定位: L60
    • 说明:

      TODO

  • savedProjectionType

    • 类型: ProjectionType
    • 修饰符: private static
    • 源码定位: L61
    • 说明:

      TODO

  • modelViewStack

    • 类型: Matrix4fStack
    • 修饰符: private static final
    • 源码定位: L62
    • 说明:

      TODO

  • shaderFog

    • 类型: GpuBufferSlice
    • 修饰符: private static
    • 源码定位: L63
    • 说明:

      TODO

  • shaderLightDirections

    • 类型: GpuBufferSlice
    • 修饰符: private static
    • 源码定位: L64
    • 说明:

      TODO

  • projectionMatrixBuffer

    • 类型: GpuBufferSlice
    • 修饰符: private static
    • 源码定位: L65
    • 说明:

      TODO

  • savedProjectionMatrixBuffer

    • 类型: GpuBufferSlice
    • 修饰符: private static
    • 源码定位: L66
    • 说明:

      TODO

  • apiDescription

    • 类型: String
    • 修饰符: private static
    • 源码定位: L67
    • 说明:

      TODO

  • pollEventsWaitStart

    • 类型: AtomicLong
    • 修饰符: private static final
    • 源码定位: L68
    • 说明:

      TODO

  • pollingEvents

    • 类型: AtomicBoolean
    • 修饰符: private static final
    • 源码定位: L69
    • 说明:

      TODO

  • PENDING_FENCES

    • 类型: ArrayListDeque<RenderSystem.GpuAsyncTask>
    • 修饰符: private static final
    • 源码定位: L70
    • 说明:

      TODO

  • outputColorTextureOverride

    • 类型: GpuTextureView
    • 修饰符: public static
    • 源码定位: L71
    • 说明:

      TODO

  • outputDepthTextureOverride

    • 类型: GpuTextureView
    • 修饰符: public static
    • 源码定位: L72
    • 说明:

      TODO

  • globalSettingsUniform

    • 类型: GpuBuffer
    • 修饰符: private static
    • 源码定位: L73
    • 说明:

      TODO

  • dynamicUniforms

    • 类型: DynamicUniforms
    • 修饰符: private static
    • 源码定位: L74
    • 说明:

      TODO

  • scissorStateForRenderTypeDraws

    • 类型: ScissorState
    • 修饰符: private static final
    • 源码定位: L75
    • 说明:

      TODO

  • samplerCache

    • 类型: SamplerCache
    • 修饰符: private static final
    • 源码定位: L76
    • 说明:

      TODO

内部类/嵌套类型

  • com.mojang.blaze3d.systems.RenderSystem.AutoStorageIndexBuffer

    • 类型: class
    • 修饰符: public static final
    • 源码定位: L304
    • 说明:

      TODO

  • com.mojang.blaze3d.systems.RenderSystem.AutoStorageIndexBuffer.IndexGenerator

    • 类型: interface
    • 修饰符: private
    • 源码定位: L374
    • 说明:

      TODO

  • com.mojang.blaze3d.systems.RenderSystem.GpuAsyncTask

    • 类型: record
    • 修饰符: package-private
    • 源码定位: L380
    • 说明:

      TODO

构造器

方法

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

public static SamplerCache getSamplerCache() @ L78

  • 方法名:getSamplerCache
  • 源码定位:L78
  • 返回类型:SamplerCache
  • 修饰符:public static

参数:

说明:

TODO

public static void initRenderThread() @ L82

  • 方法名:initRenderThread
  • 源码定位:L82
  • 返回类型:void
  • 修饰符:public static

参数:

说明:

TODO

public static boolean isOnRenderThread() @ L90

  • 方法名:isOnRenderThread
  • 源码定位:L90
  • 返回类型:boolean
  • 修饰符:public static

参数:

说明:

TODO

public static void assertOnRenderThread() @ L94

  • 方法名:assertOnRenderThread
  • 源码定位:L94
  • 返回类型:void
  • 修饰符:public static

参数:

说明:

TODO

private static IllegalStateException constructThreadException() @ L100

  • 方法名:constructThreadException
  • 源码定位:L100
  • 返回类型:IllegalStateException
  • 修饰符:private static

参数:

说明:

TODO

public static void pollEvents() @ L104

  • 方法名:pollEvents
  • 源码定位:L104
  • 返回类型:void
  • 修饰符:public static

参数:

说明:

TODO

public static boolean isFrozenAtPollEvents() @ L111

  • 方法名:isFrozenAtPollEvents
  • 源码定位:L111
  • 返回类型:boolean
  • 修饰符:public static

参数:

说明:

TODO

public static void flipFrame(TracyFrameCapture tracyFrameCapture) @ L115

  • 方法名:flipFrame
  • 源码定位:L115
  • 返回类型:void
  • 修饰符:public static

参数:

  • tracyFrameCapture: TracyFrameCapture

说明:

TODO

public static void setShaderFog(GpuBufferSlice fog) @ L126

  • 方法名:setShaderFog
  • 源码定位:L126
  • 返回类型:void
  • 修饰符:public static

参数:

  • fog: GpuBufferSlice

说明:

TODO

public static GpuBufferSlice getShaderFog() @ L130

  • 方法名:getShaderFog
  • 源码定位:L130
  • 返回类型:GpuBufferSlice
  • 修饰符:public static

参数:

说明:

TODO

public static void setShaderLights(GpuBufferSlice buffer) @ L134

  • 方法名:setShaderLights
  • 源码定位:L134
  • 返回类型:void
  • 修饰符:public static

参数:

  • buffer: GpuBufferSlice

说明:

TODO

public static GpuBufferSlice getShaderLights() @ L138

  • 方法名:getShaderLights
  • 源码定位:L138
  • 返回类型:GpuBufferSlice
  • 修饰符:public static

参数:

说明:

TODO

public static void enableScissorForRenderTypeDraws(int x, int y, int width, int height) @ L142

  • 方法名:enableScissorForRenderTypeDraws
  • 源码定位:L142
  • 返回类型:void
  • 修饰符:public static

参数:

  • x: int
  • y: int
  • width: int
  • height: int

说明:

TODO

public static void disableScissorForRenderTypeDraws() @ L146

  • 方法名:disableScissorForRenderTypeDraws
  • 源码定位:L146
  • 返回类型:void
  • 修饰符:public static

参数:

说明:

TODO

public static ScissorState getScissorStateForRenderTypeDraws() @ L150

  • 方法名:getScissorStateForRenderTypeDraws
  • 源码定位:L150
  • 返回类型:ScissorState
  • 修饰符:public static

参数:

说明:

TODO

public static String getBackendDescription() @ L154

  • 方法名:getBackendDescription
  • 源码定位:L154
  • 返回类型:String
  • 修饰符:public static

参数:

说明:

TODO

public static String getApiDescription() @ L158

  • 方法名:getApiDescription
  • 源码定位:L158
  • 返回类型:String
  • 修饰符:public static

参数:

说明:

TODO

public static TimeSource.NanoTimeSource initBackendSystem(BackendOptions options) @ L162

  • 方法名:initBackendSystem
  • 源码定位:L162
  • 返回类型:TimeSource.NanoTimeSource
  • 修饰符:public static

参数:

  • options: BackendOptions

说明:

TODO

public static void initRenderer(GpuDevice device) @ L166

  • 方法名:initRenderer
  • 源码定位:L166
  • 返回类型:void
  • 修饰符:public static

参数:

  • device: GpuDevice

说明:

TODO

public static void setErrorCallback(GLFWErrorCallbackI onFullscreenError) @ L177

  • 方法名:setErrorCallback
  • 源码定位:L177
  • 返回类型:void
  • 修饰符:public static

参数:

  • onFullscreenError: GLFWErrorCallbackI

说明:

TODO

public static void setupDefaultState() @ L181

  • 方法名:setupDefaultState
  • 源码定位:L181
  • 返回类型:void
  • 修饰符:public static

参数:

说明:

TODO

public static void setProjectionMatrix(GpuBufferSlice projectionMatrixBuffer, ProjectionType type) @ L185

  • 方法名:setProjectionMatrix
  • 源码定位:L185
  • 返回类型:void
  • 修饰符:public static

参数:

  • projectionMatrixBuffer: GpuBufferSlice
  • type: ProjectionType

说明:

TODO

public static void backupProjectionMatrix() @ L191

  • 方法名:backupProjectionMatrix
  • 源码定位:L191
  • 返回类型:void
  • 修饰符:public static

参数:

说明:

TODO

public static void restoreProjectionMatrix() @ L197

  • 方法名:restoreProjectionMatrix
  • 源码定位:L197
  • 返回类型:void
  • 修饰符:public static

参数:

说明:

TODO

public static GpuBufferSlice getProjectionMatrixBuffer() @ L203

  • 方法名:getProjectionMatrixBuffer
  • 源码定位:L203
  • 返回类型:GpuBufferSlice
  • 修饰符:public static

参数:

说明:

TODO

public static Matrix4f getModelViewMatrix() @ L208

  • 方法名:getModelViewMatrix
  • 源码定位:L208
  • 返回类型:Matrix4f
  • 修饰符:public static

参数:

说明:

TODO

public static Matrix4fStack getModelViewStack() @ L213

  • 方法名:getModelViewStack
  • 源码定位:L213
  • 返回类型:Matrix4fStack
  • 修饰符:public static

参数:

说明:

TODO

public static RenderSystem.AutoStorageIndexBuffer getSequentialBuffer(VertexFormat.Mode primitiveMode) @ L218

  • 方法名:getSequentialBuffer
  • 源码定位:L218
  • 返回类型:RenderSystem.AutoStorageIndexBuffer
  • 修饰符:public static

参数:

  • primitiveMode: VertexFormat.Mode

说明:

TODO

public static void setGlobalSettingsUniform(GpuBuffer buffer) @ L228

  • 方法名:setGlobalSettingsUniform
  • 源码定位:L228
  • 返回类型:void
  • 修饰符:public static

参数:

  • buffer: GpuBuffer

说明:

TODO

public static GpuBuffer getGlobalSettingsUniform() @ L232

  • 方法名:getGlobalSettingsUniform
  • 源码定位:L232
  • 返回类型:GpuBuffer
  • 修饰符:public static

参数:

说明:

TODO

public static ProjectionType getProjectionType() @ L236

  • 方法名:getProjectionType
  • 源码定位:L236
  • 返回类型:ProjectionType
  • 修饰符:public static

参数:

说明:

TODO

public static void queueFencedTask(Runnable task) @ L241

  • 方法名:queueFencedTask
  • 源码定位:L241
  • 返回类型:void
  • 修饰符:public static

参数:

  • task: Runnable

说明:

TODO

public static void executePendingTasks() @ L245

  • 方法名:executePendingTasks
  • 源码定位:L245
  • 返回类型:void
  • 修饰符:public static

参数:

说明:

TODO

public static GpuDevice getDevice() @ L261

  • 方法名:getDevice
  • 源码定位:L261
  • 返回类型:GpuDevice
  • 修饰符:public static

参数:

说明:

TODO

public static GpuDevice tryGetDevice() @ L269

  • 方法名:tryGetDevice
  • 源码定位:L269
  • 返回类型:GpuDevice
  • 修饰符:public static

参数:

说明:

TODO

public static DynamicUniforms getDynamicUniforms() @ L273

  • 方法名:getDynamicUniforms
  • 源码定位:L273
  • 返回类型:DynamicUniforms
  • 修饰符:public static

参数:

说明:

TODO

public static void bindDefaultUniforms(RenderPass renderPass) @ L281

  • 方法名:bindDefaultUniforms
  • 源码定位:L281
  • 返回类型:void
  • 修饰符:public static

参数:

  • renderPass: RenderPass

说明:

TODO

代码

@OnlyIn(Dist.CLIENT)
public class RenderSystem {
    private static final Logger LOGGER = LogUtils.getLogger();
    public static final int MINIMUM_ATLAS_TEXTURE_SIZE = 1024;
    public static final int PROJECTION_MATRIX_UBO_SIZE = new Std140SizeCalculator().putMat4f().get();
    private static @Nullable Thread renderThread;
    private static @Nullable GpuDevice DEVICE;
    private static final RenderSystem.AutoStorageIndexBuffer sharedSequential = new RenderSystem.AutoStorageIndexBuffer(1, 1, IntConsumer::accept);
    private static final RenderSystem.AutoStorageIndexBuffer sharedSequentialQuad = new RenderSystem.AutoStorageIndexBuffer(4, 6, (c, i) -> {
        c.accept(i);
        c.accept(i + 1);
        c.accept(i + 2);
        c.accept(i + 2);
        c.accept(i + 3);
        c.accept(i);
    });
    private static final RenderSystem.AutoStorageIndexBuffer sharedSequentialLines = new RenderSystem.AutoStorageIndexBuffer(4, 6, (c, i) -> {
        c.accept(i);
        c.accept(i + 1);
        c.accept(i + 2);
        c.accept(i + 3);
        c.accept(i + 2);
        c.accept(i + 1);
    });
    private static ProjectionType projectionType = ProjectionType.PERSPECTIVE;
    private static ProjectionType savedProjectionType = ProjectionType.PERSPECTIVE;
    private static final Matrix4fStack modelViewStack = new Matrix4fStack(16);
    private static @Nullable GpuBufferSlice shaderFog = null;
    private static @Nullable GpuBufferSlice shaderLightDirections;
    private static @Nullable GpuBufferSlice projectionMatrixBuffer;
    private static @Nullable GpuBufferSlice savedProjectionMatrixBuffer;
    private static String apiDescription = "Unknown";
    private static final AtomicLong pollEventsWaitStart = new AtomicLong();
    private static final AtomicBoolean pollingEvents = new AtomicBoolean(false);
    private static final ArrayListDeque<RenderSystem.GpuAsyncTask> PENDING_FENCES = new ArrayListDeque<>();
    public static @Nullable GpuTextureView outputColorTextureOverride;
    public static @Nullable GpuTextureView outputDepthTextureOverride;
    private static @Nullable GpuBuffer globalSettingsUniform;
    private static @Nullable DynamicUniforms dynamicUniforms;
    private static final ScissorState scissorStateForRenderTypeDraws = new ScissorState();
    private static final SamplerCache samplerCache = new SamplerCache();
 
    public static SamplerCache getSamplerCache() {
        return samplerCache;
    }
 
    public static void initRenderThread() {
        if (renderThread != null) {
            throw new IllegalStateException("Could not initialize render thread");
        } else {
            renderThread = Thread.currentThread();
        }
    }
 
    public static boolean isOnRenderThread() {
        return Thread.currentThread() == renderThread;
    }
 
    public static void assertOnRenderThread() {
        if (!isOnRenderThread()) {
            throw constructThreadException();
        }
    }
 
    private static IllegalStateException constructThreadException() {
        return new IllegalStateException("Rendersystem called from wrong thread");
    }
 
    public static void pollEvents() {
        pollEventsWaitStart.set(Util.getMillis());
        pollingEvents.set(true);
        GLFW.glfwPollEvents();
        pollingEvents.set(false);
    }
 
    public static boolean isFrozenAtPollEvents() {
        return pollingEvents.get() && Util.getMillis() - pollEventsWaitStart.get() > 200L;
    }
 
    public static void flipFrame(@Nullable TracyFrameCapture tracyFrameCapture) {
        Tesselator.getInstance().clear();
        getDevice().presentFrame();
        if (tracyFrameCapture != null) {
            tracyFrameCapture.endFrame();
        }
 
        dynamicUniforms.reset();
        Minecraft.getInstance().levelRenderer.endFrame();
    }
 
    public static void setShaderFog(GpuBufferSlice fog) {
        shaderFog = fog;
    }
 
    public static @Nullable GpuBufferSlice getShaderFog() {
        return shaderFog;
    }
 
    public static void setShaderLights(GpuBufferSlice buffer) {
        shaderLightDirections = buffer;
    }
 
    public static @Nullable GpuBufferSlice getShaderLights() {
        return shaderLightDirections;
    }
 
    public static void enableScissorForRenderTypeDraws(int x, int y, int width, int height) {
        scissorStateForRenderTypeDraws.enable(x, y, width, height);
    }
 
    public static void disableScissorForRenderTypeDraws() {
        scissorStateForRenderTypeDraws.disable();
    }
 
    public static ScissorState getScissorStateForRenderTypeDraws() {
        return scissorStateForRenderTypeDraws;
    }
 
    public static String getBackendDescription() {
        return String.format(Locale.ROOT, "LWJGL version %s", GLX._getLWJGLVersion());
    }
 
    public static String getApiDescription() {
        return apiDescription;
    }
 
    public static TimeSource.NanoTimeSource initBackendSystem(BackendOptions options) {
        return GLX._initGlfw(options)::getAsLong;
    }
 
    public static void initRenderer(GpuDevice device) {
        if (DEVICE != null) {
            throw new IllegalStateException("RenderSystem.DEVICE already initialized");
        } else {
            DEVICE = device;
            apiDescription = getDevice().getImplementationInformation();
            dynamicUniforms = new DynamicUniforms();
            samplerCache.initialize();
        }
    }
 
    public static void setErrorCallback(GLFWErrorCallbackI onFullscreenError) {
        GLX._setGlfwErrorCallback(onFullscreenError);
    }
 
    public static void setupDefaultState() {
        modelViewStack.clear();
    }
 
    public static void setProjectionMatrix(GpuBufferSlice projectionMatrixBuffer, ProjectionType type) {
        assertOnRenderThread();
        RenderSystem.projectionMatrixBuffer = projectionMatrixBuffer;
        projectionType = type;
    }
 
    public static void backupProjectionMatrix() {
        assertOnRenderThread();
        savedProjectionMatrixBuffer = projectionMatrixBuffer;
        savedProjectionType = projectionType;
    }
 
    public static void restoreProjectionMatrix() {
        assertOnRenderThread();
        projectionMatrixBuffer = savedProjectionMatrixBuffer;
        projectionType = savedProjectionType;
    }
 
    public static @Nullable GpuBufferSlice getProjectionMatrixBuffer() {
        assertOnRenderThread();
        return projectionMatrixBuffer;
    }
 
    public static Matrix4f getModelViewMatrix() {
        assertOnRenderThread();
        return modelViewStack;
    }
 
    public static Matrix4fStack getModelViewStack() {
        assertOnRenderThread();
        return modelViewStack;
    }
 
    public static RenderSystem.AutoStorageIndexBuffer getSequentialBuffer(VertexFormat.Mode primitiveMode) {
        assertOnRenderThread();
 
        return switch (primitiveMode) {
            case QUADS -> sharedSequentialQuad;
            case LINES -> sharedSequentialLines;
            default -> sharedSequential;
        };
    }
 
    public static void setGlobalSettingsUniform(GpuBuffer buffer) {
        globalSettingsUniform = buffer;
    }
 
    public static @Nullable GpuBuffer getGlobalSettingsUniform() {
        return globalSettingsUniform;
    }
 
    public static ProjectionType getProjectionType() {
        assertOnRenderThread();
        return projectionType;
    }
 
    public static void queueFencedTask(Runnable task) {
        PENDING_FENCES.addLast(new RenderSystem.GpuAsyncTask(task, getDevice().createCommandEncoder().createFence()));
    }
 
    public static void executePendingTasks() {
        for (RenderSystem.GpuAsyncTask task = PENDING_FENCES.peekFirst(); task != null; task = PENDING_FENCES.peekFirst()) {
            if (!task.fence.awaitCompletion(0L)) {
                return;
            }
 
            try {
                task.callback.run();
            } finally {
                task.fence.close();
            }
 
            PENDING_FENCES.removeFirst();
        }
    }
 
    public static GpuDevice getDevice() {
        if (DEVICE == null) {
            throw new IllegalStateException("Can't getDevice() before it was initialized");
        } else {
            return DEVICE;
        }
    }
 
    public static @Nullable GpuDevice tryGetDevice() {
        return DEVICE;
    }
 
    public static DynamicUniforms getDynamicUniforms() {
        if (dynamicUniforms == null) {
            throw new IllegalStateException("Can't getDynamicUniforms() before device was initialized");
        } else {
            return dynamicUniforms;
        }
    }
 
    public static void bindDefaultUniforms(RenderPass renderPass) {
        GpuBufferSlice projectionMatrix = getProjectionMatrixBuffer();
        if (projectionMatrix != null) {
            renderPass.setUniform("Projection", projectionMatrix);
        }
 
        GpuBufferSlice fog = getShaderFog();
        if (fog != null) {
            renderPass.setUniform("Fog", fog);
        }
 
        GpuBuffer globalUniform = getGlobalSettingsUniform();
        if (globalUniform != null) {
            renderPass.setUniform("Globals", globalUniform);
        }
 
        GpuBufferSlice shaderLights = getShaderLights();
        if (shaderLights != null) {
            renderPass.setUniform("Lighting", shaderLights);
        }
    }
 
    @OnlyIn(Dist.CLIENT)
    public static final class AutoStorageIndexBuffer {
        private final int vertexStride;
        private final int indexStride;
        private final RenderSystem.AutoStorageIndexBuffer.IndexGenerator generator;
        private @Nullable GpuBuffer buffer;
        private VertexFormat.IndexType type = VertexFormat.IndexType.SHORT;
        private int indexCount;
 
        private AutoStorageIndexBuffer(int vertexStride, int indexStride, RenderSystem.AutoStorageIndexBuffer.IndexGenerator generator) {
            this.vertexStride = vertexStride;
            this.indexStride = indexStride;
            this.generator = generator;
        }
 
        public boolean hasStorage(int indexCount) {
            return indexCount <= this.indexCount;
        }
 
        public GpuBuffer getBuffer(int indexCount) {
            this.ensureStorage(indexCount);
            return this.buffer;
        }
 
        private void ensureStorage(int indexCount) {
            if (!this.hasStorage(indexCount)) {
                indexCount = Mth.roundToward(indexCount * 2, this.indexStride);
                RenderSystem.LOGGER.debug("Growing IndexBuffer: Old limit {}, new limit {}.", this.indexCount, indexCount);
                int primitiveCount = indexCount / this.indexStride;
                int vertexCount = primitiveCount * this.vertexStride;
                VertexFormat.IndexType type = VertexFormat.IndexType.least(vertexCount);
                int bufferSize = Mth.roundToward(indexCount * type.bytes, 4);
                ByteBuffer data = MemoryUtil.memAlloc(bufferSize);
 
                try {
                    this.type = type;
                    it.unimi.dsi.fastutil.ints.IntConsumer intConsumer = this.intConsumer(data);
 
                    for (int ii = 0; ii < indexCount; ii += this.indexStride) {
                        this.generator.accept(intConsumer, ii * this.vertexStride / this.indexStride);
                    }
 
                    data.flip();
                    if (this.buffer != null) {
                        this.buffer.close();
                    }
 
                    this.buffer = RenderSystem.getDevice().createBuffer(() -> "Auto Storage index buffer", 64, data);
                } finally {
                    MemoryUtil.memFree(data);
                }
 
                this.indexCount = indexCount;
            }
        }
 
        private it.unimi.dsi.fastutil.ints.IntConsumer intConsumer(ByteBuffer buffer) {
            switch (this.type) {
                case SHORT:
                    return value -> buffer.putShort((short)value);
                case INT:
                default:
                    return buffer::putInt;
            }
        }
 
        public VertexFormat.IndexType type() {
            return this.type;
        }
 
        @OnlyIn(Dist.CLIENT)
        private interface IndexGenerator {
            void accept(final it.unimi.dsi.fastutil.ints.IntConsumer consumer, final int start);
        }
    }
 
    @OnlyIn(Dist.CLIENT)
    record GpuAsyncTask(Runnable callback, GpuFence fence) {
    }
}

引用的其他类

  • ProjectionType

    • 引用位置: 参数/字段/返回值
  • TracyFrameCapture

    • 引用位置: 参数
  • GpuBuffer

    • 引用位置: 参数/字段/返回值
  • GpuBufferSlice

    • 引用位置: 参数/字段/返回值
  • Std140SizeCalculator

    • 引用位置: 构造调用
    • 关联成员: Std140SizeCalculator()
  • BackendOptions

    • 引用位置: 参数
  • GLX

    • 引用位置: 方法调用
    • 关联成员: GLX._getLWJGLVersion(), GLX._initGlfw(), GLX._setGlfwErrorCallback()
  • GpuDevice

    • 引用位置: 参数/字段/返回值
  • RenderPass

    • 引用位置: 参数
  • SamplerCache

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

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

    • 引用位置: 字段
  • Tesselator

    • 引用位置: 方法调用
    • 关联成员: Tesselator.getInstance()
  • VertexFormat

    • 引用位置: 参数/方法调用
    • 关联成员: VertexFormat.IndexType.least()
  • Minecraft

    • 引用位置: 方法调用
    • 关联成员: Minecraft.getInstance()
  • DynamicUniforms

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

    • 引用位置: 字段
  • Mth

    • 引用位置: 方法调用
    • 关联成员: Mth.roundToward()
  • TimeSource

    • 引用位置: 返回值
  • Util

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