Set world framebuffer size based on minimum zoom.

This avoids reallocating buffers each time the player changes zoom level.
This commit is contained in:
Paul Chote
2021-05-15 13:45:09 +01:00
committed by reaperrr
parent 0735345674
commit 0d4b81fe6f
4 changed files with 38 additions and 19 deletions

View File

@@ -10,6 +10,7 @@
#endregion
using System.Diagnostics;
using OpenRA.Graphics;
using OpenRA.Support;
using OpenRA.Widgets;
@@ -18,7 +19,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
public class PerfDebugLogic : ChromeLogic
{
[ObjectCreator.UseCtor]
public PerfDebugLogic(Widget widget)
public PerfDebugLogic(Widget widget, WorldRenderer worldRenderer)
{
var perfGraph = widget.Get("GRAPH_BG");
perfGraph.IsVisible = () => Game.Settings.Debug.PerfGraph;
@@ -40,7 +41,13 @@ namespace OpenRA.Mods.Common.Widgets.Logic
fpsReferenceFrame = Game.RenderFrame;
}
return $"FPS: {fps}\nTick {Game.LocalTick} @ {PerfHistory.Items["tick_time"].Average(Game.Settings.Debug.Samples):F1} ms\nRender {Game.RenderFrame} @ {PerfHistory.Items["render"].Average(Game.Settings.Debug.Samples):F1} ms\nBatches: {PerfHistory.Items["batches"].LastValue}";
var wfbSize = Game.Renderer.WorldFrameBufferSize;
var viewportSize = worldRenderer.Viewport.Rectangle.Size;
return $"FPS: {fps}\nTick {Game.LocalTick} @ {PerfHistory.Items["tick_time"].Average(Game.Settings.Debug.Samples):F1} ms\n" +
$"Render {Game.RenderFrame} @ {PerfHistory.Items["render"].Average(Game.Settings.Debug.Samples):F1} ms\n" +
$"Batches: {PerfHistory.Items["batches"].LastValue}\n" +
$"Viewport Size: {viewportSize.Width} x {viewportSize.Height}\n" +
$"WFB Size: {wfbSize.Width} x {wfbSize.Height}";
};
}
}