int main(int argc, char *argv[])
{

	SDL_Event e;
	bool quit = false;

	Renderer renderer;

	AnimatedObject* object1 = new AnimatedObject(renderer.GetRenderer(), 2, 200, "Assets/images/spritesRight.bmp", 50, 50, 50, 64, 32, 32);

	AnimatedObject* object2 = new AnimatedObject(renderer.GetRenderer(), 2, 200, "Assets/images/spritesLeft.bmp", 50, 200, 50, 64, 32, 32);
	object2->setPosition(200, 50);

	AnimatedObject* object3 = new AnimatedObject(renderer.GetRenderer(), 4, 100, "Assets/images/bananaDance.bmp", 50, 200, 64, 64, 32, 35);
	object3->setAnimationSpeed(125);

	while (!quit)
	{
		// Update loop

		renderer.ClearScreen();

		object1->Update();
		renderer.DrawSprite(object1->getTexture(), object1->getSrcRect(), object1->getSpriteRect());

		object2->Update();
		renderer.DrawSprite(object2->getTexture(), object2->getSrcRect(), object2->getSpriteRect());
		
		object3->Update();
		renderer.DrawSprite(object3->getTexture(), object3->getSrcRect(), object3->getSpriteRect());

		//update the screen with rendering operations
		renderer.renderPresent();

		//Handle events on queue
		while (SDL_PollEvent(&e) != 0)
		{

			//User requests quit
			if (e.type == SDL_QUIT) //user presses close button on window
			{
				quit = true;
			}

			//User presses a key
			else if (e.type == SDL_KEYDOWN)
			{
				switch (e.key.keysym.sym)
				{
				case SDLK_ESCAPE:
					quit = true;
					break;
				default:
					break;
				}


			}
		}//End Poll Events

	}//End Game loop
	SDL_Quit();
	return 0;
} //End Main
コード例 #2
0
void RenderingQueue::Draw( void )
{
    m_switches_cost = 0;

    Renderer* renderer = SingletonPlugin<Renderer>::GetInstance()->m_interface;

    if( m_target )
    {
        renderer->BeginTarget( m_target );
    }
    else
    {
        renderer->BeginScreen();
    }

    if( m_clear_depth )
    {
        renderer->ClearDepth();
    }
    if( m_clear_target )
    {
        renderer->ClearScreen( m_target_clear_color_r, m_target_clear_color_g, m_target_clear_color_b );
    }

    //for( size_t i = 0; i < m_outputqueue.size(); i++ )
    for( std::list<Operation>::iterator it = m_outputqueue.begin(); it != m_outputqueue.end(); ++it )
    {
        //Operation curr_operation = m_outputqueue[i];
        Operation curr_operation = (*it);

        switch( curr_operation.type )
        {
            case SET_TEXTURE:

                renderer->SetTexture( curr_operation.data, curr_operation.texture_stage );
                m_switches_cost++;
                break;

            case UNSET_TEXTURE:

                renderer->UnsetTexture( curr_operation.texture_stage );
                m_switches_cost++;
                break;

            case SET_FX:

                renderer->SetFx( curr_operation.data );
                m_switches_cost++;
                break;

            case UNSET_FX:

                renderer->UnsetFx( curr_operation.data );
                m_switches_cost++;
                break;

            case SET_MESHE:

                renderer->SetMeshe( curr_operation.data );
                m_switches_cost++;
                break;

            case SET_SHADERS_PARAMS:
               
                renderer->SetFxShaderParams( curr_operation.shader_params->shader_index, curr_operation.shader_params->param_register, curr_operation.shader_params->param_values );
                break;

            case DRAW_NODE:

                curr_operation.node->OnDraw();
                break;
        }
    }

    if( m_target )
    {
        renderer->EndTarget( m_target );
    }
    else
    {
        renderer->EndScreen();
    }
}