[C++] Hilfe bei der OpenGL-Initialisierung mit SDL

  • Themenstarter Themenstarter DerMitDemDer
  • Beginndatum Beginndatum
D

DerMitDemDer

Hallo Ihr,
ich bin neu im Forum und hätte gleich mal eine Frage zur Initialisierung von OpenGL mit SDL. Ich habe folgenden Code aus mehren Tutorials zusammengeschrieben und der funktioniert auch so weit:
Code:
bool InitializeWindow(string Caption, unsigned short Width, unsigned short Height, unsigned short Depth)
{
   // SDL initialisieren
   if (!SDL_WasInit(SDL_INIT_VIDEO))
   {
      if (SDL_Init(SDL_INIT_VIDEO) != 0)
      {
            LogError("Could not initialize SDL!");
            return(false);
      }
   }

   // Flags für das Fenster setzen
   unsigned short VideoFlags = SDL_OPENGL | SDL_HWPALETTE;
   const SDL_VideoInfo* VideoInfo = SDL_GetVideoInfo();
   if (VideoInfo = NULL)
   {
      LogError("Could not query video info!");
      return(false);
   }
   else
   {
      // Kann die Surface in den Grafikspeicher?
      if (VideoInfo->hw_available != 0)
         VideoFlags |= SDL_HWSURFACE;
      else
         VideoFlags |= SDL_SWSURFACE;

      // Hardware-Blitting unterstützt?
      if (VideoInfo->blit_hw != 0)
         VideoFlags |= SDL_HWACCEL;
   }

   // OpenGL-Attribute setzen
   SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 8);
   SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 8);
   SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 8);
   SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 16);
   SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);

   // Fenstertitel setzen und Fenster erstellen
   SDL_WM_SetCaption(Caption.c_str(), NULL);
   if (SDL_SetVideoMode(Width, Height, Depth, SDL_OPENGL) == NULL)
   {
      LogError("Could not create window!");
      return(false);
   }

   // OpenGL initialisieren
   glClearColor(0.0, 0.0, 0.0, 1.0);
   glClearDepth(0.0);
   glEnable(GL_DEPTH_TEST);
   glDepthFunc(GL_LEQUAL);
   glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);

   // Erfolgreich
   return(true);
}
Nun aber zu meinen Fragen (die ich mir auch leider durch googlen nicht beantworten konnte, mir fehlen die Suchbegriffe :confused:):
1. Was heißt SDL_HWPALETTE (bzw. was bedeutet der exklusive Zugriff auf die Hardwarepalette)?
2. Mit SDL_GL_SetAttribute(SDL_GL_[Farbe]_SIZE, [Größe]) setzte ich für OpenGL die Größe des Farbbuffer (wenn ich das richtig verstanden habe). Muss ich diese Werte bei der Erstellung des Fensters mit SDL (SDL_SetVideoMode([Breite], [Höhe], [Farbtiefe], [Parameter])) im Bezug auf die Farbtiefe beachten bzw. wann gilt welcher Wert?
3. Habt ihre noch irgendwelche Tipps & Ratschläge was noch bei der Initialisierung des Fensters beachtet werden sollte?

Ich hoffe, dass ihr mir helfen könnt,
MfG, DerMitDemDer.
 
Zurück