From 34fc937db276eda439842b66eef83625204f2747 Mon Sep 17 00:00:00 2001 From: chrisf Date: Sat, 7 Jul 2007 03:29:45 +0000 Subject: [PATCH] git-svn-id: svn://svn.ijw.co.nz/svn/OpenRa@1119 993157c7-ee19-0410-b2c4-bb4e9862e678 --- BluntDx.dll | Bin 74752 -> 76288 bytes OpenRa.Game/MainWindow.cs | 63 +++++++++++++++++++++++++++++++++ OpenRa.Game/OpenRa.Game.csproj | 2 ++ OpenRa.Game/Sheet.cs | 29 +++++++++++++++ OpenRa.Game/Vertex.cs | 23 ++++++++++++ 5 files changed, 117 insertions(+) create mode 100644 OpenRa.Game/Sheet.cs create mode 100644 OpenRa.Game/Vertex.cs diff --git a/BluntDx.dll b/BluntDx.dll index cf1f0d1ce26deba688bed96303d065d9f86a9cf5..0644a43f5d597ccd21db0163fb1e4bd98644bedd 100644 GIT binary patch literal 76288 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 diff --git a/OpenRa.Game/MainWindow.cs b/OpenRa.Game/MainWindow.cs index 3c9b0ec143..2b7ab13e0b 100644 --- a/OpenRa.Game/MainWindow.cs +++ b/OpenRa.Game/MainWindow.cs @@ -6,6 +6,7 @@ using System.Drawing; using BluntDirectX.Direct3D; using OpenRa.FileFormats; using System.IO; +using System.Runtime.InteropServices; namespace OpenRa.Game { @@ -21,6 +22,58 @@ namespace OpenRa.Game const string mapName = "scm12ea.ini"; + Dictionary> tileMapping = + new Dictionary>(); + + FvfVertexBuffer vertexBuffer; + IndexBuffer indexBuffer; + + void LoadTextures() + { + List tempSheets = new List(); + + Provider sheetProvider = delegate + { + Sheet t = new Sheet( new Bitmap(256, 256)); + tempSheets.Add(t); + return t; + }; + + TileSheetBuilder builder = new TileSheetBuilder( new Size(256,256), sheetProvider ); + + for( int i = 0; i < 128; i++ ) + for (int j = 0; j < 128; j++) + { + TileReference tileRef = map.MapTiles[i, j]; + + if (!tileMapping.ContainsKey(tileRef)) + { + SheetRectangle rect = builder.AddImage(new Size(24, 24)); + Bitmap srcImage = tileSet.tiles[ tileRef.tile ].GetTile( tileRef.image ); + using (Graphics g = Graphics.FromImage(rect.sheet.bitmap)) + g.DrawImage(srcImage, rect.origin); + + tileMapping.Add(tileRef, rect); + } + } + + foreach (Sheet s in tempSheets) + s.LoadTexture(device); + } + + void LoadVertexBuffer() + { + Vertex[] vertices = new Vertex[4 * map.Width * map.Height]; + + vertexBuffer = new FvfVertexBuffer(device, vertices.Length, Vertex.Format); + vertexBuffer.SetData(vertices); + + ushort[] indices = new ushort[6 * map.Width * map.Height]; + + indexBuffer = new IndexBuffer(device, indices.Length); + indexBuffer.SetData(indices); + } + public MainWindow() { ClientSize = new Size(640, 480); @@ -35,6 +88,9 @@ namespace OpenRa.Game Text = string.Format("OpenRA - {0} - {1}", map.Title, mapName); tileSet = LoadTileSet(map); + + LoadTextures(); + LoadVertexBuffer(); } internal void Run() @@ -53,6 +109,11 @@ namespace OpenRa.Game // render something :) + //vertexBuffer.Bind(0); + //indexBuffer.Bind(); + + //device.DrawIndexedPrimitives(PrimitiveType.TriangleList, 2 * map.Width * map.Height); + device.End(); device.Present(); } @@ -81,5 +142,7 @@ namespace OpenRa.Game } return new TileSet(TileMix, TileSuffix, pal); } + + } } diff --git a/OpenRa.Game/OpenRa.Game.csproj b/OpenRa.Game/OpenRa.Game.csproj index 31029a5c52..72ccc8e056 100644 --- a/OpenRa.Game/OpenRa.Game.csproj +++ b/OpenRa.Game/OpenRa.Game.csproj @@ -44,6 +44,8 @@ + + diff --git a/OpenRa.Game/Sheet.cs b/OpenRa.Game/Sheet.cs new file mode 100644 index 0000000000..a7f68558e7 --- /dev/null +++ b/OpenRa.Game/Sheet.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Drawing; +using BluntDirectX.Direct3D; +using System.IO; +using System.Drawing.Imaging; + +namespace OpenRa.Game +{ + class Sheet + { + public readonly Bitmap bitmap; + public Texture texture; + + public Sheet(Bitmap b) { bitmap = b; } + + public void LoadTexture(GraphicsDevice device) + { + string tempFile = string.Format("../../../block-cache-{0}.bmp", suffix++); + bitmap.Save(tempFile); + + using( Stream s = File.OpenRead(tempFile) ) + texture = Texture.Create(s, device); + } + + static int suffix = 0; + } +} diff --git a/OpenRa.Game/Vertex.cs b/OpenRa.Game/Vertex.cs new file mode 100644 index 0000000000..140025efd3 --- /dev/null +++ b/OpenRa.Game/Vertex.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Runtime.InteropServices; +using BluntDirectX.Direct3D; + +namespace OpenRa.Game +{ + [StructLayout(LayoutKind.Sequential)] + struct Vertex + { + public float x, y, z, u, v; + + public Vertex(float x, float y, float z, float u, float v) + { + this.x = x; this.y = y; this.z = z; + this.u = u; + this.v = v; + } + + public const VertexFormat Format = VertexFormat.Position | VertexFormat.Texture; + } +}