SDL und OpenGL "Process terminated with status 3"



  • Hallo,
    Z.z. versuche ich mich mit OpenGL einzuarbeiten, zur Erzeugung der Fenster und das Abfragen von Handles würde ich gerne SDL benutzen.
    Ich habe eine Klasse, namens MySDL, die sich um die Initialisierung von SDL und OpenGL kümmert. Die Initialisierung von SDL funktioniert einwandfrei, bei der von OpenGL bricht mein Programm ab, genauer gesagt bei 'glEnable'(Zeile 40), und gibt mir "Process terminated with status 3" zurück. Das ganze geschieht zur Laufzeit, das Compilieren verläuft fehlerfrei!
    Nun habe ich folgenden Code(gekürzt).

    //sdlclass.h
    class MySDL
    {
        private:
            int width;
            int heigth;
            int bits;
            Uint32 flags;
        public:
            MySDL();
            int InitSDL();
            int InitGL();
    };
    MySDL::MySDL()
    {
       width = 640;
       heigth= 480;
       bits  = 16;
       flags = SDL_OPENGL;
    }
    int MySDL::InitSDL()
    {
         if(SDL_Init( SDL_INIT_VIDEO ) < 0)
        {
            std::cerr << "Unable to init SDL:" << SDL_GetError();
            return false;
        }
        atexit(SDL_Quit);
        SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER,1);
        SDL_Surface* window = SDL_SetVideoMode(width,heigth,bits,flags);
        if(!window)
        {
            std::cerr << "Unable to set "<< width << 'x' << heigth <<" video:" << SDL_GetError() << '\n';
            return false;
        }
        return true;
    }
    int MySDL::InitGL()
    {
        glEnable( GL_TEXTURE_2D );
        glClearColor( 0.0f, 0.0f, 0.0f, 0.0f );
        glViewport(0,0,width,heigth);
        glClear( GL_COLOR_BUFFER_BIT );
        glMatrixMode( GL_PROJECTION );
        glLoadIdentity();
        glOrtho(0.0f, width, heigth, 0.0f, -1.0f, 1.0f);
        glMatrixMode( GL_MODELVIEW );
        glLoadIdentity();
        return true;
    }
    //main.cpp
    #include <SDL.h>
    #include <SDL_opengl.h>
    #include "sdlclass.h"
    
    int main ( int argc, char** argv )
    {
        MySDL Init;
        Init.InitSDL();
        Init.InitGL();
        // program main loop [...]
        return 0;
    }
    

    Ich nutze die IDE Code::Blocks, den MinGW Compiler, Windows XP und folgendes Libs habe ich eingebunden:

    mingw32
    SDLmain
    SDL.dll
    user32
    gdi32
    winmm
    dxguid
    glu32
    GLUT32
    OpenGL32
    GLlib
    glaux

    Ich hoffe mir kann jemand helfen, danke im voraus.
    MfG.



  • SDL_Init und SDL_SetVideoMode koennt' was helfen.



  • Eigentlich habe ich sowas schon. Ich habe es bloß weggekürzt. Habe jetzt den Code oben mal der Vollständigkeit editiert.



  • Tritt der Fehler auch bei den OpenGL-Beispielen der SDL auf?



  • Dieses SDL_OpenGL Beispiel sagt mir, dass ich kein OpenGl habe, dass ist dann wohl des Rätsellösung. Wahrscheinlich liegt es daran, dass meine Grafiktreiber völlig veraltet sind...


Anmelden zum Antworten