From ebac276ed2c6354abe4e93f4eb2ce684aea355af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Hru=C5=A1ka?= Date: Thu, 10 Apr 2014 10:10:47 +0200 Subject: [PATCH] somethings weird with font --- .../gamecore/gui/screens/Screen.java | 2 ++ .../gamecore/loading/AsyncResourceLoader.java | 20 ++++++++++-------- .../loading/BaseDeferredResource.java | 9 +++++--- src/mightypork/gamecore/render/Render.java | 18 ++++++++++++++-- .../gamecore/render/fonts/DeferredFont.java | 21 +++++++++++++++++-- .../gamecore/render/fonts/FontRenderer.java | 6 +++--- .../gamecore/render/fonts/GLFont.java | 16 ++++++++++++++ .../gamecore/render/fonts/NullFont.java | 19 +++++++++++++++-- .../gamecore/render/fonts/SlickFont.java | 15 ++++++++----- .../render/textures/DeferredTexture.java | 8 +++---- src/mightypork/rogue/screens/LayerFps.java | 2 ++ 11 files changed, 106 insertions(+), 30 deletions(-) diff --git a/src/mightypork/gamecore/gui/screens/Screen.java b/src/mightypork/gamecore/gui/screens/Screen.java index 9fd53ed..a672c2c 100644 --- a/src/mightypork/gamecore/gui/screens/Screen.java +++ b/src/mightypork/gamecore/gui/screens/Screen.java @@ -120,7 +120,9 @@ public abstract class Screen extends AppSubModule implements Renderable, KeyBind } Render.pushState(); + renderScreen(); + Render.popState(); } diff --git a/src/mightypork/gamecore/loading/AsyncResourceLoader.java b/src/mightypork/gamecore/loading/AsyncResourceLoader.java index 8211a15..3054365 100644 --- a/src/mightypork/gamecore/loading/AsyncResourceLoader.java +++ b/src/mightypork/gamecore/loading/AsyncResourceLoader.java @@ -57,16 +57,18 @@ public class AsyncResourceLoader extends Thread implements ResourceLoadRequest.L // textures & fonts needs to be loaded in main thread if (resource.getClass().isAnnotationPresent(MustLoadInMainThread.class)) { - Log.f3(" Delegating to main thread:\n " + Log.str(resource)); + // just ignore - app.getEventBus().send(new MainLoopTaskRequest(new Runnable() { - - @Override - public void run() - { - resource.load(); - } - })); +// Log.f3(" Delegating to main thread:\n " + Log.str(resource)); +// +// app.getEventBus().send(new MainLoopTaskRequest(new Runnable() { +// +// @Override +// public void run() +// { +// resource.load(); +// } +// })); return; } diff --git a/src/mightypork/gamecore/loading/BaseDeferredResource.java b/src/mightypork/gamecore/loading/BaseDeferredResource.java index 1138de1..49319ab 100644 --- a/src/mightypork/gamecore/loading/BaseDeferredResource.java +++ b/src/mightypork/gamecore/loading/BaseDeferredResource.java @@ -33,10 +33,12 @@ public abstract class BaseDeferredResource implements DeferredResource, Destroya @Override public synchronized final void load() { + if(loadFailed) return; + if (loadAttempted) { Log.w(" Already loaded @ load():\n " + this); (new IllegalStateException()).printStackTrace(); - //return; + return; } loadAttempted = true; @@ -80,8 +82,9 @@ public abstract class BaseDeferredResource implements DeferredResource, Destroya if (isLoaded()) { return true; } else { - Log.w(" First use, not loaded yet - loading directly\n " + this); - (new IllegalStateException()).printStackTrace(); + if(loadFailed) return false; + + Log.f3(" (!) First use, not loaded yet - loading directly\n " + this); load(); } diff --git a/src/mightypork/gamecore/render/Render.java b/src/mightypork/gamecore/render/Render.java index c5b889a..de5a733 100644 --- a/src/mightypork/gamecore/render/Render.java +++ b/src/mightypork/gamecore/render/Render.java @@ -183,7 +183,15 @@ public class Render { GL11.glPushAttrib(GL11.GL_ALL_ATTRIB_BITS); GL11.glPushClientAttrib(GL11.GL_ALL_CLIENT_ATTRIB_BITS); + GL11.glMatrixMode(GL11.GL_MODELVIEW); GL11.glPushMatrix(); + GL11.glMatrixMode(GL11.GL_PROJECTION); + GL11.glPushMatrix(); + GL11.glMatrixMode(GL11.GL_MODELVIEW); + +// GL11.glPushAttrib(GL11.GL_ALL_ATTRIB_BITS); +// GL11.glPushClientAttrib(GL11.GL_ALL_CLIENT_ATTRIB_BITS); +// GL11.glPushMatrix(); } @@ -200,9 +208,16 @@ public class Render { // Log.f3("pop : "+pushed); + GL11.glMatrixMode(GL11.GL_PROJECTION); + GL11.glPopMatrix(); + GL11.glMatrixMode(GL11.GL_MODELVIEW); GL11.glPopMatrix(); GL11.glPopClientAttrib(); GL11.glPopAttrib(); + +// GL11.glPopMatrix(); +// GL11.glPopClientAttrib(); +// GL11.glPopAttrib(); } @@ -508,8 +523,7 @@ public class Render { glShadeModel(GL_SMOOTH); glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); } } diff --git a/src/mightypork/gamecore/render/fonts/DeferredFont.java b/src/mightypork/gamecore/render/fonts/DeferredFont.java index 279fac9..9cacac9 100644 --- a/src/mightypork/gamecore/render/fonts/DeferredFont.java +++ b/src/mightypork/gamecore/render/fonts/DeferredFont.java @@ -1,6 +1,8 @@ package mightypork.gamecore.render.fonts; +import static org.lwjgl.opengl.GL11.*; + import java.awt.Font; import java.awt.FontFormatException; import java.io.IOException; @@ -40,7 +42,7 @@ public class DeferredFont extends BaseDeferredResource implements GLFont { private final double size; private final FontStyle style; private final String extraChars; - private final FilterMode filter; + private FilterMode filter; /** @@ -90,7 +92,7 @@ public class DeferredFont extends BaseDeferredResource implements GLFont { protected synchronized final void loadResource(String path) throws FontFormatException, IOException { final Font awtFont = getAwtFont(path, (float) size, style.numval); - + font = new SlickFont(awtFont, filter, extraChars); } @@ -185,5 +187,20 @@ public class DeferredFont extends BaseDeferredResource implements GLFont { // this will have to suffice font = null; } + + + @Override + public void setFiltering(FilterMode filter) + { + this.filter = filter; + + if(isLoaded()) font.setFiltering(filter); + } + + @Override + public FilterMode getFiltering() + { + return filter; + } } diff --git a/src/mightypork/gamecore/render/fonts/FontRenderer.java b/src/mightypork/gamecore/render/fonts/FontRenderer.java index b6bd0ce..f42753c 100644 --- a/src/mightypork/gamecore/render/fonts/FontRenderer.java +++ b/src/mightypork/gamecore/render/fonts/FontRenderer.java @@ -123,15 +123,15 @@ public class FontRenderer { */ public void draw(String text, Coord pos, double height, RGB color) { - Render.pushState(); + //Render.pushState(); - GL11.glEnable(GL11.GL_TEXTURE_2D); + //GL11.glEnable(GL11.GL_TEXTURE_2D); Render.translate(pos.round()); Render.scaleXY(getScale(height)); font.draw(text, color); - Render.popState(); + //Render.popState(); } diff --git a/src/mightypork/gamecore/render/fonts/GLFont.java b/src/mightypork/gamecore/render/fonts/GLFont.java index 86e2e7e..c2b824f 100644 --- a/src/mightypork/gamecore/render/fonts/GLFont.java +++ b/src/mightypork/gamecore/render/fonts/GLFont.java @@ -1,6 +1,7 @@ package mightypork.gamecore.render.fonts; +import mightypork.gamecore.render.textures.FilterMode; import mightypork.utils.math.color.RGB; import mightypork.utils.math.coord.Coord; @@ -47,5 +48,20 @@ public interface GLFont { * @return specified font size */ int getSize(); + + /** + * Set used filtering + * + * @param filter font filtering mode + */ + void setFiltering(FilterMode filter); + + + /** + * Get used filter mode + * + * @return filter mode + */ + FilterMode getFiltering(); } diff --git a/src/mightypork/gamecore/render/fonts/NullFont.java b/src/mightypork/gamecore/render/fonts/NullFont.java index 005febf..4611f7a 100644 --- a/src/mightypork/gamecore/render/fonts/NullFont.java +++ b/src/mightypork/gamecore/render/fonts/NullFont.java @@ -1,6 +1,8 @@ package mightypork.gamecore.render.fonts; +import mightypork.gamecore.render.textures.FilterMode; +import mightypork.utils.logging.Log; import mightypork.utils.math.color.RGB; import mightypork.utils.math.coord.Coord; @@ -15,7 +17,7 @@ public class NullFont implements GLFont { @Override public void draw(String str, RGB color) { - // nope + Log.w("Drawing with null font."); } @@ -43,8 +45,21 @@ public class NullFont implements GLFont { @Override public int getSize() { - // TODO Auto-generated method stub return 0; } + + + @Override + public void setFiltering(FilterMode filter) + { + // nope + } + + + @Override + public FilterMode getFiltering() + { + return null; + } } diff --git a/src/mightypork/gamecore/render/fonts/SlickFont.java b/src/mightypork/gamecore/render/fonts/SlickFont.java index b8505c6..086fe9d 100644 --- a/src/mightypork/gamecore/render/fonts/SlickFont.java +++ b/src/mightypork/gamecore/render/fonts/SlickFont.java @@ -41,11 +41,8 @@ public class SlickFont implements GLFont { } - /** - * Set used filtering - * - * @param filter font filtering mode - */ + + @Override public void setFiltering(FilterMode filter) { this.filter = filter; @@ -125,5 +122,13 @@ public class SlickFont implements GLFont { { return fsize; } + + + + @Override + public FilterMode getFiltering() + { + return filter; + } } diff --git a/src/mightypork/gamecore/render/textures/DeferredTexture.java b/src/mightypork/gamecore/render/textures/DeferredTexture.java index 801c871..3837060 100644 --- a/src/mightypork/gamecore/render/textures/DeferredTexture.java +++ b/src/mightypork/gamecore/render/textures/DeferredTexture.java @@ -21,8 +21,8 @@ import org.newdawn.slick.opengl.Texture; public class DeferredTexture extends BaseDeferredResource implements FilteredTexture { private Texture backingTexture; - private FilterMode filter_min = FilterMode.LINEAR; - private FilterMode filter_mag = FilterMode.LINEAR; + private FilterMode filter_min = FilterMode.NEAREST; + private FilterMode filter_mag = FilterMode.NEAREST; private WrapMode wrap = WrapMode.CLAMP; @@ -81,8 +81,6 @@ public class DeferredTexture extends BaseDeferredResource implements FilteredTex { if (!ensureLoaded()) return; - bindRaw(); - 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); @@ -91,6 +89,8 @@ public class DeferredTexture extends BaseDeferredResource implements FilteredTex GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, filter_min.num); GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, filter_mag.num); + bindRaw(); + } diff --git a/src/mightypork/rogue/screens/LayerFps.java b/src/mightypork/rogue/screens/LayerFps.java index 9519d6e..0c4253e 100644 --- a/src/mightypork/rogue/screens/LayerFps.java +++ b/src/mightypork/rogue/screens/LayerFps.java @@ -2,6 +2,7 @@ package mightypork.rogue.screens; import static mightypork.gamecore.gui.constraints.Constraints.*; +import static org.lwjgl.opengl.GL11.*; import mightypork.gamecore.gui.components.painters.TextPainter; import mightypork.gamecore.gui.constraints.RectConstraint; import mightypork.gamecore.gui.screens.Screen; @@ -31,6 +32,7 @@ public class LayerFps extends ScreenLayer { }; final GLFont font = Res.getFont("default"); + final RectConstraint constraint = _round(_move(_grow_down(_right_top(this), 32), -8, 8)); tp = new TextPainter(font, Align.RIGHT, RGB.WHITE, text);