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
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(); } }