using global::System; using global::System.Drawing; using Bitmap = System.Drawing.Bitmap; using global::System.Drawing.Imaging; using global::OpenTK.Graphics.OpenGL; namespace Pilz.Drawing.Drawing3D.OpenGLFactory.RenderingN { public class ContentPipe { public static int LoadTexture(string filepath) { var bitmap = new Bitmap(filepath); return LoadTexture(bitmap); } public static int LoadTexture(Bitmap bitmap) { int id = GL.GenTexture(); LoadTexture(bitmap, id); return id; } public static void LoadTexture(Bitmap bitmap, int id) { var bmpData = bitmap.LockBits(new Rectangle(0, 0, bitmap.Width, bitmap.Height), ImageLockMode.ReadOnly, System.Drawing.Imaging.PixelFormat.Format32bppArgb); GL.BindTexture(TextureTarget.Texture2D, id); GL.TexImage2D(TextureTarget.Texture2D, 0, PixelInternalFormat.Rgba, bitmap.Width, bitmap.Height, 0, OpenTK.Graphics.OpenGL.PixelFormat.Bgra, PixelType.UnsignedByte, bmpData.Scan0); bitmap.UnlockBits(bmpData); GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMinFilter, (int)Math.Truncate((decimal)TextureMinFilter.Linear)); GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMagFilter, (int)Math.Truncate((decimal)TextureMagFilter.Linear)); } } }