79 lines
2.3 KiB
C#
79 lines
2.3 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Drawing;
|
|
using System.Drawing.Imaging;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using OpenTK;
|
|
using OpenTK.Graphics.OpenGL;
|
|
using PixelFormat = OpenTK.Graphics.OpenGL.PixelFormat;
|
|
|
|
namespace WhatTheTexture
|
|
{
|
|
internal class Program : GameWindow
|
|
{
|
|
protected override void OnLoad(EventArgs e)
|
|
{
|
|
base.OnLoad(e);
|
|
|
|
Width = 1920;
|
|
Height = 1080;
|
|
X = (DisplayDevice.Default.Width - Width) / 2;
|
|
Y = (DisplayDevice.Default.Height - Height) / 2;
|
|
|
|
GL.Enable(EnableCap.Texture2D);
|
|
|
|
var image = new Bitmap("tex.png");
|
|
|
|
var texID = GL.GenTexture();
|
|
|
|
GL.ActiveTexture(TextureUnit.Texture0);
|
|
GL.BindTexture(TextureTarget.Texture2D, texID);
|
|
var bitmapData = image.LockBits(new Rectangle(0, 0, image.Width, image.Height),
|
|
ImageLockMode.ReadOnly, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
|
|
|
|
GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMinFilter,
|
|
(int) TextureMinFilter.Nearest);
|
|
GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMagFilter,
|
|
(int) TextureMagFilter.Nearest);
|
|
|
|
GL.TexImage2D(TextureTarget.Texture2D, 0, PixelInternalFormat.Rgba, bitmapData.Width, bitmapData.Height, 0,
|
|
PixelFormat.Bgra, PixelType.UnsignedByte, bitmapData.Scan0);
|
|
|
|
image.UnlockBits(bitmapData);
|
|
|
|
GL.GenerateMipmap(GenerateMipmapTarget.Texture2D);
|
|
|
|
GL.Viewport(ClientRectangle);
|
|
|
|
GL.Begin(PrimitiveType.Triangles);
|
|
|
|
GL.TexCoord2(0, 0);
|
|
GL.Vertex2(-.8, -.8);
|
|
GL.TexCoord2(1, 0);
|
|
GL.Vertex2(.8, -.8);
|
|
GL.TexCoord2(0, 1);
|
|
GL.Vertex2(-.8, .8);
|
|
|
|
GL.TexCoord2(1, 1);
|
|
GL.Vertex2(.8, .8);
|
|
GL.TexCoord2(1, 0);
|
|
GL.Vertex2(.8, -.8);
|
|
GL.TexCoord2(0, 1);
|
|
GL.Vertex2(-.8, .8);
|
|
|
|
GL.End();
|
|
|
|
SwapBuffers();
|
|
}
|
|
|
|
private static void Main(string[] args)
|
|
{
|
|
using (var p = new Program())
|
|
{
|
|
p.Run();
|
|
}
|
|
}
|
|
}
|
|
} |