コード例 #1
0
//----------------------------------------------------------------------------
void EditRenderView_PreView::Tick(double elapsedTime)
{
	if (!IsEnable()) return;

	if (mRenderStep && mIsRenderCreated)
	{
		double tiemInSeconds = GetTimeInSeconds();

		if (PVT_NONE == mPreViewType)
		{
			Renderer *renderer = mRenderStep->GetRenderer();
			if (renderer && renderer->PreDraw())
			{
				renderer->ClearBuffers();

				renderer->PostDraw();
				renderer->DisplayColorBuffer();
			}
		}
		else if (PVT_TEXTURE == mPreViewType)
		{
			mRenderStep->Update(tiemInSeconds, elapsedTime);
			mRenderStep->ComputeVisibleSetAndEnv();

			Renderer *renderer = mRenderStep->GetRenderer();
			if (renderer && renderer->PreDraw())
			{
				renderer->InitRenderStates();
				renderer->ClearBuffers();

				mRenderStep->Draw();

				renderer->PostDraw();
				renderer->DisplayColorBuffer();
			}
		}
		else if (PVT_MODEL == mPreViewType)
		{
			mRenderStepScene->Update(tiemInSeconds, elapsedTime);
			mRenderStepScene->ComputeVisibleSetAndEnv();

			Renderer *renderer = mRenderStepScene->GetRenderer();
			if (renderer && renderer->PreDraw())
			{
				renderer->InitRenderStates();
				renderer->ClearBuffers();

				mRenderStepScene->Draw();

				renderer->PostDraw();
				renderer->DisplayColorBuffer();
			}
		}
	}
}
コード例 #2
0
//----------------------------------------------------------------------------
void EngineLoop::Tick()
{
	mAppTime = Time::GetTimeInSeconds();
	mElapsedTime = GetElapsedTime();
	mLastAppTime = mAppTime;

	if (mEventWorld)
		mEventWorld->Update((float)mElapsedTime);

	PX2_RM.Update(mAppTime, mElapsedTime);
	PX2_FM.Update();

	Project *proj = Project::GetSingletonPtr();

	PX2_GR.Update(mAppTime, mElapsedTime);

	if (mIsInBackground) return;

	PX2_GR.ComputeVisibleSetAndEnv();

	Renderer *defaultRenderer = Renderer::GetDefaultRenderer();
	if (defaultRenderer && defaultRenderer->PreDraw())
	{
		// clear screen
		defaultRenderer->SetViewport(Rectf(0.0f, 0.0f, mScreenSize.Width, mScreenSize.Height));
        if (proj) defaultRenderer->SetClearColor(proj->GetBackgroundColor());
		else defaultRenderer->SetClearColor(Float4::RED);
		defaultRenderer->ClearBuffers();

		if (mIsDoAdjustScreenViewRect)
			defaultRenderer->SetViewport(mAdjustViewPort);

		if (proj)
		{
			Scene *scene = proj->GetScene();
			if (scene)
			{
				defaultRenderer->SetClearColor(MathHelp::Float3ToFloat4(scene->GetColor(), 1.0f));
			}
			else
			{
				defaultRenderer->SetClearColor(proj->GetProjBackgroundColor());
			}
			defaultRenderer->ClearBuffers();
		}

		PX2_GR.Draw();

		defaultRenderer->PostDraw();
		defaultRenderer->DisplayColorBuffer();
	}
}