make PaletteTexture private and only use it for sprite renders

This commit is contained in:
Matthias Mailänder
2013-04-04 18:40:56 +02:00
parent 99516fd2b9
commit 6c6f5601d8
5 changed files with 22 additions and 13 deletions

View File

@@ -78,9 +78,9 @@ namespace OpenRA.Graphics
data[j,i] = c[i]; data[j,i] = c[i];
} }
// Doesn't work // TODO: Doesn't work (why?)
texture.SetData(data); texture.SetData(data);
Game.Renderer.PaletteTexture = texture; Game.Renderer.SetPalette(texture);
} }
} }
} }

View File

@@ -78,7 +78,7 @@ namespace OpenRA.Graphics
DrawLine(new float2(r.Left, y), new float2(r.Right, y), color, color); DrawLine(new float2(r.Left, y), new float2(r.Right, y), color, color);
} }
public void SetShaderParams(ITexture palette, Size screen, float zoom, float2 scroll) public void SetViewportParams(Size screen, float zoom, float2 scroll)
{ {
shader.SetVec("Scroll", (int)scroll.X, (int)scroll.Y); shader.SetVec("Scroll", (int)scroll.X, (int)scroll.Y);
shader.SetVec("r1", zoom*2f/screen.Width, -zoom*2f/screen.Height); shader.SetVec("r1", zoom*2f/screen.Width, -zoom*2f/screen.Height);

View File

@@ -57,7 +57,7 @@ namespace OpenRA.Graphics
nv += 4; nv += 4;
} }
public void SetShaderParams(ITexture palette, Size screen, float zoom, float2 scroll) public void SetViewportParams(Size screen, float zoom, float2 scroll)
{ {
shader.SetVec("Scroll", (int)scroll.X, (int)scroll.Y); shader.SetVec("Scroll", (int)scroll.X, (int)scroll.Y);
shader.SetVec("r1", zoom*2f/screen.Width, -zoom*2f/screen.Height); shader.SetVec("r1", zoom*2f/screen.Width, -zoom*2f/screen.Height);

View File

@@ -34,8 +34,6 @@ namespace OpenRA.Graphics
public SpriteRenderer RgbaSpriteRenderer { get; private set; } public SpriteRenderer RgbaSpriteRenderer { get; private set; }
public SpriteRenderer SpriteRenderer { get; private set; } public SpriteRenderer SpriteRenderer { get; private set; }
public ITexture PaletteTexture;
Queue<IVertexBuffer<Vertex>> tempBuffers = new Queue<IVertexBuffer<Vertex>>(); Queue<IVertexBuffer<Vertex>> tempBuffers = new Queue<IVertexBuffer<Vertex>>();
public Dictionary<string, SpriteFont> Fonts; public Dictionary<string, SpriteFont> Fonts;
@@ -67,12 +65,19 @@ namespace OpenRA.Graphics
public void BeginFrame(float2 scroll, float zoom) public void BeginFrame(float2 scroll, float zoom)
{ {
device.Clear(); device.Clear();
WorldSpriteRenderer.SetShaderParams(PaletteTexture, Resolution, zoom, scroll); WorldSpriteRenderer.SetViewportParams(Resolution, zoom, scroll);
WorldLineRenderer.SetShaderParams(PaletteTexture, Resolution, zoom, scroll); SpriteRenderer.SetViewportParams(Resolution, 1f, float2.Zero);
WorldQuadRenderer.SetShaderParams(PaletteTexture, Resolution, zoom, scroll); RgbaSpriteRenderer.SetViewportParams(Resolution, 1f, float2.Zero);
SpriteRenderer.SetShaderParams(PaletteTexture, Resolution, 1f, float2.Zero); WorldLineRenderer.SetViewportParams(Resolution, zoom, scroll);
LineRenderer.SetShaderParams(PaletteTexture, Resolution, 1f, float2.Zero); WorldQuadRenderer.SetViewportParams(Resolution, zoom, scroll);
RgbaSpriteRenderer.SetShaderParams(PaletteTexture, Resolution, 1f, float2.Zero); LineRenderer.SetViewportParams(Resolution, 1f, float2.Zero);
}
public void SetPalette(ITexture paletteTexture)
{
RgbaSpriteRenderer.SetPalette(paletteTexture);
SpriteRenderer.SetPalette(paletteTexture);
WorldSpriteRenderer.SetPalette(paletteTexture);
} }
public void EndFrame(IInputHandler inputHandler) public void EndFrame(IInputHandler inputHandler)

View File

@@ -87,9 +87,13 @@ namespace OpenRA.Graphics
shader.Render(() => renderer.DrawBatch(buffer, start, length, type)); shader.Render(() => renderer.DrawBatch(buffer, start, length, type));
} }
public void SetShaderParams(ITexture palette, Size screen, float zoom, float2 scroll) public void SetPalette(ITexture palette)
{ {
shader.SetTexture("Palette", palette); shader.SetTexture("Palette", palette);
}
public void SetViewportParams(Size screen, float zoom, float2 scroll)
{
shader.SetVec("Scroll", (int)scroll.X, (int)scroll.Y); shader.SetVec("Scroll", (int)scroll.X, (int)scroll.Y);
shader.SetVec("r1", zoom*2f/screen.Width, -zoom*2f/screen.Height); shader.SetVec("r1", zoom*2f/screen.Width, -zoom*2f/screen.Height);
shader.SetVec("r2", -1, 1); shader.SetVec("r2", -1, 1);