int main( int argc, char **argv ) { if ( SDL_Init( SDL_INIT_EVERYTHING ) < 0 ) throw runtime_error(SDL_GetError()); SDL_Window *window = SDL_CreateWindow( "particles example", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, WINDOW_WIDTH, WINDOW_HEIGHT, SDL_WINDOW_SHOWN ); if ( window == NULL ) throw runtime_error(SDL_GetError()); SDL_Renderer *renderer = SDL_CreateRenderer( window, -1, SDL_RENDERER_SOFTWARE); if ( renderer == NULL ) throw runtime_error(SDL_GetError()); const int MAX_NUMBER_OF_PARTICLES = 500; CVector2f pos(320,240); CSimpleParticleSystem system(renderer, MAX_NUMBER_OF_PARTICLES, pos); CTimer t; t.Reset(); bool bRunning = true; while ( bRunning ) { t.Update(); SDL_Event ev; while ( SDL_PollEvent( & ev )) // Check event queue. { switch( ev.type ) { case SDL_QUIT: // when window is closed bRunning = false; break; case SDL_KEYDOWN: switch( ev.key.keysym.sym ) { case SDLK_SPACE: system.Initialize(10); break; default: break; } break; } } SDL_SetRenderDrawColor(renderer,0,0,0,0); SDL_RenderClear(renderer); // Make sure that time has passed between updates if( t.GetPassedTimeMS() >= 5) { system.Update( t.GetPassedTime() ); t.Reset(); } system.Render( renderer ); SDL_RenderPresent(renderer); } SDL_Quit(); return 0; }