int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { UNREFERENCED_PARAMETER(hPrevInstance); UNREFERENCED_PARAMETER(lpCmdLine); // TODO: Place code here. MSG msg; HACCEL hAccelTable; // Initialize global strings LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING); LoadString(hInstance, IDC_SHADER1, szWindowClass, MAX_LOADSTRING); MyRegisterClass(hInstance); // Perform application initialization: if (!InitInstance (hInstance, nCmdShow)) { return FALSE; } hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_SHADER1)); Renderer renderer; renderer.Init( gParams ); BasicModel model; model.Load( &renderer, "testmodel.xml" ); PeekMessage( &msg, NULL, 0, 0, PM_NOREMOVE); // run till completed while (msg.message != WM_QUIT) { if (PeekMessage( &msg, NULL, 0, 0, PM_REMOVE)) { TranslateMessage(&msg); DispatchMessage(&msg); } else { renderer.BeginScene(); model.Draw( &renderer ); renderer.EndScene(); } } model.Unload(); renderer.Fini(); return (int) msg.wParam; }
void Grafkit::EffectComposer::RenderChain(Renderer & render) { m_shaderFullscreenQuad->Bind(render); size_t fxcount = m_singlepass ? 1 : m_effectChain.size(); bool firstNode = true; for (size_t fxid = 0; fxid < fxcount; fxid++) { EffectPass *fx = m_effectChain[fxid].Get(); if (!m_singlepass) { render.SetRenderTargetView(*m_pTexWrite); render.ApplyRenderTargetView(1); render.BeginScene(); } if (fx && fx->GetShader().Valid()) { if (!m_singlepass) { fx->GetShader()->SetShaderResourceView(render, "backBuffer", m_pTexBack->GetShaderResourceView()); fx->GetShader()->SetShaderResourceView(render, "frontBuffer", m_pTexFront->GetShaderResourceView()); if (firstNode) fx->GetShader()->SetShaderResourceView(render, "effectInput", m_pTexFront->GetShaderResourceView()); else fx->GetShader()->SetShaderResourceView(render, "effectInput", m_pTexRead->GetShaderResourceView()); firstNode = false; } fx->GetShader()->SetSamplerSatate(render, "SampleType", m_textureSampler->GetSamplerState()); fx->GetShader()->SetParam(render, "EffectParams", &m_screen_params); fx->BindFx(render); } m_fullscreenquad->RenderMesh(render); if (fx && fx->GetShader().Valid()) { fx->UnbindFx(render); fx->UnbindOutputs(render); } this->SwapBuffers(); } m_shaderFullscreenQuad->Unbind(render); }
void Grafkit::EffectComposer::Flush(Renderer & render) { // present the result if (m_singlepass) return; // ezt ki kell majd baszni innen if (m_chainOutput.Invalid()) { render.SetRenderTargetView(); } else { render.SetRenderTargetView(*m_chainOutput); //m_chainOutput->SetRenderTargetView(0); } render.ApplyRenderTargetView(); render.BeginScene(); m_shaderFullscreenQuad->Bind(render); size_t fxcount = m_singlepass ? 1 : m_effectChain.size(); if (fxcount != 0) m_shaderCopyScreen->SetShaderResourceView(render, "effectInput", m_pTexRead->GetShaderResourceView()); else m_shaderCopyScreen->SetShaderResourceView(render, "effectInput", m_pTexFront->GetShaderResourceView()); m_shaderCopyScreen->Bind(render); m_fullscreenquad->RenderMesh(render); m_shaderCopyScreen->Unbind(render); m_shaderFullscreenQuad->Unbind(render); // ezt ki kell majd baszni innen if (m_chainOutput.Valid()) { render.SetRenderTargetView(); render.ApplyRenderTargetView(); } this->FlushBuffers(); }
void TrackballManipulator::Render() const { Renderer* renderer = GraphicSubsystem::Instance()->GetRenderer(); GD_ASSERT(renderer); renderer->SetRenderState( Renderer::Lighting, false ); renderer->SetPolygonMode( Renderer::FrontFace, Renderer::FillWireframe ); renderer->SetShadeModel( Renderer::Flat ); renderer->PushMatrix(); renderer->Translate( mBallPos ); renderer->Rotate( mNewRotation ); renderer->SetColor( Color4f(0.3f, 0.3f, 0.3f, 1.0f) ); renderer->DrawSphere( 1, 7 ); renderer->PopMatrix(); /* renderer->SetColor( Color4f(1.0f, 0.3f, 0.3f, 1.0f) ); Vector3f screen; Vector3f world; screen = renderer->WorldToScreen( mBallPos ); Int32 viewport[4]; renderer->GetViewport( viewport ); renderer->Begin2DProjection( viewport[0], viewport[2], viewport[1], viewport[3], -1, 1 ); renderer->DrawLine( screen.x - 5, screen.y, screen.x + 5, screen.y ); renderer->DrawLine( screen.x, screen.y - 5, screen.x, screen.y + 5 ); renderer->End2DProjection(); Camera3DProperties* camProp = mEditor->GetWorldManager().GetCurrentCamera(); Camera3D* camera = Cast<Camera3D>(camProp->GetObject()); Vector3f worldRay = renderer->ScreenToWorld( screen ) - camera->GetPosition(); worldRay.Normalize(); renderer->PushMatrix(); renderer->Translate( camera->GetPosition() + worldRay * 5 ); renderer->Rotate( mNewRotation - camera->GetOrientation() ); //renderer->DrawCircle( normal, radius, subdiv ); Vector3f normal( 0, 1, 0 ); Float radius = 1; Float subdiv = 50; Float angle = Maths::PI_2 / subdiv; renderer->SetColor( Color4f(1.0f, 0.0f, 0.0f, 1.0f) ); renderer->BeginScene( Renderer::LineStrip ); for( Int32 i = 0; i < subdiv; i++ ) { renderer->SetVertex( Vector3f( Maths::Cos( angle * i ) * radius, 0, Maths::Sin( angle * i ) * radius ) ); } renderer->EndScene(); renderer->SetColor( Color4f(0.0f, 1.0f, 0.0f, 1.0f) ); renderer->BeginScene( Renderer::LineStrip ); for( Int32 i = 0; i < subdiv; i++ ) { renderer->SetVertex( Vector3f( 0, Maths::Cos( angle * i ) * radius, Maths::Sin( angle * i ) * radius ) ); } renderer->EndScene(); renderer->SetColor( Color4f(0.0f, 0.0f, 1.0f, 1.0f) ); renderer->BeginScene( Renderer::LineStrip ); for( Int32 i = 0; i < subdiv; i++ ) { renderer->SetVertex( Vector3f( Maths::Sin( angle * i ) * radius, Maths::Cos( angle * i ) * radius, 0 ) ); } renderer->EndScene(); renderer->PopMatrix(); */ renderer->SetShadeModel( Renderer::Smooth ); renderer->SetPolygonMode( Renderer::FrontFace, Renderer::FillSolid ); renderer->SetColor( Color4f(0.0f, 1.0f, 0.0f, 1.0f) ); renderer->BeginScene( Renderer::LineList ); renderer->SetVertex( mBallPos ); renderer->SetVertex( mDragStart ); renderer->EndScene(); renderer->SetColor( Color4f(0.0f, 0.0f, 1.0f, 1.0f) ); renderer->BeginScene( Renderer::LineList ); renderer->SetVertex( mBallPos ); renderer->SetVertex( mDragPos ); renderer->EndScene(); renderer->SetRenderState( Renderer::Lighting, true ); renderer->SetColor( Color4f(1.0f, 1.0f, 1.0f, 1.0f) ); }