Apply DrawNode batching changes

This commit is contained in:
Dan Balasescu
2022-07-29 23:32:06 +09:00
parent 155dac55d0
commit 09979d44aa
4 changed files with 25 additions and 21 deletions

View File

@ -6,7 +6,6 @@ using System.Collections.Generic;
using osu.Framework.Allocation;
using osu.Framework.Bindables;
using osu.Framework.Graphics;
using osu.Framework.Graphics.Batches;
using osu.Framework.Graphics.OpenGL.Vertices;
using osu.Framework.Graphics.Primitives;
using osu.Framework.Graphics.Rendering;
@ -212,17 +211,12 @@ namespace osu.Game.Rulesets.Mods
private Vector2 flashlightSize;
private float flashlightDim;
private readonly VertexBatch<PositionAndColourVertex> quadBatch = new QuadBatch<PositionAndColourVertex>(1, 1);
private readonly Action<TexturedVertex2D> addAction;
private IVertexBatch<PositionAndColourVertex>? quadBatch;
private Action<TexturedVertex2D>? addAction;
public FlashlightDrawNode(Flashlight source)
: base(source)
{
addAction = v => quadBatch.Add(new PositionAndColourVertex
{
Position = v.Position,
Colour = v.Colour
});
}
public override void ApplyState()
@ -240,6 +234,16 @@ namespace osu.Game.Rulesets.Mods
{
base.Draw(renderer);
if (quadBatch == null)
{
quadBatch = renderer.CreateQuadBatch<PositionAndColourVertex>(1, 1);
addAction = v => quadBatch.Add(new PositionAndColourVertex
{
Position = v.Position,
Colour = v.Colour
});
}
shader.Bind();
shader.GetUniform<Vector2>("flashlightPos").UpdateValue(ref flashlightPosition);
@ -254,7 +258,7 @@ namespace osu.Game.Rulesets.Mods
protected override void Dispose(bool isDisposing)
{
base.Dispose(isDisposing);
quadBatch.Dispose();
quadBatch?.Dispose();
}
}
}