54 static constexpr size_t FRAME_COUNT = 256;
55 std::vector<float> mFrameTimes = std::vector<float>(FRAME_COUNT, 0.0f);
57#ifdef VCLIB_RENDER_BACKEND_OPENGL2
69 void onDraw(uint viewId)
74 ImGui::Begin(
"Stats",
nullptr);
76#ifdef VCLIB_RENDER_BACKEND_BGFX
78 static const std::unordered_map<uint16_t, const char*>
sVendorIdNames =
90 ImGui::SeparatorText(
"BGFX");
99 ImGui::Text(
"Device ID: %d", bgfx::getCaps()->
deviceId);
100 ImGui::Text(
"GPUs: %d", bgfx::getCaps()->
numGPUs);
105 const bgfx::Stats*
stats = bgfx::getStats();
106 ImGui::Text(
"Submitted calls:");
108 "\t%d draw - %d compute - %d blit",
112 ImGui::Text(
"Backbuffer size: %d x %d",
stats->width,
stats->height);
113 if (
stats->gpuMemoryUsed > 0) {
115 "GPU mem: %d / %d MB",
116 int(
stats->gpuMemoryUsed / (1024 * 1024)),
117 int(
stats->gpuMemoryMax / (1024 * 1024)));
120 "Texture memory: %d MB",
121 int(
stats->textureMemoryUsed / (1024 * 1024)));
123 "RT memory: %d MB",
int(
stats->rtMemoryUsed / (1024 * 1024)));
131 "Submit CPU %0.3f, GPU %0.3f (L: %d) ms",
134 stats->maxGpuLatency);
136#elif defined(VCLIB_RENDER_BACKEND_OPENGL2)
144 ImGui::SeparatorText(
"OpenGL");
155 mFrameTimes.begin(), mFrameTimes.begin() + 1, mFrameTimes.end());
156 mFrameTimes.back() = io.Framerate;
160 "Display size: %g x %g", io.DisplaySize.x, io.DisplaySize.y);
162 "Framebuffer scale: %g x %g",
163 io.DisplayFramebufferScale.x,
164 io.DisplayFramebufferScale.y);
171 int(mFrameTimes.size()),
180 "%.3f ms/frame (%.1f FPS)", 1000.0f / io.Framerate, io.Framerate);