(C++) SDL example 1: moving colors
February 24, 2017 · View on GitHub
(C++) SDL example 1: moving colors
This SDL example shows colors moving, like this screenshot (png).
Operating system: Ubuntu
IDE: Qt Creator 2.0.0
Project type: Qt4 Console Application
Selected required modules: QtCore
Qt project file
#------------------------------------------------- # # Project created by QtCreator 2010-07-17T14:57:33 # #------------------------------------------------- QT += core QT -= gui TARGET = CppSdlExample1 CONFIG += console CONFIG -= app_bundle TEMPLATE = app LIBS += -L/usr/local/lib -lSDL SOURCES += main.cpp
Source code
#include <cassert> #include <cstdlib> #include <iostream> #include <SDL/SDL.h> //Adapted from http://www.libsdl.org/intro.en/usingvideo.html int main() { if ( SDL_Init(SDL_INIT_AUDIO | SDL_INIT_VIDEO) < 0 ) { std::cerr << "Unable to initialize SDL: " << SDL_GetError() << '\n'; return 1; } std::atexit(SDL_Quit); const int width = 256; //640; const int height = 256; //480; SDL_Surface * const screen = SDL_SetVideoMode(width,height, 16, SDL_SWSURFACE); if (!screen) { std::cerr << "Unable to initialize screen: " << SDL_GetError() << '\n'; return 1; } Uint16 * const pixels = reinterpret_cast<Uint16*>(screen->pixels); const Uint16 pitch = screen->pitch; const SDL_PixelFormat * const pixel_format = screen->format; int z = 0; while (1) { //Draw pixels for (int y=0;y!=height;++y) { for (int x=0;x!=width;++x) { *(pixels + y*pitch/2 + x) = SDL_MapRGB(pixel_format, z+x, z+y, z+x+y); } } //Redraw screen SDL_UpdateRect(screen, 0, 0, width, height); //Wait for user to close window SDL_Event event; SDL_PollEvent(&event); if (event.type == SDL_QUIT) exit(0); ++z; } }