SDL_SetVideoMode

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).

Signatur

#include <SDL.h>
 
SDL_Surface *SDL_SetVideoMode (int breite, int höhe, int bpp, Uint32 flags)

Parameter

breite

Breite des Fensters bzw. horizontale Auflösung im Vollbildmodus; gängige Werte: 800, 1024, 1280

höhe

Höhe des Fensters bzw. vertikale Auflösung im Vollbildmodus; gängige Werte: 600, 768, 1024

bpp

bits per pixel, die Anzahl der zur Verfügung stehenden Farben; gängige Werte: 16, 24, 32

flags

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

FIXME Genauere Erklärung der Parameter

Die Parameter können kombiniert werden, indem man sie mit einem binären Oder (|) verknüpft.

Rückgabewert

  • Erfolg: Ein Pointer auf das Haupt-Surface
  • Fehler: NULL

Beispiel

#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;
 
}

Siehe auch