Restructed project in preparation for unit testing.
This commit is contained in:
@@ -1,70 +0,0 @@
|
||||
using System.Drawing;
|
||||
using System.IO;
|
||||
using OpenTK.Graphics.OpenGL;
|
||||
using OpenTK.Graphics;
|
||||
using System;
|
||||
namespace RecrownedGTK.Graphics {
|
||||
public class TextureData : IDisposable {
|
||||
private bool disposed;
|
||||
int handle;
|
||||
|
||||
public TextureWrapMode textureWrapModeWidth, textureWrapModeHeight;
|
||||
public Color4 borderColor;
|
||||
public TextureMinFilter textureMinFilter;
|
||||
public TextureMagFilter textureMagFilter;
|
||||
|
||||
public TextureData(string path) {
|
||||
byte[] textureData = null;
|
||||
int width;
|
||||
int height;
|
||||
using (FileStream file = new FileStream(path, FileMode.Open)) {
|
||||
using (Bitmap bitmap = new Bitmap(file)) {
|
||||
ImageConverter converter = new ImageConverter();
|
||||
textureData = (byte[]) converter.ConvertTo(bitmap, typeof(byte[]));
|
||||
width = bitmap.Width;
|
||||
height = bitmap.Height;
|
||||
}
|
||||
}
|
||||
|
||||
GenerateTexture(textureData, width, height);
|
||||
}
|
||||
|
||||
public TextureData(byte[] textureData, int width, int height) {
|
||||
textureWrapModeHeight = TextureWrapMode.ClampToBorder;
|
||||
textureWrapModeWidth = TextureWrapMode.ClampToBorder;
|
||||
textureMinFilter = TextureMinFilter.LinearMipmapLinear;
|
||||
textureMagFilter = TextureMagFilter.Linear;
|
||||
|
||||
GenerateTexture(textureData, width, height);
|
||||
}
|
||||
|
||||
private void GenerateTexture(byte[] textureData, int width, int height) {
|
||||
if (handle != 0) throw new InvalidOperationException("This texture data already holds a texture.");
|
||||
handle = GL.GenTexture();
|
||||
Use();
|
||||
GL.TexImage2D(TextureTarget.Texture2D, 0, PixelInternalFormat.Rgba, width, height, 0, PixelFormat.Rgba, PixelType.UnsignedByte, textureData);
|
||||
GL.GenerateMipmap(GenerateMipmapTarget.Texture2D);
|
||||
}
|
||||
|
||||
internal void Use() {
|
||||
GL.BindTexture(TextureTarget.Texture2D, handle);
|
||||
}
|
||||
public void Dispose() {
|
||||
Dispose(true);
|
||||
GC.SuppressFinalize(this);
|
||||
}
|
||||
|
||||
protected virtual void Dispose(bool disposing) {
|
||||
if (disposed) return;
|
||||
if (disposing) {
|
||||
}
|
||||
GL.BindTexture(TextureTarget.Texture2D, 0);
|
||||
GL.DeleteTexture(handle);
|
||||
disposed = true;
|
||||
}
|
||||
|
||||
~TextureData() {
|
||||
Dispose(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user