MCPcopy Create free account
hub / github.com/OGRECave/ogre / _renderScene

Method _renderScene

OgreMain/src/OgreSceneManager.cpp:924–1115  ·  view source on GitHub ↗

-----------------------------------------------------------------------

Source from the content-addressed store, hash-verified

922}
923//-----------------------------------------------------------------------
924void SceneManager::_renderScene(Camera* camera, Viewport* vp, bool includeOverlays)
925{
926 assert(camera);
927 OgreProfileGroup(camera->getName(), OGREPROF_GENERAL);
928
929 auto prevSceneManager = Root::getSingleton()._getCurrentSceneManager();
930 Root::getSingleton()._setCurrentSceneManager(this);
931 mActiveQueuedRenderableVisitor->targetSceneMgr = this;
932 mAutoParamDataSource->setCurrentSceneManager(this);
933
934 // preserve the previous scheme, in case this is a RTT update with an outer _renderScene pending
935 MaterialManager& matMgr = MaterialManager::getSingleton();
936 String prevMaterialScheme = matMgr.getActiveScheme();
937
938 // Also set the internal viewport pointer at this point, for calls that need it
939 // However don't call setViewport just yet (see below)
940 mCurrentViewport = vp;
941
942 // Set current draw buffer (default is CBT_BACK)
943 mDestRenderSystem->setDrawBuffer(mCurrentViewport->getDrawBuffer());
944
945 // reset light hash so even if light list is the same, we refresh the content every frame
946 useLights(NULL, 0);
947
948 // Perform a quick pre-check to see whether we should override far distance
949 // When using stencil volumes we have to use infinite far distance
950 // to prevent dark caps getting clipped
951 if (isShadowTechniqueStencilBased() &&
952 camera->getProjectionType() == PT_PERSPECTIVE &&
953 camera->getFarClipDistance() != 0 &&
954 mStencilShadowRenderer.mShadowUseInfiniteFarPlane)
955 {
956 // infinite far distance
957 camera->setFarClipDistance(0);
958 }
959
960 mCameraInProgress = camera;
961
962
963 // Update controllers
964 ControllerManager::getSingleton().updateAllControllers();
965
966 // Update the scene, only do this once per frame
967 unsigned long thisFrameNumber = Root::getSingleton().getNextFrameNumber();
968 if (thisFrameNumber != mLastFrameNumber)
969 {
970 // Update animations
971 _applySceneAnimations();
972 updateDirtyInstanceManagers();
973 mLastFrameNumber = thisFrameNumber;
974 }
975
976 {
977 // Lock scene graph mutex, no more changes until we're ready to render
978 OGRE_LOCK_MUTEX(sceneGraphMutex);
979
980 // Update scene graph for this camera (can happen multiple times per frame)
981 {

Callers

nothing calls this directly

Calls 15

getProjectionTypeMethod · 0.80
setFarClipDistanceMethod · 0.80
updateAllControllersMethod · 0.80
getShadowsEnabledMethod · 0.80
setCurrentCameraMethod · 0.80
getTargetMethod · 0.80

Tested by

no test coverage detected