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];
}
// Doesn't work
// TODO: Doesn't work (why?)
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);
}
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("r1", zoom*2f/screen.Width, -zoom*2f/screen.Height);

View File

@@ -57,7 +57,7 @@ namespace OpenRA.Graphics
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("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 SpriteRenderer { get; private set; }
public ITexture PaletteTexture;
Queue<IVertexBuffer<Vertex>> tempBuffers = new Queue<IVertexBuffer<Vertex>>();
public Dictionary<string, SpriteFont> Fonts;
@@ -67,12 +65,19 @@ namespace OpenRA.Graphics
public void BeginFrame(float2 scroll, float zoom)
{
device.Clear();
WorldSpriteRenderer.SetShaderParams(PaletteTexture, Resolution, zoom, scroll);
WorldLineRenderer.SetShaderParams(PaletteTexture, Resolution, zoom, scroll);
WorldQuadRenderer.SetShaderParams(PaletteTexture, Resolution, zoom, scroll);
SpriteRenderer.SetShaderParams(PaletteTexture, Resolution, 1f, float2.Zero);
LineRenderer.SetShaderParams(PaletteTexture, Resolution, 1f, float2.Zero);
RgbaSpriteRenderer.SetShaderParams(PaletteTexture, Resolution, 1f, float2.Zero);
WorldSpriteRenderer.SetViewportParams(Resolution, zoom, scroll);
SpriteRenderer.SetViewportParams(Resolution, 1f, float2.Zero);
RgbaSpriteRenderer.SetViewportParams(Resolution, 1f, float2.Zero);
WorldLineRenderer.SetViewportParams(Resolution, zoom, scroll);
WorldQuadRenderer.SetViewportParams(Resolution, zoom, scroll);
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)

View File

@@ -87,9 +87,13 @@ namespace OpenRA.Graphics
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);
}
public void SetViewportParams(Size screen, float zoom, float2 scroll)
{
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);