Files
Pilz/Pilz.Drawing.Drawing3D.OpenGLRenderer/Rendering/ContentPipe.cs
2020-09-24 11:21:53 +02:00

34 lines
1.4 KiB
C#

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));
}
}
}