feat: add texture loader and placeholder atlas

This commit is contained in:
2026-05-28 12:14:11 +02:00
parent 50bb77cb2d
commit df22096548
2 changed files with 35 additions and 0 deletions

BIN
Assets/textures/atlas.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 236 B

35
Rendering/Texture.cs Normal file
View File

@@ -0,0 +1,35 @@
using OpenTK.Graphics.OpenGL4;
using StbImageSharp;
namespace VoxelEngine.Rendering;
public sealed class Texture : IDisposable
{
private readonly int _handle;
public Texture(string path)
{
_handle = GL.GenTexture();
GL.BindTexture(TextureTarget.Texture2D, _handle);
StbImage.stbi_set_flip_vertically_on_load(1);
using FileStream stream = File.OpenRead(path);
ImageResult image = ImageResult.FromStream(stream, ColorComponents.RedGreenBlueAlpha);
GL.TexImage2D(TextureTarget.Texture2D, 0, PixelInternalFormat.Rgba,
image.Width, image.Height, 0, PixelFormat.Rgba, PixelType.UnsignedByte, image.Data);
GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMinFilter, (int)TextureMinFilter.Nearest);
GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMagFilter, (int)TextureMagFilter.Nearest);
GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureWrapS, (int)TextureWrapMode.ClampToEdge);
GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureWrapT, (int)TextureWrapMode.ClampToEdge);
}
public void Use(TextureUnit unit = TextureUnit.Texture0)
{
GL.ActiveTexture(unit);
GL.BindTexture(TextureTarget.Texture2D, _handle);
}
public void Dispose() => GL.DeleteTexture(_handle);
}