Esempio n. 1
0
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;
}
Esempio n. 2
0
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);
}
Esempio n. 3
0
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) );
}