diff options
Diffstat (limited to 'patches/OpenCSG-1.2.0-Reset-Hack.patch')
-rw-r--r-- | patches/OpenCSG-1.2.0-Reset-Hack.patch | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/patches/OpenCSG-1.2.0-Reset-Hack.patch b/patches/OpenCSG-1.2.0-Reset-Hack.patch new file mode 100644 index 0000000..7254ce7 --- /dev/null +++ b/patches/OpenCSG-1.2.0-Reset-Hack.patch @@ -0,0 +1,89 @@ +diff -ru OpenCSG-1.2.0/include/opencsg.h OpenCSG-1.2.0-reset/include/opencsg.h +--- OpenCSG-1.2.0/include/opencsg.h 2010-01-02 21:04:10.000000000 +0100 ++++ OpenCSG-1.2.0-reset/include/opencsg.h 2010-01-03 00:41:30.000000000 +0100 +@@ -229,6 +229,9 @@ + Algorithm, + DepthComplexityAlgorithm = NoDepthComplexitySampling); + ++ // call this function whenever switching the OpenGL context ++ void reset(); ++ + } // namespace OpenCSG + + #endif // __OpenCSG__opencsg_h__ +Only in OpenCSG-1.2.0-reset/include: opencsg.h~ +diff -ru OpenCSG-1.2.0/src/channelManager.h OpenCSG-1.2.0-reset/src/channelManager.h +--- OpenCSG-1.2.0/src/channelManager.h 2010-01-02 21:03:01.000000000 +0100 ++++ OpenCSG-1.2.0-reset/src/channelManager.h 2010-01-03 00:40:53.000000000 +0100 +@@ -79,9 +79,9 @@ + /// moved into alpha, to allow alpha testing of the channel. + static void setupTexEnv(Channel channel); + +- private: +- + static OpenGL::OffscreenBuffer* gOffscreenBuffer; ++ ++ private: + static int gOffscreenType; + static bool gInUse; + +Only in OpenCSG-1.2.0-reset/src: channelManager.h~ +diff -ru OpenCSG-1.2.0/src/offscreenBuffer.cpp OpenCSG-1.2.0-reset/src/offscreenBuffer.cpp +--- OpenCSG-1.2.0/src/offscreenBuffer.cpp 2010-01-02 21:03:04.000000000 +0100 ++++ OpenCSG-1.2.0-reset/src/offscreenBuffer.cpp 2010-01-03 00:41:28.000000000 +0100 +@@ -24,9 +24,22 @@ + #include "frameBufferObjectExt.h" + #include "pBufferTexture.h" + #include <GL/glew.h> ++#include "channelManager.h" ++ ++static bool reset_fARB = false; ++static bool reset_fEXT = false; ++static bool reset_p = false; + + namespace OpenCSG { + ++ void reset() ++ { ++ reset_fARB = true; ++ reset_fEXT = true; ++ reset_p = true; ++ OpenCSG::ChannelManager::gOffscreenBuffer = NULL; ++ } ++ + namespace OpenGL { + + OffscreenBuffer* getOffscreenBuffer(bool fbo) { +@@ -36,19 +49,28 @@ + + if (fbo) { + if (GLEW_ARB_framebuffer_object) { +- if (!fARB) ++ if (reset_fARB || !fARB) { ++ delete fARB; + fARB = new FrameBufferObject; ++ reset_fARB = false; ++ } + return fARB; + } + else { +- if (!fEXT) ++ if (reset_fEXT || !fEXT) { ++ delete fEXT; + fEXT = new FrameBufferObjectExt; ++ reset_fEXT = false; ++ } + return fEXT; + } + } + else { +- if (!p) ++ if (reset_p || !p) { ++ delete p; + p = new PBufferTexture; ++ reset_p = false; ++ } + return p; + } + } +Only in OpenCSG-1.2.0-reset/src: offscreenBuffer.cpp~ |