34 lines
1.4 KiB
C#
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));
|
|
}
|
|
}
|
|
} |