Ignore:
Timestamp:
05/30/05 03:20:23 (19 years ago)
Author:
mattausch
Message:

added depth pass algorithm + delayed transparent object rendering (so depth ordering is right)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/VUT/work/ogre_changes/OgreMain/src/OgreSceneManager.cpp

    r99 r115  
    5959#include "OgreDataStream.h" 
    6060#include "OgreStaticGeometry.h" 
    61 #include <windows.h> //matt: remove later 
     61 
    6262// This class implements the most basic scene manager 
    6363 
     
    665665        if (lastUsedVertexProgram) 
    666666        { 
    667                         //matt: remove later 
    668                         //OutputDebugString("unbinding vertex program\n"); 
    669  
    670667            mDestRenderSystem->unbindGpuProgram(GPT_VERTEX_PROGRAM); 
    671668            lastUsedVertexProgram = false; 
     
    990987                               const String& groupName) 
    991988{ 
    992     mSkyPlaneEnabled = enable; 
    993989    if (enable) 
    994990    { 
     
    10611057 
    10621058    } 
     1059        mSkyPlaneEnabled = enable; 
    10631060} 
    10641061//----------------------------------------------------------------------- 
     
    10711068                             const String& groupName) 
    10721069{ 
    1073     mSkyBoxEnabled = enable; 
    10741070    if (enable) 
    10751071    { 
     
    11431139 
    11441140    } 
    1145  
     1141        mSkyBoxEnabled = enable; 
    11461142} 
    11471143//----------------------------------------------------------------------- 
     
    11571153                              const String& groupName) 
    11581154{ 
    1159     mSkyDomeEnabled = enable; 
    11601155    if (enable) 
    11611156    { 
     
    11641159        { 
    11651160            OGRE_EXCEPT(Exception::ERR_INVALIDPARAMS,  
    1166                 "Sky dome material '" + materialName + " not found.", 
     1161                "Sky dome material '" + materialName + "' not found.", 
    11671162                "SceneManager::setSkyDome"); 
    11681163        } 
     
    12081203 
    12091204    } 
     1205        mSkyDomeEnabled = enable; 
    12101206} 
    12111207//----------------------------------------------------------------------- 
     
    26582654    { 
    26592655        Light* l = i->second; 
     2656                if (l->isVisible()) 
     2657                { 
    26602658        if (l->getType() == Light::LT_DIRECTIONAL) 
    26612659        { 
     
    26752673 
    26762674        } 
     2675    } 
    26772676    } 
    26782677 
     
    41804179#ifdef GTP_VISIBILITY_MODIFIED_OGRE 
    41814180//----------------------------------------------------------------------- 
    4182 void SceneManager::_renderSceneNode( Camera *cam, SceneNode *node ) 
     4181void SceneManager::_renderSceneNode(Camera *cam, SceneNode *node, bool leaveTransparentsInQueue) 
    41834182{ 
    41844183        node->_findVisibleObjects(cam, getRenderQueue(), false, mDisplayNodes, false); 
     
    41864185         
    41874186        // delete all rendered objects from renderqueue 
    4188         _deleteRenderedQueueGroups(); 
    4189 } 
    4190 //----------------------------------------------------------------------- 
    4191 void SceneManager::_deleteRenderedQueueGroups() 
     4187        _deleteRenderedQueueGroups(leaveTransparentsInQueue); 
     4188} 
     4189//----------------------------------------------------------------------- 
     4190void SceneManager::_deleteRenderedQueueGroups(bool leaveTransparentsInQueue) 
    41924191{ 
    41934192        RenderQueue::QueueGroupIterator queueIt = getRenderQueue()->_getQueueGroupIterator(); 
     
    42004199 
    42014200                if (isRenderQueueToBeProcessed(qId)) 
     4201                { 
     4202                        if (leaveTransparentsInQueue) 
     4203                        { 
     4204                                pGroup->clearSolids(); 
     4205                        } 
     4206                        else 
     4207                        { 
    42024208                        pGroup->clear(); 
     4209        } 
     4210                } 
    42034211        } 
    42044212         
Note: See TracChangeset for help on using the changeset viewer.