diff --git a/engine/src/core/com/jme3/renderer/Renderer.java b/engine/src/core/com/jme3/renderer/Renderer.java index 8f25a823f..4ec4eaa7f 100644 --- a/engine/src/core/com/jme3/renderer/Renderer.java +++ b/engine/src/core/com/jme3/renderer/Renderer.java @@ -59,6 +59,12 @@ public interface Renderer { */ public Statistics getStatistics(); + /** + * Invalidates the current rendering state. Should be called after + * the GL state was changed manually or through an external library. + */ + public void invalidateState(); + /** * Clears certain channels of the current bound framebuffer. * diff --git a/engine/src/core/com/jme3/system/NullRenderer.java b/engine/src/core/com/jme3/system/NullRenderer.java index 68672f858..8ebfa670f 100644 --- a/engine/src/core/com/jme3/system/NullRenderer.java +++ b/engine/src/core/com/jme3/system/NullRenderer.java @@ -62,6 +62,9 @@ public class NullRenderer implements Renderer { return stats; } + public void invalidateState(){ + } + public void clearBuffers(boolean color, boolean depth, boolean stencil) { } diff --git a/engine/src/lwjgl-ogl/com/jme3/renderer/lwjgl/LwjglGL1Renderer.java b/engine/src/lwjgl-ogl/com/jme3/renderer/lwjgl/LwjglGL1Renderer.java index c680847d3..7d8e80be6 100644 --- a/engine/src/lwjgl-ogl/com/jme3/renderer/lwjgl/LwjglGL1Renderer.java +++ b/engine/src/lwjgl-ogl/com/jme3/renderer/lwjgl/LwjglGL1Renderer.java @@ -101,6 +101,10 @@ public class LwjglGL1Renderer implements GL1Renderer { } } + public void invalidateState(){ + context.reset(); + } + public void resetGLObjects() { colorSet = false; diff --git a/engine/src/lwjgl-ogl/com/jme3/renderer/lwjgl/LwjglRenderer.java b/engine/src/lwjgl-ogl/com/jme3/renderer/lwjgl/LwjglRenderer.java index 53509c11b..088a6e3fd 100644 --- a/engine/src/lwjgl-ogl/com/jme3/renderer/lwjgl/LwjglRenderer.java +++ b/engine/src/lwjgl-ogl/com/jme3/renderer/lwjgl/LwjglRenderer.java @@ -407,6 +407,12 @@ public class LwjglRenderer implements Renderer { logger.log(Level.INFO, "Caps: {0}", caps); } + public void invalidateState(){ + context.reset(); + boundShader = null; + lastFb = null; + } + public void resetGLObjects() { objManager.resetObjects(); statistics.clearMemory();