texture support

This commit is contained in:
Chris Forbes
2010-02-15 17:37:51 +13:00
parent e1466829ac
commit 23a4e103bb

View File

@@ -7,6 +7,7 @@ using Tao.OpenGl;
using Tao.Cg; using Tao.Cg;
using Tao.Platform.Windows; using Tao.Platform.Windows;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
using System.Drawing.Imaging;
namespace OpenRa.GlRenderer namespace OpenRa.GlRenderer
{ {
@@ -178,8 +179,32 @@ namespace OpenRa.GlRenderer
public class Texture public class Texture
{ {
public Texture(GraphicsDevice dev, Bitmap bitmap) { } internal int texture;
public void SetData(Bitmap bitmap) { }
public Texture(GraphicsDevice dev, Bitmap bitmap)
{
Gl.glGenTextures(1, out texture);
GraphicsDevice.CheckGlError();
SetData(bitmap);
}
public void SetData(Bitmap bitmap)
{
var bits = bitmap.LockBits(
new Rectangle(0, 0, bitmap.Width, bitmap.Height),
ImageLockMode.ReadOnly,
PixelFormat.Format32bppArgb);
Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_BASE_LEVEL, 0);
GraphicsDevice.CheckGlError();
Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MAX_LEVEL, 0);
GraphicsDevice.CheckGlError();
Gl.glTexImage2D(Gl.GL_TEXTURE_2D, 0, Gl.GL_RGBA8, bits.Width, bits.Height,
0, Gl.GL_RGBA, Gl.GL_UNSIGNED_BYTE, bits.Scan0); // todo: weird strides
GraphicsDevice.CheckGlError();
bitmap.UnlockBits(bits);
}
} }
[Flags] [Flags]