コード例 #1
0
 /// <summary>
 /// Gets the viewports collection.
 /// </summary>
 public static Viewport[] GetViewports()
 {
     lock (viewports)
         return(viewports.ToArray());
 }
コード例 #2
0
        //public void UpdateRenderTargets( IList<RenderTarget> renderTargets, bool swapBuffers )
        //{
        //	//!!!!!про первое render time

        //	//!!!!!beginNewRenderFrame

        //!!!!!!!
        //	////no render if device lost
        //	//if( RenderSystem.Instance.IsDeviceLostByTestCooperativeLevel() )
        //	//	return;
        //	////try to restore device lost
        //	//if( RenderSystem.Instance.IsDeviceLost() )
        //	//{
        //	//	if( !RenderSystem.Instance.RestoreDeviceAfterLost() )
        //	//		return;
        //	//}

        //	//if ( beginNewRenderFrame && RendererWorld.insideRenderOneFrame )
        //		  //   if( RendererWorld.insideRenderOneFrame )
        //		  //      Log.Fatal( "RendererWorld: _RenderOneFrame: Unable to render frame, because right a now new frame is already during rendering." );


        //!!!!!взять из метода нужное. потом удалить
        //void UpdateRenderTargets223( RenderTarget renderTargetForUpdate, bool beginNewRenderFrame )
        //{
        //	//!!!!когда свапать?


        //	//bool needChangeInsideRenderOneFrameFlag = insideRenderOneFrame == false;

        //	//!!!!!
        //	//bool newFrame = forceBeginNewRenderFrame;
        //	//bool newFrame = false;
        //	////calculate newFrame and update lastUpdatedRenderTargetsForRenderTimeCalculation
        //	//if( !insideBeginRenderFrameEvent && !insideRenderOneFrame )
        //	//{
        //	//   if( forceBeginNewRenderFrame )
        //	//      newFrame = true;
        //	//   if( renderTargetForUpdate != null )
        //	//   {
        //	//      if( !lastUpdatedRenderTargetsForRenderTimeCalculation.Contains( renderTargetForUpdate ) )
        //	//         lastUpdatedRenderTargetsForRenderTimeCalculation.Add( renderTargetForUpdate );
        //	//      else
        //	//         newFrame = true;
        //	//   }
        //	//   if( frameRenderTime + 1.0f < time )
        //	//      newFrame = true;
        //	//   if( newFrame )
        //	//      lastUpdatedRenderTargetsForRenderTimeCalculation.Clear();
        //	//   if( firstRenderOneFrame )
        //	//      newFrame = true;
        //	//}

        //	if( beginNewRenderFrame )
        //	{
        //		////begin new frame
        //		//insideRenderOneFrame = true;

        //		////update render time
        //		//float time = EngineApp.Instance.Time;
        //		//previousFrameRenderTime = frameRenderTime;
        //		//float oldTime = frameRenderTime;
        //		//frameRenderTime = time;
        //		//frameRenderTimeStep = frameRenderTime - oldTime;

        //		//!!!!слишком большой step урезать?

        //		//!!!!!!надо
        //		//if( !EngineApp.Instance.EnginePaused )//!!!!!!так? ведь сейчас не включается setEnableTimeProgress
        //		//{
        //		//	unsafe
        //		//	{
        //		//		OgreRoot.setEnableTimeProgress( RendererWorld.realRoot, EnableTimeProgress );
        //		//		double t = (double)frameRenderTime * 1000.0;

        //		//		//!!!!!не так?
        //		//		OgreRoot.setTimerMilliseconds( RendererWorld.realRoot, (uint)t );
        //		//	}
        //		//}

        //		//!!!!иначе
        //		////reset statistics
        //		//statistics.BeginNewFrame();

        //		//!!!!!here?
        //		//!!!!!было
        //		//if( !LongOperationCallbackManager.DuringCallingCallback )
        //		//SceneManager.Instance.UpdateConstShadowSettings();

        //		//try
        //		//{
        //		//   insideBeginRenderFrameEvent = true;

        //		//for( int n = 0; n < Map.Instances.Count; n++ )
        //		//	Map.Instances[ n ].BeforeBeginRenderFrameEvent();

        //		//if( BeginRenderFrame != null )
        //		//	BeginRenderFrame();
        //		//}
        //		//finally
        //		//{
        //		//   insideBeginRenderFrameEvent = false;
        //		//}

        //		//!!!!!так? тут?
        //		//EngineApp.Instance.Call_MainViewport_OnUpdateCameraSettings();
        //		//EngineApp.Instance.Call_MainViewport_OnRenderUI();
        //	}

        //	//update render targets
        //	//unsafe
        //	//{
        //	//IntPtr errorPointer;

        //	//if( renderTargetForUpdate != null )
        //	//{
        //	//   OgreRoot.renderOneFrame( RendererWorld.realRoot, renderTargetForUpdate.realObject, newFrame, out errorPointer );
        //	//}
        //	//else
        //	//{
        //	//   OgreRoot.renderOneFrame( RendererWorld.realRoot, null, false, out errorPointer );
        //	//}

        //	//string error = OgreNativeWrapper.GetOutString( errorPointer );
        //	//if( error != null )
        //	//{
        //	//   Log.Fatal( "RendererWorld: Render frame failed ({0}).", error );
        //	//   return;
        //	//}
        //	//}

        //	//}
        //	//finally
        //	//{
        //	//   if( needChangeInsideRenderOneFrameFlag )
        //	//      insideRenderOneFrame = false;
        //	//}

        //	////reset current pass
        //	//SceneManager.Instance.ResetCurrentRenderPass();

        //	////тут ли? обновляется там, где тик. проверить всё по тикам и Simulation pause.
        //	////update particle systems bounds
        //	//if( newFrame )
        //	//{
        //	//	if( !RenderSystem.Instance.IsDeviceLost() )
        //	//		SceneManager.Instance.UpdateParticleSystemsBounds();
        //	//}

        //	//!!!!было
        //	////recreate viewport compositors if need
        //	//if( !RenderSystem.Instance.IsDeviceLost() )
        //	//{
        //	//   foreach( RenderTarget renderTarget in renderTargets.Values )
        //	//   {
        //	//      foreach( Viewport viewport in renderTarget.viewports )
        //	//      {
        //	//         if( viewport.needRecreateCompositors )
        //	//            viewport.RecreateCompositors();
        //	//      }
        //	//   }
        //	//}

        //	//if( beginNewRenderFrame )
        //	//{
        //	//!!!!!!need? maybe someone want to collect debug geometry and gui during some time.
        //	//if( !insideBeginRenderFrameEvent && !insideRenderOneFrame )
        //	//{
        //	//   //clear not rendered debug geometries
        //	//   foreach( RenderCamera camera in cameras.Values )
        //	//   {
        //	//      xx xx;//это как с GuiRenderer?

        //	//      if( !camera.lastFrameRendered )
        //	//      {
        //	//         if( camera.debugGeometry != null )
        //	//            camera.debugGeometry.Clear();
        //	//      }

        //	//      camera.lastFrameRendered = false;
        //	//   }
        //	//}

        //	//SceneManager.Instance._SceneGraph.UpdateAfterRendering();

        //	//insideRenderOneFrame = false;
        //	//}

        //	//firstRenderOneFrame = false;
        //}

        //internal void RenderOneFrame()
        //{
        //   if( RendererWorld.insideRenderOneFrame )
        //      Log.Fatal( "RendererWorld: _RenderOneFrame: Unable to render frame, because right a now new frame is already during rendering." );

        //   UpdateRenderTargets( null, true );
        //}

        //!!!!!надо
        ///// <summary>
        ///// Gets the render statistics.
        ///// </summary>
        //public RenderStatisticsInfo Statistics
        //{
        //   get { return statistics; }
        //}

        //!!!!было
        //public void _ResetFrameRenderTimeAndRenderTimeStep()
        //{
        //	frameRenderTime = EngineApp.Instance.Time;
        //	frameRenderTimeStep = 0;
        //}

        /// <summary>
        /// Gets the render targets collection.
        /// </summary>
        public static RenderTarget[] GetRenderTargets()
        {
            lock (renderTargets)
                return(renderTargets.ToArray());
        }