Um Grafiken anzuzeigen muss ein Fenster erzeugt bzw. das Programm in den Vollbildmodus versetzt werden. Dies geschieht mit der Funktion SDL_SetVideoMode. Vor dem Aufruf dieser Funktion muss das SDL-Videosubsystem initialisiert werden (z.B. mit SDL_Init).
#include <SDL.h> SDL_Surface *SDL_SetVideoMode (int breite, int höhe, int bpp, Uint32 flags)
Breite des Fensters bzw. horizontale Auflösung im Vollbildmodus; gängige Werte: 800, 1024, 1280
Höhe des Fensters bzw. vertikale Auflösung im Vollbildmodus; gängige Werte: 600, 768, 1024
bits per pixel, die Anzahl der zur Verfügung stehenden Farben; gängige Werte: 16, 24, 32
Geben an wie das Fenster erstellt werden soll.
Mögliche Parameter für „flags“:
Name | Auswirkung |
---|---|
SDL_SWSURFACE | Surface wird im Hauptspeicher erstellt |
SDL_HWSURFACE | Surface wird im Videospeicher erstellt |
SDL_ASYNCBLIT | asynchrones Blitten wird ermöglicht |
SDL_ANYFORMAT | aktuelle Farbtiefe des Bildschirms wird verwendet |
SDL_HWPALETTE | 256-Farben Palette verwenden |
SDL_DOUBLEBUF | ein zweiter Puffer wird zur Performanceerhöhung verwendet |
SDL_FULLSCREEN | Vollbild-Modus wird gestartet |
SDL_OPENGL | SDL wird in Kombination mit OpenGL verwendet |
SDL_OPENBLIT | SDL und OpenGL werden verwendet, SDL übernimmt das rendern |
SDL_RESIZABLE | Größe des Fensters kann zur Laufzeit verändert werden |
SDL_NOFRAME | im Fenstermodus bekommt das Fenster keine Standard-Dekoration |
Genauere Erklärung der Parameter
Die Parameter können kombiniert werden, indem man sie mit einem binären Oder (|) verknüpft.
#include <iostream> #include <SDL/SDL.h> int main( int argc, char **argv ) { // Pointer auf das Haupt-Surface SDL_Surface *screen; // Videosubsystem initialisieren if( SDL_Init( SDL_INIT_VIDEO ) ) { // Irgendwas ist schiefgegangen. SDL_GetError weiß mehr std::cerr << "Konnte SDL nicht initialisieren: " << SDL_GetError() << std::endl; return 1; } // SDL_Quit registrieren atexit (&SDL_Quit); // anfordern eines 800*600 Fensters mit einer Farbtiefe von 16-Bit und zweitem Puffer screen = SDL_SetVideoMode (800, 600, 16, SDL_DOUBLEBUF); // prüfe auf Fehler if (screen == NULL) { std::cerr << "Konnte Fenster nicht erstellen: " << SDL_GetError() << std::endl; return 1; } // dem Benutzer 5 Sekunden Zeit geben um das Fenster zu betrachten SDL_Delay (5000); return 0; }