ClientMetricsSamplersProvider.java

net.minecraft.client.profiling.ClientMetricsSamplersProvider

信息

  • 全限定名:net.minecraft.client.profiling.ClientMetricsSamplersProvider
  • 类型:public class
  • 包:net.minecraft.client.profiling
  • 源码路径:src/main/java/net/minecraft/client/profiling/ClientMetricsSamplersProvider.java
  • 起始行号:L20
  • 实现:MetricsSamplerProvider
  • 职责:

    TODO

字段/常量

  • levelRenderer

    • 类型: LevelRenderer
    • 修饰符: private final
    • 源码定位: L21
    • 说明:

      TODO

  • samplers

    • 类型: Set<MetricSampler>
    • 修饰符: private final
    • 源码定位: L22
    • 说明:

      TODO

  • samplerFactory

    • 类型: ProfilerSamplerAdapter
    • 修饰符: private final
    • 源码定位: L23
    • 说明:

      TODO

内部类/嵌套类型

构造器

public ClientMetricsSamplersProvider(LongSupplier wallTimeSource, LevelRenderer levelRenderer) @ L25

  • 构造器名:ClientMetricsSamplersProvider
  • 源码定位:L25
  • 修饰符:public

参数:

  • wallTimeSource: LongSupplier
  • levelRenderer: LevelRenderer

说明:

TODO

方法

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

private void registerStaticSamplers() @ L31

  • 方法名:registerStaticSamplers
  • 源码定位:L31
  • 返回类型:void
  • 修饰符:private

参数:

说明:

TODO

public Set<MetricSampler> samplers(Supplier<ProfileCollector> singleTickProfiler) @ L55

  • 方法名:samplers
  • 源码定位:L55
  • 返回类型:Set
  • 修饰符:public

参数:

  • singleTickProfiler: Supplier

说明:

TODO

代码

@OnlyIn(Dist.CLIENT)
public class ClientMetricsSamplersProvider implements MetricsSamplerProvider {
    private final LevelRenderer levelRenderer;
    private final Set<MetricSampler> samplers = new ObjectOpenHashSet<>();
    private final ProfilerSamplerAdapter samplerFactory = new ProfilerSamplerAdapter();
 
    public ClientMetricsSamplersProvider(LongSupplier wallTimeSource, LevelRenderer levelRenderer) {
        this.levelRenderer = levelRenderer;
        this.samplers.add(ServerMetricsSamplersProvider.tickTimeSampler(wallTimeSource));
        this.registerStaticSamplers();
    }
 
    private void registerStaticSamplers() {
        this.samplers.addAll(ServerMetricsSamplersProvider.runtimeIndependentSamplers());
        this.samplers.add(MetricSampler.create("totalChunks", MetricCategory.CHUNK_RENDERING, this.levelRenderer, LevelRenderer::getTotalSections));
        this.samplers.add(MetricSampler.create("renderedChunks", MetricCategory.CHUNK_RENDERING, this.levelRenderer, LevelRenderer::countRenderedSections));
        this.samplers.add(MetricSampler.create("lastViewDistance", MetricCategory.CHUNK_RENDERING, this.levelRenderer, LevelRenderer::getLastViewDistance));
        SectionRenderDispatcher sectionRenderDispatcher = this.levelRenderer.getSectionRenderDispatcher();
        if (sectionRenderDispatcher != null) {
            this.samplers
                .add(
                    MetricSampler.create(
                        "freeBufferCount", MetricCategory.CHUNK_RENDERING_DISPATCHING, sectionRenderDispatcher, SectionRenderDispatcher::getFreeBufferCount
                    )
                );
            this.samplers
                .add(
                    MetricSampler.create(
                        "compileQueueSize", MetricCategory.CHUNK_RENDERING_DISPATCHING, sectionRenderDispatcher, SectionRenderDispatcher::getCompileQueueSize
                    )
                );
        }
 
        this.samplers.add(MetricSampler.create("gpuUtilization", MetricCategory.GPU, Minecraft.getInstance(), Minecraft::getGpuUtilization));
    }
 
    @Override
    public Set<MetricSampler> samplers(Supplier<ProfileCollector> singleTickProfiler) {
        this.samplers.addAll(this.samplerFactory.newSamplersFoundInProfiler(singleTickProfiler));
        return this.samplers;
    }
}

引用的其他类