//---------------------------------------------------------------------------- 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(); } } } }
//---------------------------------------------------------------------------- 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(); } }
//---------------------------------------------------------------------------- Int main(Int argc, Char** argv) { Main::Initialize(); PdrRendererInput input; const Bool useVSync = true; // window width/height and windowed mode not supported on the Wii Renderer* pRenderer = WIRE_NEW Renderer(input, 0, 0, true, useVSync); // Renderer must be created before calling PADInit PADInit(); RenderObjectPtr spCube = StandardMesh::CreateCube8(/* RGB(A) channels */ 4); Vector3F cameraLocation(0.0F, 0.0F, 10.0F); Vector3F viewDirection(0.0F, 0.0F, -1.0F); Vector3F up(0.0F, 1.0F, 0.0F); CameraPtr spCamera = WIRE_NEW Camera(cameraLocation, viewDirection, up); do { Transformation transformation; Matrix34F rotate(Vector3F(0.2F, 0.7F, 0.1F), MathF::FMod( static_cast<Float>(System::GetTime()), MathF::TWO_PI)); transformation.SetRotate(rotate); pRenderer->ClearBuffers(); pRenderer->PreDraw(spCamera); pRenderer->Draw(spCube, transformation); pRenderer->PostDraw(); pRenderer->DisplayBackBuffer(); WPAD_ScanPads(); } while (!(WPAD_ButtonsDown(0) & WPAD_BUTTON_HOME)); // dereference (i.e. destroy) before destroying the renderer spCamera = NULL; spCube = NULL; WIRE_DELETE pRenderer; Main::Terminate(); return 0; }