From 7d6167c0dc3481edc662525afcfcf04465d81618 Mon Sep 17 00:00:00 2001 From: "sha..rd" Date: Wed, 20 Apr 2011 20:18:41 +0000 Subject: [PATCH] * Added Renderer.invalidateState() to reset the render context git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@7280 75d07b2b-3a1a-0410-a2c5-0572b91ccdca --- engine/src/core/com/jme3/renderer/Renderer.java | 6 ++++++ engine/src/core/com/jme3/system/NullRenderer.java | 3 +++ .../lwjgl-ogl/com/jme3/renderer/lwjgl/LwjglGL1Renderer.java | 4 ++++ .../lwjgl-ogl/com/jme3/renderer/lwjgl/LwjglRenderer.java | 6 ++++++ 4 files changed, 19 insertions(+) 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();