Redirect IShader calls via respective *Renderers.

This commit is contained in:
Paul Chote
2013-03-04 20:40:23 +13:00
parent 21e8e3a78d
commit 8a53819f50
4 changed files with 35 additions and 42 deletions

View File

@@ -8,6 +8,7 @@
*/
#endregion
using System.Drawing;
using OpenRA.FileFormats.Graphics;
namespace OpenRA.Graphics
@@ -27,9 +28,6 @@ namespace OpenRA.Graphics
this.shader = shader;
}
public SpriteRenderer(Renderer renderer)
: this(renderer, renderer.SpriteShader) { }
public void Flush()
{
if (nv > 0)
@@ -72,7 +70,6 @@ namespace OpenRA.Graphics
nv += 4;
}
// For RGBASpriteRenderer, which doesn't use palettes
public void DrawSprite(Sprite s, float2 location)
{
@@ -83,5 +80,19 @@ namespace OpenRA.Graphics
{
DrawSprite(s, location, 0, size);
}
public void DrawVertexBuffer(IVertexBuffer<Vertex> buffer, int start, int length, PrimitiveType type, Sheet sheet)
{
shader.SetTexture("DiffuseTexture", sheet.Texture);
shader.Render(() => renderer.DrawBatch(buffer, start, length, type));
}
public void SetShaderParams(ITexture palette, Size screen, float zoom, float2 scroll)
{
shader.SetTexture("Palette", palette);
shader.SetVec("Scroll", (int)scroll.X, (int)scroll.Y);
shader.SetVec("r1", zoom*2f/screen.Width, -zoom*2f/screen.Height);
shader.SetVec("r2", -1, 1);
}
}
}