Add quadIndexBuffer to Renderer
This commit is contained in:
committed by
Matthias Mailänder
parent
0b90622251
commit
2763e1502b
@@ -26,7 +26,7 @@ namespace OpenRA
|
||||
|
||||
public interface IPlatform
|
||||
{
|
||||
IPlatformWindow CreateWindow(Size size, WindowMode windowMode, float scaleModifier, int batchSize, int videoDisplay, GLProfile profile, bool enableLegacyGL);
|
||||
IPlatformWindow CreateWindow(Size size, WindowMode windowMode, float scaleModifier, int vertexBatchSize, int indexBatchSize, int videoDisplay, GLProfile profile, bool enableLegacyGL);
|
||||
ISoundEngine CreateSound(string device);
|
||||
IFont CreateFont(byte[] data);
|
||||
}
|
||||
|
||||
@@ -36,7 +36,7 @@ namespace OpenRA.Graphics
|
||||
{
|
||||
this.renderer = renderer;
|
||||
this.shader = shader;
|
||||
vertices = renderer.Context.CreateVertices(renderer.TempBufferSize);
|
||||
vertices = renderer.Context.CreateVertices(renderer.TempVertexBufferSize);
|
||||
}
|
||||
|
||||
public void Flush()
|
||||
@@ -65,7 +65,7 @@ namespace OpenRA.Graphics
|
||||
{
|
||||
renderer.CurrentBatchRenderer = this;
|
||||
|
||||
if (s.BlendMode != currentBlend || nv + 6 > renderer.TempBufferSize)
|
||||
if (s.BlendMode != currentBlend || nv + 6 > renderer.TempVertexBufferSize)
|
||||
Flush();
|
||||
|
||||
currentBlend = s.BlendMode;
|
||||
@@ -202,7 +202,7 @@ namespace OpenRA.Graphics
|
||||
{
|
||||
renderer.CurrentBatchRenderer = this;
|
||||
|
||||
if (currentBlend != blendMode || nv + v.Length > renderer.TempBufferSize)
|
||||
if (currentBlend != blendMode || nv + v.Length > renderer.TempVertexBufferSize)
|
||||
Flush();
|
||||
|
||||
currentBlend = blendMode;
|
||||
|
||||
@@ -41,9 +41,11 @@ namespace OpenRA
|
||||
internal IGraphicsContext Context { get; }
|
||||
|
||||
internal int SheetSize { get; }
|
||||
internal int TempBufferSize { get; }
|
||||
internal int TempVertexBufferSize { get; }
|
||||
internal int TempIndexBufferSize { get; }
|
||||
|
||||
readonly IVertexBuffer<Vertex> tempBuffer;
|
||||
readonly IVertexBuffer<Vertex> tempVertexBuffer;
|
||||
readonly IIndexBuffer quadIndexBuffer;
|
||||
readonly Stack<Rectangle> scissorState = new();
|
||||
|
||||
IFrameBuffer screenBuffer;
|
||||
@@ -75,13 +77,15 @@ namespace OpenRA
|
||||
this.platform = platform;
|
||||
var resolution = GetResolution(graphicSettings);
|
||||
|
||||
TempVertexBufferSize = graphicSettings.BatchSize - graphicSettings.BatchSize % 4;
|
||||
TempIndexBufferSize = TempVertexBufferSize / 4 * 6;
|
||||
|
||||
Window = platform.CreateWindow(new Size(resolution.Width, resolution.Height),
|
||||
graphicSettings.Mode, graphicSettings.UIScale, graphicSettings.BatchSize,
|
||||
graphicSettings.Mode, graphicSettings.UIScale, TempVertexBufferSize, TempIndexBufferSize,
|
||||
graphicSettings.VideoDisplay, graphicSettings.GLProfile, !graphicSettings.DisableLegacyGL);
|
||||
|
||||
Context = Window.Context;
|
||||
|
||||
TempBufferSize = graphicSettings.BatchSize;
|
||||
SheetSize = graphicSettings.SheetSize;
|
||||
|
||||
WorldSpriteRenderer = new SpriteRenderer(this, Context.CreateShader("combined"));
|
||||
@@ -92,7 +96,8 @@ namespace OpenRA
|
||||
RgbaSpriteRenderer = new RgbaSpriteRenderer(SpriteRenderer);
|
||||
RgbaColorRenderer = new RgbaColorRenderer(SpriteRenderer);
|
||||
|
||||
tempBuffer = Context.CreateVertexBuffer(TempBufferSize);
|
||||
tempVertexBuffer = Context.CreateVertexBuffer(TempVertexBufferSize);
|
||||
quadIndexBuffer = Context.CreateQuadIndexBuffer(TempIndexBufferSize);
|
||||
}
|
||||
|
||||
static Size GetResolution(GraphicSettings graphicsSettings)
|
||||
@@ -513,7 +518,8 @@ namespace OpenRA
|
||||
public void Dispose()
|
||||
{
|
||||
WorldModelRenderer.Dispose();
|
||||
tempBuffer.Dispose();
|
||||
tempVertexBuffer.Dispose();
|
||||
quadIndexBuffer.Dispose();
|
||||
fontSheetBuilder?.Dispose();
|
||||
if (Fonts != null)
|
||||
foreach (var font in Fonts.Values)
|
||||
|
||||
Reference in New Issue
Block a user