More correct, still doesn't work.

This commit is contained in:
Paul Chote
2010-08-14 22:23:22 +12:00
parent 8118a17e3c
commit 0a2d39f15b
4 changed files with 17 additions and 19 deletions

View File

@@ -32,6 +32,7 @@ namespace OpenRA.FileFormats.Graphics
IVertexBuffer<Vertex> CreateVertexBuffer( int length );
IIndexBuffer CreateIndexBuffer( int length );
ITexture CreateTexture( Bitmap bitmap );
ITexture CreateTexture();
IShader CreateShader( Stream stream );
Size WindowSize { get; }

View File

@@ -21,6 +21,7 @@ namespace OpenRA.Graphics
{
public const int MaxPalettes = 64;
int allocated = 0;
ITexture texture;
// We need to store the Palettes themselves for the remap palettes to work
// We should probably try to fix this somehow
@@ -31,6 +32,7 @@ namespace OpenRA.Graphics
{
palettes = new Dictionary<string, Palette>();
indices = new Dictionary<string, int>();
texture = Game.Renderer.Device.CreateTexture();
}
public Palette GetPalette(string name)
@@ -81,17 +83,17 @@ namespace OpenRA.Graphics
//foreach (var mod in paletteMods)
// mod.AdjustPalette(b);
var data = new uint[256,MaxPalettes];
var data = new uint[MaxPalettes,256];
foreach (var pal in palettes)
{
var j = indices[pal.Key];
var c = pal.Value.Values;
for (var i = 0; i < 256; i++)
data[i,j] = c[i];
data[j,i] = c[i];
}
// Doesn't work
Texture.SetData(data);
texture.SetData(data);
/*
// Works
var foo = new Bitmap(256,MaxPalettes);
@@ -102,19 +104,7 @@ namespace OpenRA.Graphics
Texture.SetData(foo);
*/
Game.Renderer.PaletteTexture = Texture;
}
ITexture texture;
public ITexture Texture
{
get
{
if (texture == null)
texture = Game.Renderer.Device.CreateTexture(new Bitmap(MaxPalettes, 256));
return texture;
}
Game.Renderer.PaletteTexture = texture;
}
}
}

View File

@@ -283,6 +283,7 @@ namespace OpenRA.GlRenderer
public IVertexBuffer<Vertex> CreateVertexBuffer(int size) { return new VertexBuffer<Vertex>(this, size); }
public IIndexBuffer CreateIndexBuffer(int size) { return new IndexBuffer(this, size); }
public ITexture CreateTexture() { return new Texture(this); }
public ITexture CreateTexture(Bitmap bitmap) { return new Texture(this, bitmap); }
public IShader CreateShader(Stream stream) { return new Shader(this, stream); }
}

View File

@@ -21,6 +21,12 @@ namespace OpenRA.GlRenderer
{
internal int texture;
public Texture(GraphicsDevice dev)
{
Gl.glGenTextures(1, out texture);
GraphicsDevice.CheckGlError();
}
public Texture(GraphicsDevice dev, Bitmap bitmap)
{
Gl.glGenTextures(1, out texture);