diff options
author | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2008-07-16 01:59:46 +0400 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2008-07-16 01:59:46 +0400 |
commit | 1c2fd65ddbc2c448dfdd2668ffb66c5807a098e9 (patch) | |
tree | fcf9b43aee370a35d5bb7311d49b9c8835f03aef /source/gameengine/Rasterizer | |
parent | 95fbf8342319baa202269d6f2674e482888761c7 (diff) |
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.
Diffstat (limited to 'source/gameengine/Rasterizer')
-rw-r--r-- | source/gameengine/Rasterizer/RAS_BucketManager.cpp | 25 | ||||
-rw-r--r-- | source/gameengine/Rasterizer/RAS_BucketManager.h | 1 |
2 files changed, 26 insertions, 0 deletions
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(); |