From 1c2fd65ddbc2c448dfdd2668ffb66c5807a098e9 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Tue, 15 Jul 2008 21:59:46 +0000 Subject: Apricot Branch ============== * Made in game switching of GLSL options work. There is still a one frame flicker that needs to be fixed. * Added access to the estimated average framerate in the game engine: GameLogic.getAverageFrameRate(). * Added acces to the blender build info from python: Blender.Get("buildinfo") * Various GLSL optimizations to allow more constant folding in the glsl compiler, use glsl shadow functions to do shadow, instead of own code, and fix an issue with opengl texture color range. --- source/gameengine/Rasterizer/RAS_BucketManager.cpp | 25 ++++++++++++++++++++++ source/gameengine/Rasterizer/RAS_BucketManager.h | 1 + 2 files changed, 26 insertions(+) (limited to 'source/gameengine/Rasterizer') diff --git a/source/gameengine/Rasterizer/RAS_BucketManager.cpp b/source/gameengine/Rasterizer/RAS_BucketManager.cpp index b4492ca03a9..67c9b56a78c 100644 --- a/source/gameengine/Rasterizer/RAS_BucketManager.cpp +++ b/source/gameengine/Rasterizer/RAS_BucketManager.cpp @@ -195,3 +195,28 @@ void RAS_BucketManager::RAS_BucketManagerClearAll() m_MaterialBuckets.clear(); m_AlphaBuckets.clear(); } + +void RAS_BucketManager::ReleaseDisplayLists() +{ + BucketList::iterator bit; + RAS_MaterialBucket::T_MeshSlotList::iterator mit; + + for (bit = m_MaterialBuckets.begin(); bit != m_MaterialBuckets.end(); ++bit) { + for (mit = (*bit)->msBegin(); mit != (*bit)->msEnd(); ++mit) { + if(mit->m_DisplayList) { + mit->m_DisplayList->Release(); + mit->m_DisplayList = NULL; + } + } + } + + for (bit = m_AlphaBuckets.begin(); bit != m_AlphaBuckets.end(); ++bit) { + for (mit = (*bit)->msBegin(); mit != (*bit)->msEnd(); ++mit) { + if(mit->m_DisplayList) { + mit->m_DisplayList->Release(); + mit->m_DisplayList = NULL; + } + } + } +} + diff --git a/source/gameengine/Rasterizer/RAS_BucketManager.h b/source/gameengine/Rasterizer/RAS_BucketManager.h index 010478b1d5b..b875512b464 100644 --- a/source/gameengine/Rasterizer/RAS_BucketManager.h +++ b/source/gameengine/Rasterizer/RAS_BucketManager.h @@ -60,6 +60,7 @@ public: RAS_MaterialBucket* RAS_BucketManagerFindBucket(RAS_IPolyMaterial * material, bool &bucketCreated); + void ReleaseDisplayLists(); private: void RAS_BucketManagerClearAll(); -- cgit v1.2.3