From e773a5307a6ffec88655f3e1e4140def18141325 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Hru=C5=A1ka?= Date: Mon, 21 Apr 2014 16:17:16 +0200 Subject: [PATCH] Support 4 npot tx, inlined some btlncks --- res/img/kitten_npot.png | Bin 0 -> 85830 bytes .../gamecore/loading/DeferredResource.java | 13 +-- src/mightypork/gamecore/render/Render.java | 99 +++++------------- .../render/fonts/impl/CachedFont.java | 62 +++++------ .../render/textures/DeferredTexture.java | 94 +++-------------- .../gamecore/render/textures/GLTexture.java | 57 ++++++++-- src/mightypork/rogue/Res.java | 5 +- .../test_cat_sound/LayerFlyingCat.java | 2 +- .../constraints/rect/caching/RectDigest.java | 22 ++-- 9 files changed, 137 insertions(+), 217 deletions(-) create mode 100644 res/img/kitten_npot.png diff --git a/res/img/kitten_npot.png b/res/img/kitten_npot.png new file mode 100644 index 0000000000000000000000000000000000000000..b97edfa07c1a57f24fc2b8863d08eb4f6ccdc30a GIT binary patch literal 85830 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 z z^ql8PC1K2pJCJM3UPx9RWFQOa(uDe$5#m%{MiSfm;=bJE7IMlwEqg}fn%pC_&*cXVny9w{7t zh5NS?1WinAAD7pa$atx16}_NNe813@QrfV!{^EvjWP-McjgKcmI9I`ji_)@CSO@

cz7# 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 literal 0 HcmV?d00001 diff --git a/src/mightypork/gamecore/loading/DeferredResource.java b/src/mightypork/gamecore/loading/DeferredResource.java index 160b2e3..28b08b7 100644 --- a/src/mightypork/gamecore/loading/DeferredResource.java +++ b/src/mightypork/gamecore/loading/DeferredResource.java @@ -42,7 +42,8 @@ public abstract class DeferredResource implements Deferred, Destroyable { loadFailed = false; - if (isNull()) return; + if (this instanceof NullResource) return; // don't even try + try { if (resource == null) { throw new NullPointerException("Resource string cannot be null for non-null resource."); @@ -61,8 +62,6 @@ public abstract class DeferredResource implements Deferred, Destroyable { @Override public synchronized final boolean isLoaded() { - if (isNull()) return false; - return loadAttempted && !loadFailed; } @@ -74,8 +73,6 @@ public abstract class DeferredResource implements Deferred, Destroyable { */ public synchronized final boolean ensureLoaded() { - if (isNull()) return false; - if (isLoaded()) { return true; } else { @@ -132,10 +129,4 @@ public abstract class DeferredResource implements Deferred, Destroyable { } else if (!resource.equals(other.resource)) return false; return true; } - - - private boolean isNull() - { - return this instanceof NullResource; - } } diff --git a/src/mightypork/gamecore/render/Render.java b/src/mightypork/gamecore/render/Render.java index 5ad4462..73757b6 100644 --- a/src/mightypork/gamecore/render/Render.java +++ b/src/mightypork/gamecore/render/Render.java @@ -18,7 +18,6 @@ import mightypork.util.math.color.Color; import org.lwjgl.opengl.GL11; import org.newdawn.slick.opengl.Texture; -import org.newdawn.slick.opengl.TextureImpl; import org.newdawn.slick.opengl.TextureLoader; import org.newdawn.slick.util.ResourceLoader; @@ -299,7 +298,7 @@ public class Render { * @param filtering filtering mode to use while loading. * @return the loaded texture */ - public synchronized static Texture loadTexture(String resourcePath, FilterMode filtering) + public synchronized static Texture loadSlickTexture(String resourcePath, FilterMode filtering) { try { @@ -322,29 +321,6 @@ public class Render { } - /** - * Bind texture - * - * @param texture the texture - * @throws RuntimeException if not loaded yet - */ - private static void bindTexture(GLTexture texture) throws RuntimeException - { - texture.bind(); - } - - - /** - * Unbind all - */ - private static void unbindTexture() - { - if (TextureImpl.getLastBind() != null) { - TextureImpl.bindNone(); - } - } - - /** * Render quad 2D * @@ -368,7 +344,7 @@ public class Render { final RectDigest q = quad.digest(); // draw with color - + glDisable(GL_TEXTURE_2D); // quad @@ -381,47 +357,6 @@ public class Render { } - /** - * Render textured rect (texture must be binded already) - * - * @param quad rectangle (px) - * @param uvs texture coords (0-1) - */ - public static void quadUV(Rect quad, Rect uvs) - { - glBegin(GL_QUADS); - quadUV_nobound(quad, uvs); - glEnd(); - } - - - /** - * Draw quad without glBegin and glEnd. - * - * @param quad rectangle (px) - * @param uvs texture coords (0-1) - */ - public static void quadUV_nobound(Rect quad, Rect uvs) - { - final RectDigest q = quad.digest(); - - final RectDigest u = uvs.digest(); - - // quad with texture - glTexCoord2d(u.left, u.bottom); - glVertex2d(q.left, q.bottom); - - glTexCoord2d(u.right, u.bottom); - glVertex2d(q.right, q.bottom); - - glTexCoord2d(u.right, u.top); - glVertex2d(q.right, q.top); - - glTexCoord2d(u.left, u.top); - glVertex2d(q.left, q.top); - } - - /** * Draw quad with horizontal gradient * @@ -455,7 +390,7 @@ public class Render { final RectDigest r = quad.digest(); // draw with color - + glDisable(GL_TEXTURE_2D); glBegin(GL_QUADS); @@ -498,10 +433,32 @@ public class Render { public static void quadTextured(Rect quad, Rect uvs, GLTexture texture, Color tint) { glEnable(GL_TEXTURE_2D); - bindTexture(texture); + + texture.bind(); + setColor(tint); - quadUV(quad, uvs); - unbindTexture(); + + glBegin(GL_QUADS); + + final RectDigest q = quad.digest(); + final RectDigest u = uvs.digest(); + + final double w = texture.getWidth01(); + final double h = texture.getHeight01(); + + // quad with texture + glTexCoord2d(u.x * w, u.bottom * h); + glVertex2d(q.left, q.bottom); + + glTexCoord2d(u.right * w, u.bottom * h); + glVertex2d(q.right, q.bottom); + + glTexCoord2d(u.right * w, u.top * h); + glVertex2d(q.right, q.top); + + glTexCoord2d(u.left * w, u.top * h); + glVertex2d(q.left, q.top); + glEnd(); } diff --git a/src/mightypork/gamecore/render/fonts/impl/CachedFont.java b/src/mightypork/gamecore/render/fonts/impl/CachedFont.java index e70cbdc..9fa4e5c 100644 --- a/src/mightypork/gamecore/render/fonts/impl/CachedFont.java +++ b/src/mightypork/gamecore/render/fonts/impl/CachedFont.java @@ -334,30 +334,6 @@ public class CachedFont implements GLFont { } - private void drawQuad(float xmin, float ymin, float xmax, float ymax, float txmin, float tymin, float txmax, float tymax) - { - final float draw_width = xmax - xmin; - final float draw_height = ymax - ymin; - - final float txmin01 = txmin / textureWidth; - final float tymin01 = tymin / textureHeight; - final float twidth01 = ((txmax - txmin) / textureWidth); - final float theight01 = ((tymax - tymin) / textureHeight); - - glTexCoord2f(txmin01, tymin01); - glVertex2f(xmin, ymin); - - glTexCoord2f(txmin01, tymin01 + theight01); - glVertex2f(xmin, ymin + draw_height); - - glTexCoord2f(txmin01 + twidth01, tymin01 + theight01); - glVertex2f(xmin + draw_width, ymin + draw_height); - - glTexCoord2f(txmin01 + twidth01, tymin01); - glVertex2f(xmin + draw_width, ymin); - } - - /** * Get size needed to draw given string * @@ -398,31 +374,57 @@ public class CachedFont implements GLFont { { GLUtils.checkGLContext(); + // PUSH glPushAttrib(GL_ENABLE_BIT); + glEnable(GL_TEXTURE_2D); glBindTexture(GL_TEXTURE_2D, textureID); glColor4d(color.red(), color.green(), color.blue(), color.alpha()); + glBegin(GL_QUADS); CharTile chtx = null; char charCurrent; + int minx = 0; - glBegin(GL_QUADS); - - int totalwidth = 0; for (int i = 0; i < text.length(); i++) { charCurrent = text.charAt(i); chtx = chars.get(charCurrent); if (chtx != null) { - drawQuad((totalwidth), 0, (totalwidth + chtx.width), (chtx.height), chtx.texPosX, chtx.texPosY, chtx.texPosX + chtx.width, chtx.texPosY - + chtx.height); - totalwidth += chtx.width; + + // draw quad + + float txmin = chtx.texPosX; + float tymin = chtx.texPosY; + final float draw_width = minx + chtx.width - minx; + final float draw_height = (float) (chtx.height) - (float) 0; + + final float txmin01 = txmin / textureWidth; + final float tymin01 = tymin / textureHeight; + final float twidth01 = ((chtx.texPosX + chtx.width - txmin) / textureWidth); + final float theight01 = ((chtx.texPosY + chtx.height - tymin) / textureHeight); + + glTexCoord2f(txmin01, tymin01); + glVertex2f(minx, 0); + + glTexCoord2f(txmin01, tymin01 + theight01); + glVertex2f(minx, 0 + draw_height); + + glTexCoord2f(txmin01 + twidth01, tymin01 + theight01); + glVertex2f(minx + draw_width, 0 + draw_height); + + glTexCoord2f(txmin01 + twidth01, tymin01); + glVertex2f(minx + draw_width, 0); + minx += chtx.width; + } } glEnd(); + + // POP glPopAttrib(); } diff --git a/src/mightypork/gamecore/render/textures/DeferredTexture.java b/src/mightypork/gamecore/render/textures/DeferredTexture.java index 65475a6..39b898a 100644 --- a/src/mightypork/gamecore/render/textures/DeferredTexture.java +++ b/src/mightypork/gamecore/render/textures/DeferredTexture.java @@ -15,13 +15,15 @@ import org.lwjgl.opengl.GL11; * * @author MightyPork */ -@MustLoadInMainThread @LogAlias(name = "Texture") +@MustLoadInMainThread public class DeferredTexture extends DeferredResource implements GLTexture { private org.newdawn.slick.opengl.Texture backingTexture; private FilterMode filter = FilterMode.NEAREST; private WrapMode wrap = WrapMode.CLAMP; + private boolean alpha; + private boolean alphal; /** @@ -33,12 +35,6 @@ public class DeferredTexture extends DeferredResource implements GLTexture { } - /** - * Get a quad from this texture of given position/size - * - * @param uvs quad rect - * @return the quad - */ @Override public TxQuad makeQuad(Rect uvs) { @@ -49,7 +45,7 @@ public class DeferredTexture extends DeferredResource implements GLTexture { @Override protected synchronized void loadResource(String path) { - backingTexture = Render.loadTexture(path, filter); + backingTexture = Render.loadSlickTexture(path, filter); } @@ -58,30 +54,22 @@ public class DeferredTexture extends DeferredResource implements GLTexture { { if (!ensureLoaded()) return false; - return backingTexture.hasAlpha(); - } - - - /** - * Bind without adjusting parameters - */ - @Override - public void bindRaw() - { - if (!ensureLoaded()) return; + if (!alphal) { + alphal = true; + alpha = backingTexture.hasAlpha(); + } - backingTexture.bind(); + return alpha; } - /** - * Bind and adjust parameters (filter, wrap) - */ @Override public void bind() { if (!ensureLoaded()) return; + GL11.glEnable(GL11.GL_TEXTURE_2D); + GL11.glTexEnvf(GL11.GL_TEXTURE_ENV, GL11.GL_TEXTURE_ENV_MODE, GL11.GL_MODULATE); GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_S, wrap.num); @@ -90,7 +78,7 @@ public class DeferredTexture extends DeferredResource implements GLTexture { GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, filter.num); GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, filter.num); - bindRaw(); + GL11.glBindTexture(GL11.GL_TEXTURE_2D, getTextureID()); } @@ -113,16 +101,7 @@ public class DeferredTexture extends DeferredResource implements GLTexture { @Override - public String getTextureRef() - { - if (!ensureLoaded()) return null; - - return backingTexture.getTextureRef(); - } - - - @Override - public float getHeight() + public float getHeight01() { if (!ensureLoaded()) return 0; @@ -131,7 +110,7 @@ public class DeferredTexture extends DeferredResource implements GLTexture { @Override - public float getWidth() + public float getWidth01() { if (!ensureLoaded()) return 0; @@ -140,25 +119,7 @@ public class DeferredTexture extends DeferredResource implements GLTexture { @Override - public int getTextureHeight() - { - if (!ensureLoaded()) return 0; - - return backingTexture.getTextureHeight(); - } - - - @Override - public int getTextureWidth() - { - if (!ensureLoaded()) return 0; - - return backingTexture.getTextureWidth(); - } - - - @Override - public void release() + public void destroy() { if (!isLoaded()) return; @@ -175,31 +136,6 @@ public class DeferredTexture extends DeferredResource implements GLTexture { } - @Override - public byte[] getTextureData() - { - if (!ensureLoaded()) return null; - - return backingTexture.getTextureData(); - } - - - @Override - public void setTextureFilter(int textureFilter) - { - if (!ensureLoaded()) return; - - backingTexture.setTextureFilter(textureFilter); - } - - - @Override - public void destroy() - { - release(); - } - - @Override public void setFilter(FilterMode filterMin) { diff --git a/src/mightypork/gamecore/render/textures/GLTexture.java b/src/mightypork/gamecore/render/textures/GLTexture.java index 1adf29e..9792d44 100644 --- a/src/mightypork/gamecore/render/textures/GLTexture.java +++ b/src/mightypork/gamecore/render/textures/GLTexture.java @@ -2,8 +2,7 @@ package mightypork.gamecore.render.textures; import mightypork.util.constraints.rect.Rect; - -import org.newdawn.slick.opengl.Texture; +import mightypork.util.control.Destroyable; /** @@ -11,7 +10,7 @@ import org.newdawn.slick.opengl.Texture; * * @author MightyPork */ -public interface GLTexture extends Texture { +public interface GLTexture extends Destroyable { /** * Set filter for scaling @@ -36,12 +35,6 @@ public interface GLTexture extends Texture { TxQuad makeQuad(Rect uvs); - /** - * Bind without adjusting parameters - */ - void bindRaw(); - - /** * Get a grid for given number of tiles * @@ -50,4 +43,50 @@ public interface GLTexture extends Texture { * @return grid */ QuadGrid grid(int x, int y); + + + /** + * @return OpenGL texture ID + */ + int getTextureID(); + + + /** + * Get the height of the texture, 0..1.
+ * + * @return height 0..1 + */ + float getHeight01(); + + + /** + * Get the width of the texture, 0..1.
+ * + * @return width 0..1 + */ + float getWidth01(); + + + /** + * @return source image width (corresponding to width01) + */ + int getImageWidth(); + + + /** + * @return source image height (corresponding to height01) + */ + int getImageHeight(); + + + /** + * Bind to GL context, applying the filters prescribed. + */ + void bind(); + + + /** + * @return true if the image is RGBA + */ + boolean hasAlpha(); } diff --git a/src/mightypork/rogue/Res.java b/src/mightypork/rogue/Res.java index 8bc19c5..0078db3 100644 --- a/src/mightypork/rogue/Res.java +++ b/src/mightypork/rogue/Res.java @@ -11,8 +11,6 @@ import mightypork.gamecore.render.fonts.Glyphs; import mightypork.gamecore.render.fonts.impl.DeferredFont; import mightypork.gamecore.render.textures.*; -import org.newdawn.slick.opengl.Texture; - /** * Static resource repository @@ -65,6 +63,7 @@ public final class Res { GLTexture texture; texture = textures.loadTexture("test.kitten", "/res/img/kitten.png", FilterMode.LINEAR, WrapMode.CLAMP); + texture = textures.loadTexture("test.kitten2", "/res/img/kitten_npot.png", FilterMode.LINEAR, WrapMode.CLAMP); texture = textures.loadTexture("gui1", "/res/img/gui1.png", FilterMode.NEAREST, WrapMode.CLAMP); final QuadGrid gui = texture.grid(4, 4); @@ -107,7 +106,7 @@ public final class Res { } - public static Texture getTexture(String key) + public static GLTexture getTexture(String key) { return textures.getTexture(key); } diff --git a/src/mightypork/rogue/screens/test_cat_sound/LayerFlyingCat.java b/src/mightypork/rogue/screens/test_cat_sound/LayerFlyingCat.java index 3cff7d5..2cb7de8 100644 --- a/src/mightypork/rogue/screens/test_cat_sound/LayerFlyingCat.java +++ b/src/mightypork/rogue/screens/test_cat_sound/LayerFlyingCat.java @@ -42,7 +42,7 @@ public class LayerFlyingCat extends ScreenLayer implements MouseButtonEvent.List cat_position.setTo(getDisplay().getCenter()); cat_position.setDefaultDuration(3); - final ImagePainter cat = new ImagePainter(Res.getTxQuad("test.kitten")); + final ImagePainter cat = new ImagePainter(Res.getTxQuad("test.kitten2")); cat.setRect(Rect.make(size).centerTo(cat_position)); cat.enableCaching(false); diff --git a/src/mightypork/util/constraints/rect/caching/RectDigest.java b/src/mightypork/util/constraints/rect/caching/RectDigest.java index fe372bb..6c6065c 100644 --- a/src/mightypork/util/constraints/rect/caching/RectDigest.java +++ b/src/mightypork/util/constraints/rect/caching/RectDigest.java @@ -2,7 +2,6 @@ package mightypork.util.constraints.rect.caching; import mightypork.util.constraints.rect.Rect; -import mightypork.util.constraints.rect.RectConst; public class RectDigest { @@ -19,20 +18,17 @@ public class RectDigest { public RectDigest(Rect rect) - { - - final RectConst frozen = rect.freeze(); - - this.x = frozen.x().value(); - this.y = frozen.y().value(); + { + this.x = rect.origin().x(); + this.y = rect.origin().y(); - this.width = frozen.width().value(); - this.height = frozen.height().value(); + this.width = rect.size().x(); + this.height = rect.size().y(); - this.left = frozen.left().value(); - this.right = frozen.right().value(); - this.top = frozen.top().value(); - this.bottom = frozen.bottom().value(); + this.left = x; + this.right = x + width; + this.top = y; + this.bottom = y + height; }