diff --git a/OpenRA.Game/Graphics/SpriteRenderer.cs b/OpenRA.Game/Graphics/SpriteRenderer.cs index a1a8d7436d..f040e3f6c2 100644 --- a/OpenRA.Game/Graphics/SpriteRenderer.cs +++ b/OpenRA.Game/Graphics/SpriteRenderer.cs @@ -29,7 +29,7 @@ namespace OpenRA.Graphics this.renderer = renderer; this.shader = shader; vertices = new Vertex[renderer.TempBufferSize]; - renderAction = () => renderer.DrawBatch(vertices, nv, PrimitiveType.QuadList); + renderAction = () => renderer.DrawBatch(vertices, nv, PrimitiveType.TriangleList); } public void Flush() @@ -51,7 +51,7 @@ namespace OpenRA.Graphics { renderer.CurrentBatchRenderer = this; - if (s.BlendMode != currentBlend || s.Sheet != currentSheet || nv + 4 > renderer.TempBufferSize) + if (s.BlendMode != currentBlend || s.Sheet != currentSheet || nv + 6 > renderer.TempBufferSize) Flush(); currentBlend = s.BlendMode; @@ -72,7 +72,7 @@ namespace OpenRA.Graphics { SetRenderStateForSprite(s); Util.FastCreateQuad(vertices, location + s.FractionalOffset * size, s, paletteTextureIndex, nv, size); - nv += 4; + nv += 6; } // For RGBASpriteRenderer, which doesn't use palettes @@ -90,14 +90,14 @@ namespace OpenRA.Graphics { SetRenderStateForSprite(s); Util.FastCreateQuad(vertices, a, b, c, d, s, 0, nv); - nv += 4; + nv += 6; } public void DrawSprite(Sprite s, Vertex[] sourceVertices, int offset) { SetRenderStateForSprite(s); - Array.Copy(sourceVertices, offset, vertices, nv, 4); - nv += 4; + Array.Copy(sourceVertices, offset, vertices, nv, 6); + nv += 6; } public void DrawVertexBuffer(IVertexBuffer buffer, int start, int length, PrimitiveType type, Sheet sheet, BlendMode blendMode) diff --git a/OpenRA.Game/Graphics/TerrainSpriteLayer.cs b/OpenRA.Game/Graphics/TerrainSpriteLayer.cs index 153f7eca24..4da279e2f5 100644 --- a/OpenRA.Game/Graphics/TerrainSpriteLayer.cs +++ b/OpenRA.Game/Graphics/TerrainSpriteLayer.cs @@ -44,7 +44,7 @@ namespace OpenRA.Graphics this.palette = palette; map = world.Map; - rowStride = 4 * map.MapSize.X; + rowStride = 6 * map.MapSize.X; vertices = new Vertex[rowStride * map.MapSize.Y]; vertexBuffer = Game.Renderer.Device.CreateVertexBuffer(vertices.Length); @@ -87,7 +87,7 @@ namespace OpenRA.Graphics else sprite = emptySprite; - var offset = rowStride * uv.V + 4 * uv.U; + var offset = rowStride * uv.V + 6 * uv.U; Util.FastCreateQuad(vertices, pos, sprite, palette.TextureIndex, offset, sprite.Size); dirtyRows.Add(uv.V); @@ -123,7 +123,7 @@ namespace OpenRA.Graphics Game.Renderer.WorldSpriteRenderer.DrawVertexBuffer( vertexBuffer, rowStride * firstRow, rowStride * (lastRow - firstRow), - PrimitiveType.QuadList, Sheet, BlendMode); + PrimitiveType.TriangleList, Sheet, BlendMode); Game.Renderer.Flush(); } diff --git a/OpenRA.Game/Graphics/Util.cs b/OpenRA.Game/Graphics/Util.cs index 5167792447..0178c5ffc5 100644 --- a/OpenRA.Game/Graphics/Util.cs +++ b/OpenRA.Game/Graphics/Util.cs @@ -38,7 +38,9 @@ namespace OpenRA.Graphics vertices[nv] = new Vertex(a, r.Left, r.Top, paletteTextureIndex, attribC); vertices[nv + 1] = new Vertex(b, r.Right, r.Top, paletteTextureIndex, attribC); vertices[nv + 2] = new Vertex(c, r.Right, r.Bottom, paletteTextureIndex, attribC); - vertices[nv + 3] = new Vertex(d, r.Left, r.Bottom, paletteTextureIndex, attribC); + vertices[nv + 3] = new Vertex(c, r.Right, r.Bottom, paletteTextureIndex, attribC); + vertices[nv + 4] = new Vertex(d, r.Left, r.Bottom, paletteTextureIndex, attribC); + vertices[nv + 5] = new Vertex(a, r.Left, r.Top, paletteTextureIndex, attribC); } public static void FastCopyIntoChannel(Sprite dest, byte[] src) { FastCopyIntoChannel(dest, 0, src); }