Main /
SDLInstallTestMakefile: all: g++ sdltest.c `sdl-config --cflags --libs` -o sdltest sdltest.c: #include "SDL.h" #ifdef __ANDROID__ #define DIR_CUR "/sdcard/" #define DIR_SEP "/" #else //UNIX #define DIR_CUR "" #define DIR_SEP "/" #endif #define DATAFILE(X) DIR_CUR "data" DIR_SEP X int main(int argc, char* argv[]) { // Window and Renderer. SDL_Window* window; SDL_Renderer* renderer; // Initialize SDL. if (SDL_Init(SDL_INIT_VIDEO) < 0) return 1; // Create the application window. The size chosen is logical, not the exact // number of pixels of the window (mobiles will override it). window = SDL_CreateWindow("My SDL 1.3 Test", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 640, 480, SDL_WINDOW_SHOWN); // Get the first available Hardware-accelerated renderer for this window. renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED); // Select the base colour for drawing. It is set to red here. SDL_SetRenderDrawColor(renderer, 255, 0, 0, 255); // Load the image we will draw and convert it to a renderer-specific texture // for greater efficiency. SDL_Texture *texture = NULL; SDL_Surface *surface = NULL; // The App shouldn't crash even if this file is not actually present ;) surface = SDL_LoadBMP(DATAFILE("test.bmp")); texture = SDL_CreateTextureFromSurface(renderer, surface); SDL_FreeSurface(surface); // Execute the main loop. bool running = true; while(running) { // Clear the entire screen to the Renderer's base colour. SDL_RenderClear(renderer); // Render the image on top of this. The two final parameters are the // source and destination sub-rectangle: NULL for both means we use // the whole image and stretch it across the whole screen.s SDL_RenderCopy(renderer, texture, NULL, NULL); // Flip the shown and hidden buffers to refresh the screen. SDL_RenderPresent(renderer); // Give other applications some time to execute. SDL_Delay(50); // Check for input events and exit if the window is closed (ex: pressing // the cross, closed by the OS) static SDL_Event event; while (SDL_PollEvent(&event)) if(event.type == SDL_QUIT) running = false; } // Remember to free up all the memory we've used, this ain't no Java! SDL_DestroyTexture(texture); SDL_DestroyRenderer(renderer); SDL_DestroyWindow(window); SDL_Quit(); // all clear, return EXIT_SUCCESS return 0; } |