From 7a87adb695d77ccd7b696741afc2ebd1e33f8500 Mon Sep 17 00:00:00 2001 From: Speiger Date: Thu, 4 Apr 2024 20:13:13 +0200 Subject: [PATCH] Start of the texture rewrite --- .../rendering/textures/base/BaseTexture.java | 62 ++++--------------- .../rendering/textures/base/ITexture.java | 11 ++-- .../textures/base/TextureMetadata.java | 9 +++ .../textures/base/TextureTracker.java | 2 +- .../textures/simple/SimpleTexture.java | 34 ++++++++++ .../rendering/utils/values/GLTextureType.java | 5 ++ 6 files changed, 67 insertions(+), 56 deletions(-) create mode 100644 src/main/java/speiger/src/coreengine/rendering/textures/base/TextureMetadata.java create mode 100644 src/main/java/speiger/src/coreengine/rendering/textures/simple/SimpleTexture.java create mode 100644 src/main/java/speiger/src/coreengine/rendering/utils/values/GLTextureType.java diff --git a/src/main/java/speiger/src/coreengine/rendering/textures/base/BaseTexture.java b/src/main/java/speiger/src/coreengine/rendering/textures/base/BaseTexture.java index ccbbd06..cb33b3d 100644 --- a/src/main/java/speiger/src/coreengine/rendering/textures/base/BaseTexture.java +++ b/src/main/java/speiger/src/coreengine/rendering/textures/base/BaseTexture.java @@ -2,6 +2,8 @@ package speiger.src.coreengine.rendering.textures.base; import org.lwjgl.opengl.GL11; +import speiger.src.coreengine.rendering.utils.GLStateTracker; + public abstract class BaseTexture implements ITexture { protected int id; @@ -11,66 +13,26 @@ public abstract class BaseTexture implements ITexture { protected BaseTexture(int id) { this.id = id; + track(); + } + + protected void track() { + GLStateTracker.TEXTURE_TRACKER.registerTexture(this); } @Override public int id() { - // TODO Auto-generated method stub - return 0; + return id; } @Override - public void bind() { - // TODO Auto-generated method stub - - } - - @Override - public void reload() { - // TODO Auto-generated method stub - + public void bind(int unit) { + GLStateTracker.TEXTURES.bind(unit, id); } @Override public void delete() { - // TODO Auto-generated method stub - + GL11.glDeleteTextures(id); + GLStateTracker.TEXTURE_TRACKER.deleteTexture(this); } - - @Override - public int width() { - // TODO Auto-generated method stub - return 0; - } - - @Override - public int height() { - // TODO Auto-generated method stub - return 0; - } - - @Override - public float minU() { - // TODO Auto-generated method stub - return 0; - } - - @Override - public float minV() { - // TODO Auto-generated method stub - return 0; - } - - @Override - public float maxU() { - // TODO Auto-generated method stub - return 0; - } - - @Override - public float maxV() { - // TODO Auto-generated method stub - return 0; - } - } diff --git a/src/main/java/speiger/src/coreengine/rendering/textures/base/ITexture.java b/src/main/java/speiger/src/coreengine/rendering/textures/base/ITexture.java index 30e5757..c067f10 100644 --- a/src/main/java/speiger/src/coreengine/rendering/textures/base/ITexture.java +++ b/src/main/java/speiger/src/coreengine/rendering/textures/base/ITexture.java @@ -2,15 +2,16 @@ package speiger.src.coreengine.rendering.textures.base; public interface ITexture { public int id(); - public void bind(); + public default void bind() { bind(0); } + public void bind(int unit); public void reload(); public void delete(); public int width(); public int height(); - public float minU(); - public float minV(); - public float maxU(); - public float maxV(); + public default float minU() { return 0F; } + public default float minV() { return 0F; } + public default float maxU() { return 1F; } + public default float maxV() { return 1F; } } diff --git a/src/main/java/speiger/src/coreengine/rendering/textures/base/TextureMetadata.java b/src/main/java/speiger/src/coreengine/rendering/textures/base/TextureMetadata.java new file mode 100644 index 0000000..2b19e75 --- /dev/null +++ b/src/main/java/speiger/src/coreengine/rendering/textures/base/TextureMetadata.java @@ -0,0 +1,9 @@ +package speiger.src.coreengine.rendering.textures.base; + +public class TextureMetadata { + int textureType; + int dataFormat; + int textureFormat; + + +} diff --git a/src/main/java/speiger/src/coreengine/rendering/textures/base/TextureTracker.java b/src/main/java/speiger/src/coreengine/rendering/textures/base/TextureTracker.java index e5e7e18..bcbf905 100644 --- a/src/main/java/speiger/src/coreengine/rendering/textures/base/TextureTracker.java +++ b/src/main/java/speiger/src/coreengine/rendering/textures/base/TextureTracker.java @@ -35,7 +35,7 @@ public class TextureTracker implements ISimpleRealodableAsset, IManagedAsset { @Override public void onAssetsReloaded(IAssetProvider provider) { - textures.filter(((Predicate)reloadable::contains).negate()).forEach(ITexture::delete); + textures.filter(Predicate.not(reloadable::contains)).forEach(ITexture::delete); textures.clear(); reloadable.peek(ITexture::reload).forEach(textures::add); } diff --git a/src/main/java/speiger/src/coreengine/rendering/textures/simple/SimpleTexture.java b/src/main/java/speiger/src/coreengine/rendering/textures/simple/SimpleTexture.java new file mode 100644 index 0000000..ed0a597 --- /dev/null +++ b/src/main/java/speiger/src/coreengine/rendering/textures/simple/SimpleTexture.java @@ -0,0 +1,34 @@ +package speiger.src.coreengine.rendering.textures.simple; + +import org.lwjgl.stb.STBImage; +import org.lwjgl.system.MemoryUtil; + +import speiger.src.coreengine.rendering.textures.base.BaseTexture; + +public class SimpleTexture extends BaseTexture { + int width; + int height; + long imageData; + + @Override + public void reload() { + + } + + @Override + public void delete() { + super.delete(); + if(imageData == 0L) return; + STBImage.nstbi_image_free(imageData); + imageData = 0L; + } + + @Override + public int width() { return width; } + @Override + public int height() { return width; } + + private void loadTexture() { + + } +} diff --git a/src/main/java/speiger/src/coreengine/rendering/utils/values/GLTextureType.java b/src/main/java/speiger/src/coreengine/rendering/utils/values/GLTextureType.java new file mode 100644 index 0000000..689854d --- /dev/null +++ b/src/main/java/speiger/src/coreengine/rendering/utils/values/GLTextureType.java @@ -0,0 +1,5 @@ +package speiger.src.coreengine.rendering.utils.values; + +public enum GLTextureType { + +}