public static Texture CreateTextureFromFile(String filePath, imaging::PixelFormat imageFormat, opengl::PixelFormat pixelFormat) { using (Bitmap bitmap = new Bitmap(filePath)) { bitmap.RotateFlip(RotateFlipType.RotateNoneFlipY); BitmapData imageData = bitmap.LockBits(new Rectangle(0, 0, bitmap.Width, bitmap.Height), ImageLockMode.ReadOnly, imageFormat); var texture = new Texture(pixelFormat, bitmap.Width, bitmap.Height, imageData.Scan0); bitmap.UnlockBits(imageData); return(texture); } }
public Texture(String fileName, imaging::PixelFormat imageFormat, opengl::PixelFormat format) { glID = GL.GenTexture(); using (Bitmap bitmap = new Bitmap(fileName)) { bitmap.RotateFlip(RotateFlipType.RotateNoneFlipY); BitmapData imageData = bitmap.LockBits(new Rectangle(0, 0, bitmap.Width, bitmap.Height), ImageLockMode.ReadOnly, imageFormat); GL.BindTexture(TextureTarget.Texture2D, glID); GL.TexImage2D(TextureTarget.Texture2D, 0, PixelInternalFormat.Rgb, bitmap.Width, bitmap.Height, 0, format, PixelType.UnsignedByte, imageData.Scan0); GL.GenerateMipmap(GenerateMipmapTarget.Texture2D); //Cleanup GL.BindTexture(TextureTarget.Texture2D, 0); bitmap.UnlockBits(imageData); } }