From 8ec90525e38aca6258d09248e02fb8ceb68ba822 Mon Sep 17 00:00:00 2001 From: RoosterDragon Date: Thu, 26 Apr 2018 21:18:14 +0100 Subject: [PATCH] Change Shader.Render to Shader.PrepareRender. Instead of running the shader operation as an action, just run it after the shader is prepared. --- OpenRA.Game/Graphics/ModelRenderer.cs | 3 ++- OpenRA.Game/Graphics/PlatformInterfaces.cs | 2 +- OpenRA.Game/Graphics/SpriteRenderer.cs | 8 ++++---- OpenRA.Platforms.Default/Shader.cs | 4 +--- 4 files changed, 8 insertions(+), 9 deletions(-) diff --git a/OpenRA.Game/Graphics/ModelRenderer.cs b/OpenRA.Game/Graphics/ModelRenderer.cs index eeceef210b..96d5a2bdf0 100644 --- a/OpenRA.Game/Graphics/ModelRenderer.cs +++ b/OpenRA.Game/Graphics/ModelRenderer.cs @@ -278,7 +278,8 @@ namespace OpenRA.Graphics shader.SetVec("AmbientLight", ambientLight, 3); shader.SetVec("DiffuseLight", diffuseLight, 3); - shader.Render(() => renderer.DrawBatch(cache.VertexBuffer, renderData.Start, renderData.Count, PrimitiveType.TriangleList)); + shader.PrepareRender(); + renderer.DrawBatch(cache.VertexBuffer, renderData.Start, renderData.Count, PrimitiveType.TriangleList); } public void BeginFrame() diff --git a/OpenRA.Game/Graphics/PlatformInterfaces.cs b/OpenRA.Game/Graphics/PlatformInterfaces.cs index 12a2259ab7..fe1ffcc450 100644 --- a/OpenRA.Game/Graphics/PlatformInterfaces.cs +++ b/OpenRA.Game/Graphics/PlatformInterfaces.cs @@ -89,7 +89,7 @@ namespace OpenRA void SetVec(string name, float[] vec, int length); void SetTexture(string param, ITexture texture); void SetMatrix(string param, float[] mtx); - void Render(Action a); + void PrepareRender(); } public enum TextureScaleFilter { Nearest, Linear } diff --git a/OpenRA.Game/Graphics/SpriteRenderer.cs b/OpenRA.Game/Graphics/SpriteRenderer.cs index 4b29b19967..07e1c74654 100644 --- a/OpenRA.Game/Graphics/SpriteRenderer.cs +++ b/OpenRA.Game/Graphics/SpriteRenderer.cs @@ -18,7 +18,6 @@ namespace OpenRA.Graphics { readonly Renderer renderer; readonly IShader shader; - readonly Action renderAction; readonly Vertex[] vertices; Sheet currentSheet; @@ -30,7 +29,6 @@ namespace OpenRA.Graphics this.renderer = renderer; this.shader = shader; vertices = new Vertex[renderer.TempBufferSize]; - renderAction = () => renderer.DrawBatch(vertices, nv, PrimitiveType.TriangleList); } public void Flush() @@ -41,7 +39,8 @@ namespace OpenRA.Graphics shader.SetTexture("DiffuseTexture", currentSheet.GetTexture()); renderer.Device.SetBlendMode(currentBlend); - shader.Render(renderAction); + shader.PrepareRender(); + renderer.DrawBatch(vertices, nv, PrimitiveType.TriangleList); renderer.Device.SetBlendMode(BlendMode.None); nv = 0; @@ -106,7 +105,8 @@ namespace OpenRA.Graphics { shader.SetTexture("DiffuseTexture", sheet.GetTexture()); renderer.Device.SetBlendMode(blendMode); - shader.Render(() => renderer.DrawBatch(buffer, start, length, type)); + shader.PrepareRender(); + renderer.DrawBatch(buffer, start, length, type); renderer.Device.SetBlendMode(BlendMode.None); } diff --git a/OpenRA.Platforms.Default/Shader.cs b/OpenRA.Platforms.Default/Shader.cs index 3517948f80..a373054887 100644 --- a/OpenRA.Platforms.Default/Shader.cs +++ b/OpenRA.Platforms.Default/Shader.cs @@ -130,7 +130,7 @@ namespace OpenRA.Platforms.Default } } - public void Render(Action a) + public void PrepareRender() { VerifyThreadAffinity(); OpenGL.glUseProgram(program); @@ -143,8 +143,6 @@ namespace OpenRA.Platforms.Default } OpenGL.CheckGLError(); - a(); - OpenGL.CheckGLError(); } public void SetTexture(string name, ITexture t)