5 Replies - 1454 Views - Last Post: 30 January 2013 - 09:59 AM Rate Topic: -----

#1 PastaPojken  Icon User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 16
  • Joined: 27-October 12

C++/SDL/OpenGL crash on windows

Posted 29 January 2013 - 12:27 PM

Hello,

I'm trying to port my program to windows (I program mainly on mac/linux) and I just can't make it work.
I'm using SDL for event management and OpenGL for drawing.
The code compiles without any problems but when I launch the program on windows a window with a white background appears and crashes after 2 seconds.
I've noticed that if I remove the "SDL_OPENGL" argument when initialising the window the program won't crash and SDL will work fine (take keyboard input, play music etc.).

I am using Orwell's DevCpp and I am linking to opengl32.lib, sdl.lib, sdlmain.lib, sdl_ttf.lib, sdl_mixer.lib, sdl_image.lib.


Here's my code:

Main.cpp

#include "Rooms.h"

int main(int argc,char** argv){
    SDL_Init(SDL_INIT_EVERYTHING);
    SDL_Surface* screen=SDL_SetVideoMode(1024, 740, 32, SDL_SWSURFACE|SDL_OPENGL);

    Uint32 start;
    SDL_Event event;
    init();
    
    //SDL_WM_GrabInput( SDL_GRAB_ON );
    SDL_ShowCursor(SDL_DISABLE);
    
    menu();
    
    //While the user hasn't quit
    while( quit == false )
    {
        start=SDL_GetTicks();

        //If there is no music playing
        if( Mix_PlayingMusic() == 0 )
        {
            //Play the music
            if( Mix_PlayMusic( music, 0 ) == -1 )
            {
                return 1;
            }
            
            Mix_VolumeMusic(music_v);
        }
        
        //While there's events to handle
        while( SDL_PollEvent( &event ) && quit==false ){
            
            if (event.type == SDL_MOUSEMOTION){
                    SDL_GetMouseState(&m_x, &m_y);
                
                if (m_flashl==true){
                    if (m_y>=595){
                        m_y=590; SDL_WarpMouse(m_x, m_y);}
                    
                    draw();
                    loop++;}
            }

            
            //If the user hasn't entered their name yet
            if( nameEntered == false ){
                
                
                //"HANDLE INPUT!!!"
               if( event.type == SDL_KEYDOWN ){
                    
                    string temp = str;
                    
                    //If the key is a space
                    if( event.key.keysym.unicode == (Uint16)' ' )
                    {
                        //Append the character
                        str += (char)event.key.keysym.unicode;
                    }
                    //If the key is a number
                    else if( ( event.key.keysym.unicode >= (Uint16)'0' ) && ( event.key.keysym.unicode <= (Uint16)'9' ) )
                    {
                        //Append the character
                        str += (char)event.key.keysym.unicode;
                    }
                    //If the key is a uppercase letter
                    else if( ( event.key.keysym.unicode >= (Uint16)'A' ) && ( event.key.keysym.unicode <= (Uint16)'Z' ) )
                    {
                        //Append the character
                        str += (char)event.key.keysym.unicode;
                    }
                    //If the key is a lowercase letter
                    else if( ( event.key.keysym.unicode >= (Uint16)'a' ) && ( event.key.keysym.unicode <= (Uint16)'z' ) )
                    {
                        //Append the character
                        str += (char)event.key.keysym.unicode;
                    }
                                    
                     if ( (( event.key.keysym.sym == SDLK_BACKSPACE ) && ( str.length() != 0 )) ){
                     str.erase( str.length() - 1 );
                     }
                    
                    strcpy (pars, str.c_str());
                    
                    if( str != temp ){
                        draw();
                    }
                }

                
                if (event.key.keysym.sym==SDLK_F1){
                    music_v-=2;
                    music_v2=music_v;
                    Mix_VolumeMusic(music_v);
                }
                
                if (event.key.keysym.sym==SDLK_F2){
                    music_v+=2;
                    music_v2=music_v;
                    Mix_VolumeMusic(music_v);
                }
                
                if ( event.type == SDL_KEYDOWN  && event.key.keysym.sym==SDLK_F3){
                    music_vm++;
                    
                    if (music_vm%2==0)
                        music_v=music_v2;
                    
                    if (music_vm%2==1){
                        music_v2=music_v;
                        music_v=0;}
                    
                    Mix_VolumeMusic(music_v);
                }
                
                if ( event.type == SDL_KEYDOWN  && event.key.keysym.sym==SDLK_TAB){
                    
                    if (m_flashl_%2==0){
                        m_flashl=false;
                        m_flashl_--;}
                    
                    else{
                        m_flashl=true;
                        m_flashl_++;}
                    
                    draw();
                    loop++;
                    
                }
                
                
                //If the enter key was pressed
                if( ( event.type == SDL_KEYDOWN ) && ( event.key.keysym.sym == SDLK_RETURN ) ){
                    
                    //loop=0;
                    str2 = str;
                   // str.erase( remove(str.begin(), str.end() ' '), str.end() );
                    
                    if (str.length()!=0){
                        str=str2;
                        for(int i = 0; pars[ i ]; i++){
                            pars[i] = tolower(pars[ i ]);
                        }
                        
                        
                        char *ptr  = strtok(pars," ");
                        int pars_loop=1;
                        if (multiple_doors==false){
                            word_1=0;
                            article=0;
                            adjective=0;
                            takeobj=0;
                            we_door=0;
                            dir_adj=0;
                        }
                        int and_count=0;
                        
                        
                        /* WORD_1
                         0=no value
                         1=movement (combines with n,s,e,w, "separated" by type: 11=go 12=run (13=sneak?)
                         11=go
                         12=run
                         
                         
                         2=action (will be "separated" in 21, 22 23.... 29)
                         21=look look to a direction
                         22=take
                         23=grab
                         24=use
                         25=open
                         26=unlock
                         
                         */
                        
                        /* ARTICLE
                         0=no value
                         1=take/grab the
                         11=open the
                         12=unlock the
                         13=use the
                         
                         
                         
                         2=take/grab a
                         
                         
                         ? 3=take/grab some
                         
                         
                         
                         */
                        
                        /*
                         ADJECTIVE
                         0=no value
                         1=BLUE
                         11=PURPLE
                         12=YELLOW
                         13=GREEN
                         14=LIGHT BLUE
                         
                         TAKEOBJ
                         1=take the key 11=take the key to
                         
                         DIRECTION ADJECTIVE dir_adj
                         0=off
                         1=w
                         2=e
                         3=n
                         4=s
                         
                         
                         */
                        
                        while (ptr!=NULL){
                            
                            if ((strcmp(ptr, "and")==0)){
                                if (pars_loop>=2 && and_count==0){
                                    and_count++;
                                    b = a;
                                    pars_loop=0;
                                    abswitch = true;
                                    mess2=true;
                                }
                                
                                if (pars_loop>=2 && and_count==1){
                                    //and_count++;
                                    c = b;
                                    b = a;
                                    pars_loop=0;
                                    abcswitch = true;
                                    mess2=true;
                                    mess3=true;
                                }
                                
                                a = "I'm sorry, I don't understand what you mean...";
                                misswo=true;  //missed word
                            }
                            
                            if ((strcmp(ptr, "to")==0)){
                                if (pars_loop>=1){
                                    if (takeobj==1){
                                        takeobj=11;
                                        pars_loop=0;
                                    }
                                    
                                }
                                a = "I'm sorry, I don't understand what you mean...";
                                misswo=true;
                            }
                            
                            
                            
                            if ((strcmp(ptr, "the")==0)){
                                if (pars_loop>=2){
                                    pars_loop=0;
                                    
                                    if (word_1==22 || word_1==23)
                                        article=1;
                                    if (word_1==24)
                                        article=13;
                                    if (word_1==25)
                                        article=11;
                                    
                                    if (word_1==26)
                                        article=12;
                                    
                                }
                                a = "I'm sorry, I don't understand what you mean...";
                                misswo=true;
                            }
                            
                            if ((strcmp(ptr, "blue")==0)){
                                if (pars_loop>=1){
                                    pars_loop=0;
                                    
                                    if ((word_1==22 || word_1==23) && (article==1 || article==0 ) && light==false)
                                        adjective=1;
                                    
                                    if ((word_1==22 || word_1==23) && (article==1 || article==0 ) && light==true)
                                        adjective=14;
                                }
                                a = "I'm sorry, I don't understand what you mean...";
                                misswo=true;
                            }
                            
                            if ((strcmp(ptr, "purple")==0)){
                                if (pars_loop>=1){
                                    pars_loop=0;
                                    
                                    if ((word_1==22 || word_1==23) && (article==1 || article==0 ))
                                        adjective=11;
                                }
                                a = "I'm sorry, I don't understand what you mean...";
                                misswo=true;
                            }
                            
                            if ((strcmp(ptr, "yellow")==0)){
                                if (pars_loop>=1){
                                    pars_loop=0;
                                    
                                    if ((word_1==22 || word_1==23) && (article==1 || article==0 ))
                                        adjective=12;
                                }
                                a = "I'm sorry, I don't understand what you mean...";
                                misswo=true;
                            }
                            
                            if ((strcmp(ptr, "green")==0)){
                                if (pars_loop>=1){
                                    pars_loop=0;
                                    
                                    if ((word_1==22 || word_1==23) && (article==1 || article==0 ))
                                        adjective=13;
                                }
                                a = "I'm sorry, I don't understand what you mean...";
                                misswo=true;
                            }
                            
                            if ((strcmp(ptr, "light")==0)){
                                if (pars_loop>=1){
                                    pars_loop=0;
                                    light=true;
                                }
                                a = "I'm sorry, I don't understand what you mean...";
                                misswo=true;
                            }
                            
                            
                            if (menu_1==true){
                                
                                if (pars_loop==1) {
                                    if ((strcmp(ptr, "start")==0)){
                                        a= "Then lets start!";
                                        room1=true;
                                        showtext=true;
                                        txterr=false;
                                        parsing=false;
                                        misswo=false;
                                        pars_loop=0;
                                    }
                                    
                                    else if ((strcmp(ptr, "quit")==0)){
                                        Mix_HaltMusic();
                                        a= "Quitting...";
                                        mess2=false; mess3=false;
                                        quit = true;
                                        nameEntered=true;
                                        
                                        draw();
                                        
                                        SDL_Delay (1500);
                                    }
                                    
                                    
                                    else {
                                        a = "I'm sorry, I don't understand what you mean...";
                                        misswo=true;
                                    }
                                    
                                }
                            }
                            
                            if (parsing==true){
                                
                                if ((strcmp(ptr, "go")==0)){
                                    if (pars_loop==1){
                                        a= "Where?!";
                                        word_1=11;
                                        misswo=true;
                                    }
                                    
                                    if (pars_loop==2){
                                        a = "You should learn English grammar... ";
                                        misswo=true;
                                    }
                                }
                                
                                else if ((strcmp(ptr, "run")==0)){
                                    if (pars_loop==1){
                                        a= "Where?!";
                                        word_1=12;
                                        misswo=true;
                                    }
                                    
                                    if (pars_loop==2){
                                        a = "You should learn English grammar... ";
                                        misswo=true;
                                    }
                                }
                                
                                else if (strcmp(ptr, "take")==0){
                                    if (pars_loop==1){
                                        a = "What?!";
                                        word_1=22;
                                        misswo=true;
                                    }
                                    
                                    if (pars_loop==2){
                                        a = "\"I don't mean to sound slutty, but please use me anytime you want!\" - Sincerely, the English Grammar";
                                        misswo=false;
                                    }
                                    
                                }
                                
                                else if (strcmp(ptr, "grab")==0){
                                    if (pars_loop==1){
                                        a = "What?!";
                                        word_1=23;
                                        misswo=true;
                                    }
                                    
                                    if (pars_loop==2){
                                        a = "\"I don't mean to sound slutty, but please use me anytime you want!\" - Sincerely, the English Grammar";
                                        misswo=false;
                                    }
                                    
                                }
                                
                                else if (strcmp(ptr, "look")==0){
                                    if (pars_loop==1){
                                        word_1=21;
                                        lookar=true;
                                        misswo=false;
                                        showtext=true;
                                        txterr=false;
                                    }
                                    
                                    if (pars_loop==2){
                                        a = "\"I don't mean to sound slutty, but please use me anytime you want!\" - Sincerely, the English Grammar";
                                        misswo=false;
                                    }
                                    
                                }
                                
                                else if (strcmp(ptr, "use")==0){
                                    if (pars_loop==1){
                                        word_1=24;
                                        misswo=false;
                                        showtext=true;
                                        txterr=false;
                                    }
                                    
                                    if (pars_loop==2){
                                        a = "\"I don't mean to sound slutty, but please use me anytime you want!\" - Sincerely, the English Grammar";
                                        misswo=false;
                                    }
                                    
                                }
                                
                                else if (strcmp(ptr, "open")==0){
                                    if (pars_loop==1){
                                        word_1=25;
                                        misswo=false;
                                        showtext=true;
                                        txterr=false;
                                    }
                                    
                                    if (pars_loop==2){
                                        a = "\"I don't mean to sound slutty, but please use me anytime you want!\" - Sincerely, the English Grammar";
                                        misswo=false;
                                    }
                                    
                                }
                                
                                else if (strcmp(ptr, "unlock")==0){
                                    if (pars_loop==1){
                                        word_1=26;
                                        misswo=false;
                                        showtext=true;
                                        txterr=false;
                                    }
                                    
                                    if (pars_loop==2){
                                        a = "\"I don't mean to sound slutty, but please use me anytime you want!\" - Sincerely, the English Grammar";
                                        misswo=false;
                                    }
                                }
                                
                                else if ((strcmp(ptr, "north")==0) || strcmp(ptr, "n")==0){
                                    if (pars_loop==1){
                                        if (multiple_doors==false){
                                            a = "I can't find a verb...";
                                            misswo=true;}
                                        
                                        if (multiple_doors==true){
                                            we_door=3;
                                            multiple_doors_q=true;
                                        }
                                    }
                                    
                                    if (pars_loop==2 && (word_1==11 || word_1==12)){
                                        if (n==0){
                                            if (word_1==11)
                                                a = "Going north... ";
                                            if (word_1==12)
                                                a = "Running north... ";
                                            n=1;
                                            misswo=false;
                                            showtext=true;
                                            txterr=false;
                                        }
                                        
                                        if (n==2){
                                            a="I can't go that way...";
                                            misswo=true;
                                        }
                                    }
                                    
                                }
                                
                                else if ((strcmp(ptr, "south")==0) || strcmp(ptr, "s")==0){
                                    if (pars_loop==1){
                                        if (multiple_doors==false){
                                            a = "I can't find a verb...";
                                            misswo=true;}
                                        
                                        if (multiple_doors==true){
                                            we_door=4;
                                            multiple_doors_q=true;
                                        }
                                    }
                                    
                                    if (pars_loop==2 && (word_1==11 || word_1==12)){
                                        if (s==0){
                                            if (word_1==11)
                                                a = "Going south... ";
                                            if (word_1==12)
                                                a = "Running south... ";
                                            s=1;
                                            misswo=false;
                                            showtext=true;
                                            txterr=false;
                                        }
                                        
                                        if (s==2){
                                            a="I can't go that way...";
                                            misswo=true;
                                        }
                                        
                                    }
                                }
                                
                                else if ((strcmp(ptr, "east")==0) || strcmp(ptr, "e")==0){
                                    if (pars_loop==1){
                                        if (multiple_doors==false){
                                            a = "I can't find a verb...";
                                            misswo=true;}
                                        
                                        if (multiple_doors==true && room2a==true){
                                            multiple_doors_q=true;
                                        }
                                        if (word_1==25){
                                            we_door=2;
                                            if (room2a==true && r3_doorun==true && pl_key==true)
                                                r3_doorop=1;
                                        }
                                        
                                        if (word_1==26){
                                            we_door=2;
                                            if (room2a==true && pl_key==true)
                                                r3_doorun=true;
                                        }
                                        
                                        
                                        if ((article==11 || article==12 || article==0) && (word_1==25 || word_1==26) && multiple_doors==false && we_door==0){
                                            dir_adj=2;
                                            multiple_doors_q=true;
                                        }
                                        
                                    }
                                    
                                    if (pars_loop==2 && (word_1==11 || word_1==12)){
                                        if (e==0){
                                            if (word_1==11)
                                                a = "Going east... ";
                                            if (word_1==12)
                                                a = "Running east... ";
                                            
                                            e=1;
                                            misswo=false;
                                            showtext=true;
                                            txterr=false;
                                        }
                                        
                                        if (e==2){
                                            a="I can't go that way...";
                                            misswo=true;
                                        }
                                    }
                                }
                                
                                else if ((strcmp(ptr, "west")==0) || strcmp(ptr, "w")==0){
                                    if (pars_loop==1){
                                        if (multiple_doors==false){
                                            a = "I can't find a verb...";
                                            misswo=true;}
                                        
                                        if (multiple_doors==true && room2a==true){
                                            we_door=1;
                                            multiple_doors_q=true;
                                        }
                                        
                                        
                                    }
                                    
                                    if (pars_loop==2 &&(word_1==11 || word_1==12)){
                                        if (w==0){
                                            if (word_1==11)
                                                a = "Going west... ";
                                            if (word_1==12)
                                                a = "Running west... ";
                                            w=1;
                                            misswo=false;
                                            showtext=true;
                                            txterr=false;
                                        }
                                        
                                        if (w==2){
                                            a="I can't go that way...";
                                            misswo=true;
                                        }
                                    }
                                    
                                }
                                
                                else if (( strcmp(ptr, "key")==0 /*|| strcmp(ptr, "keys")==0*/ )){
                                    if (room1==true || room2a==true || room3==true || room4==true || room6==true){
                                        
                                        if (k_roomin==1 && (article==1 || article==0 )){
                                            a="There is no key to ";
                                            if (word_1==22)
                                                a=a+"take...";
                                            
                                            if (word_1==23)
                                                a=a+"grab...";
                                        }
                                        
                                        if ((word_1==22 || word_1==23 ) && (article==1 || article==0 ) && adjective==0 && k_roomin==0){
                                            if (word_1==22)
                                                a="You take the key";
                                            if (word_1==23)
                                                a="You grab the key";
                                            
                                            if (room1==true)
                                                b_key=true;
                                            
                                            if (room2a==true)
                                                pl_key=true;
                                            
                                            if (room3==true)
                                                y_key=true;
                                            
                                            if (room4==true)
                                                g_key=true;
                                            
                                            if (room6==true)
                                                lb_key=true;
                                            
                                            k_roomin=1;
                                        }
                                        
                                        if ((word_1==22 || word_1==23 ) && (article==1 || article==0 ) && adjective>=1 && adjective<=14 && k_roomin==0){
                                            if (word_1==22)
                                                a="You take the ";
                                            
                                            if (word_1==23)
                                                a="You grab the ";
                                            
                                            if (adjective==1 && room1==true){
                                                k_roomin=1;
                                                a=a+"blue";
                                                b_key=true;
                                            }
                                            if (adjective==11 && room2a==true){
                                                a=a+"purple";
                                                k_roomin=1;
                                                pl_key=true;
                                            }
                                            if (adjective==12 && room3==true){
                                                a=a+"yellow";
                                                y_key=true;
                                                k_roomin=1;
                                            }
                                            if (adjective==13 && room4==true){
                                                a=a+"green";
                                                g_key=true;
                                                k_roomin=1;
                                            }
                                            if (adjective==14 && room6==true){
                                                a=a+"light blue";
                                                k_roomin=1;
                                                lb_key=true;
                                            }
                                            
                                            a=a+" key";
                                            
                                            adjective=0;
                                        }
                                        
                                        if (k_roomin!=1){
                                            a = "I see no ";
                                            
                                            if (adjective==1)
                                                a=a+"blue";
                                            if (adjective==11)
                                                a=a+"purple";
                                            if (adjective==12)
                                                a=a+"yellow";
                                            if (adjective==13)
                                                a=a+"green";
                                            if (adjective==14)
                                                a=a+"light blue";
                                            
                                            a=a+" key";
                                            adjective=0;
                                        }
                                        
                                        
                                        if (word_1==24 && (article==13 || article==0)){ //use
                                            if (room1==true)
                                                takeobj=1;
                                            
                                            if (room2a==true)
                                                takeobj=1;
                                            
                                            
                                            a="To do WHAT?!";
                                        }
                                        
                                    }
                                    
                                }
                                
                                else if ((strcmp(ptr, "door")==0) || (multiple_doors==true && we_door>0 && room2a==true)){
                                    
                                    if ((article==11 || article==12 || article==0) && (word_1==25 || word_1==26)  && dir_adj==2){
                                        
                                        if ((article==11 || article==0) && word_1==25 ){
                                            if (room2a==true && r3_doorun==true)
                                                a="You open the east door..."; r3_doorop=1;
                                        }
                                        
                                        if ((article==12 || article==0) && word_1==26 ){
                                            if (room2a==true)
                                                a="You unlock the east door..."; r3_doorun=true;
                                        }
                                    }
                                    
                                    
                                    if ((word_1==25 && (article==11 || article==0))  || (multiple_doors==true && we_door>0 && room2a==true)){ //open
                                        if (room1==true){
                                            
                                            if (r1_doorun==false)
                                                a="You can't, the door is locked...";
                                            
                                            if (r1_doorun==true){
                                                a="You open the door...";
                                                r1_doorop=1;
                                            }
                                            
                                            if (takeobj==11){
                                                a="You use the key to open the door...";
                                                r1_doorun=true;
                                                r1_doorop=1;
                                            }
                                            
                                        }
                                        
                                        if (room2a==true){
                                            if (multiple_doors_q==false && we_door==0){
                                                a="Which one, west or east?";
                                                multiple_doors=true;
                                                nameEntered=false;
                                            }
                                            
                                            if (we_door==2){
                                                multiple_doors=false;
                                                
                                                if (r3_doorun==false)
                                                    a="You can't, the door is locked...";
                                                
                                                if (r3_doorun==true){
                                                    a="You open the door...";
                                                    r3_doorop=1;
                                                }
                                                
                                                if (takeobj==11){
                                                    a="You use the key to open the door...";
                                                    r3_doorun=true;
                                                    r3_doorop=1;
                                                }
                                            }
                                            
                                        }
                                        
                                    }
                                    
                                    if ((word_1==26 && (article==12 || article==0))  || (multiple_doors==true && we_door>0 && room2a==true && dir_adj==0)){ //unlock
                                        if (room1==true){
                                            
                                            if (b_key==true){
                                                a="You unlock the door...";
                                                r1_doorun=true;
                                                r1_doorop=1;
                                            }
                                            
                                            if (b_key==false)
                                                a="You don't have the key...";
                                            
                                            if (takeobj==11){
                                                a="You use the key to unlock the door...";
                                                r1_doorun=true;
                                            }
                                            
                                        }
                                        
                                        if (room2a==true){
                                            if (multiple_doors_q==false && we_door==0){
                                                a="Which one, west or east?";
                                                multiple_doors=true;
                                                nameEntered=false;
                                            }
                                            if (we_door==2){
                                                multiple_doors=false;
                                                if (pl_key==true){
                                                    a="You unlock the east door...";
                                                    r3_doorun=true;
                                                }
                                                
                                                if (pl_key==false)
                                                    a="This door is locked and you don't have the key...";
                                                
                                                if (takeobj==11){
                                                    a="You use the key to unlock the east door...";
                                                    r3_doorun=true;
                                                    takeobj=0;
                                                }
                                            }
                                            
                                        }
                                        
                                    }
                                    
                                    
                                }
                                
                                else if (strcmp(ptr, "quit")==0){
                                    Mix_HaltMusic();
                                    a= "Quitting...";
                                    quit = true;
                                    nameEntered=true;
                                    mess2=false; mess3=false;
                                    draw();
                                    SDL_Delay (1500);
                                }
                                
                                else {
                                    a = "I'm sorry, I don't understand what you mean...";
                                    misswo=true;
                                    
                                    if (pars_loop==1){
                                        str3=ptr;
                                        a = "I don't know what \"" + str3 + "\" means...";
                                    }
                                    
                                }
                                
                                
                                pars_loop++;
                            }
                            
                            
                            
                            
                            if (misswo==true){
                                nameEntered=false;
                                loop=0;
                                showtext=true;
                                txterr=true;
                            }
                            
                            all_rooms();
                            
                            if (pars_loop==0)
                                pars_loop++;
                            
                            ptr  = strtok(NULL, " ");
                        }
                        
                        mess1=true;
                        
                    }
                    
                    if (str.length()==0){
                        b="You wrote nothing!";
                        
                        if (menu_1==true){
                            a=b;
                            nameEntered=false;
                            mess2=false;
                            mess3=false;
                            loop=0;
                            showtext=true;
                        }
                        
                        else {
                            nameEntered=false;
                            mess2=true;
                            loop=0;
                            showtext=true;
                        }
                    }
                    
                }
                
                if( ( event.type == SDL_KEYDOWN ) && ( event.key.keysym.sym == SDLK_ESCAPE ) ){
                    Mix_HaltMusic();
                    a= "Quitting...";
                    mess2=false; mess3=false;
                    quit = true;
                    nameEntered=true;
                    
                    draw();
                    
                    SDL_Delay (1500);
                }
                
                if( event.type == SDL_QUIT ){
                    Mix_HaltMusic();
                    
                    //Quit the program
                    quit = true;
                    nameEntered=true;
                }

                if (loop==0){
                    draw();
                    loop++;
                }
            }
        }
        
        if(1000/60>(SDL_GetTicks()-start))
            SDL_Delay(1000/60-(SDL_GetTicks()-start));
        
        if( event.type == SDL_QUIT ){
            Mix_HaltMusic();
            quit = true; }
        
    }
    
    
    SDL_Quit();
    return 0;
}




Rooms.h


#include "init.h"

//ROOMS!!! && BOOLS!!!!

bool room1=false;
bool room2=false;
bool room2a=false;
bool room2b=false;
bool room3=false;
bool room4=false;
bool room5=false;
bool room6=false;

bool menu_1=true;
bool nameEntered = false;
bool parsing=false;
bool txterr=false;
bool misswo=false;
bool lookar=false;
int word_1=0;
int article=0;
int adjective=0;
int takeobj=0;
int dir_adj=0;

bool multiple_doors=false;
bool multiple_doors_q=false;
bool noparsloop=false;

int n=2;
int s=2;
int w=2;
int e=2;


void menu(){
    //Set the message
    a = "Type:";
    b = "\"Start\" to start the game;  Press Escape or write \"Quit\" to quit the game;";
    c = "Use F1/F2 to lower/raise the volume, F3 to mute/unmute!";

    mess1=true;
    mess2=true;
    mess3=true;
    menu_1=true;
    parsing=false;
}

void room_1(){    
    mess2 =false; mess3 = false;
    
    menu_1=false;
    room_look= "Room 1";
    background =  loadTexture("Room1.png");
    n=2;//2 = can't go
    s=2;
    e=2;
    w=0;// 0 = can go
    k_roomin=0;
    if (b_key==true)
        k_roomin=1;
}

void room_2(){
    room_look= "Room 2";
    background =  loadTexture("Scalpel.png");
        n=0;
    s=2;
    e=0;
    w=0;
    k_roomin=0;
}

void room_2a(){
    room_look= "Room 2a";
    background =  loadTexture("Room1.png");
    n=2;
    s=0;
    e=0;
    w=0;
    k_roomin=0;
    if (pl_key==true)
        k_roomin=1;
}

void room_2b(){
    room_look= "Room 2b";
    background =  loadTexture("Room1.png");
    n=0;
    s=0;
    e=0;
    w=2;
    k_roomin=0;
    if (lb_key==true)
        k_roomin=1;
}

void room_3(){
    room_look= "Room 3";
    background =  loadTexture("Scalpel.png");
    n=2;
    s=2;
    e=2;
    w=0;
    k_roomin=0;
}

void room_5(){
    room_look= "Room 5";
    background =  loadTexture("Scalpel.png");
    n=2;
    s=2;
    e=0;
    w=2;
    k_roomin=0;
    if (g_key==true)
        k_roomin=1;
}

void room_4(){
    room_look= "Room 4";
    background =  loadTexture("Room1.png");
    n=2;
    s=0;
    e=2;
    w=2;
    k_roomin=0;
    if (y_key==true)
        k_roomin=1;
}

void room_6(){
    room_look= "Room 6";
    background =  loadTexture("Room1.png");
    n=2;
    s=2;
    e=0;
    w=2;
    k_roomin=0;
}

void room_end(){
    room_look= "THE END!";
    background =  loadTexture("Room1.png");
    n=2;
    s=2;
    e=2;
    w=0;
    k_roomin=0;
}


void all_rooms(){
    if (str.length()!=0 && txterr==false){

        if (room1==true && (w==0 || w==2)){
            room1=true;
            room_1();
        }

        if (room1==true && w==1){
            if (r1_doorun==true && r1_doorop==1 ){
                room1=false;
                room2=true;
                room_2();
            }

            if (r1_doorop==0){
                room_1();
                a="The door is closed...";
            }


            if (r1_doorun==false){
                room_1();
                a="The door is locked, you need a key...";
            }

        }

        if (room2==true && w==1){
            room2=false;
            room2b=true;
            room_2b();
        }
        if (room2==true && e==1){
            room2=false;
            room1=true;
            room_1();
        }

        if (room2==true && n==1){
            room2=false;
            room2a=true;
            room_2a();
        }

        if (room2a==true && s==1){
            room2a=false;
            room2=true;
            room_2();
        }
        
        if (room2a==true && e==1){
            if (r3_doorun==true && r3_doorop==1){
                room2a=false;
                room3=true;
                room_3();
            }

            if (r3_doorop==0){
                room_2a();
                a="The door is closed...";
            }

            if (r3_doorun==false){
                room_2a();
                a="The door is locked, you need a key...";
            }


        }
        
        if (room2a==true && w==1){
            room2a=false;
            room5=true;
            room_5();
        }

        if (room2b==true && e==1){
            room2b=false;
            room2=true;
            room_2();
        }

        if (room3==true && w==1){
            room3=false;
            room2a=true;
            room_2a();
        }
        
        if (room5==true && e==1){
            room5=false;
            room2a=true;
            room_2a();
        }

        if (lookar==true){
            a=room_look;
            lookar=false;
        }


        parsing=true;
        nameEntered = false;
        loop=0;
        showtext=true;
    }

}


//END OF ROOMS




Init.h


#ifdef __linux__
#include "SDL/SDL.h"
#include "SDL/SDL_image.h"
#include "SDL/SDL_ttf.h"
#include "SDL/SDL_opengl.h"
#include "SDL/SDL_mixer.h"


#else
#include "SDL.h"
#include "SDL_opengl.h"
#include "SDL_image.h"
#include "SDL_ttf.h"
#include "SDL_mixer.h"
#endif

#include <stdio.h>
#include <string>
#include <cstring>
#include <fstream>
#include <iostream>
#include <time.h>
#include <cmath>



using namespace std;

int background;
int console;
GLuint glmessage;
GLuint glmessage2;
GLuint glmessage3;
SDL_Surface *message=NULL;
SDL_Surface *message2=NULL;
SDL_Surface *message3=NULL;
SDL_Surface *text=NULL;
int gltext;
int screen;
int overlay;
int shadow;
int m_flash;

char pars[100];


int loop=0;
bool showtext=true;
bool abswitch = false;
bool abcswitch = false;
bool holdd=false;

bool b_key=false;
bool pl_key=false;
bool y_key=false;
bool lb_key=false;
bool g_key=false;

bool mess1=false;
bool mess2=false;
bool mess3=false;

bool r1_doorun=false;
bool r3_doorun=false;
bool r4_doorun=false;
bool r6_doorun=false;

int r1_doorop=0;
int r3_doorop=0;
int r4_doorop=0;
int r6_doorop=0;


bool light=false;
bool m_flashl=false;
int m_flashl_=1; //flashlight

int we_door=0; //west or east door chose 0=inactive 1=west 2=east 3=north 4=south
int k_roomin=0; // 0=no key of the room you are in 1=you have the key of the room you're in

bool keys[323]={false};

int music_v=32;
int music_v2;

int music_vm=0;

int m_x=0, m_y=0;

//Quit flag
bool quit = false;

//The music that will be played
Mix_Music *music;

//The storage strings for console instrucitions
string str;
string str2;
string str3;


string a;
string b;
string c;

string room_look;


//The event structure
SDL_Event event;

//The font
TTF_Font *font;
TTF_Font *fontv2;


//The color of the font
SDL_Color textColor = { 255, 0, 0};



void RenderText(const TTF_Font *Font, const GLubyte& R, const GLubyte& G, const GLubyte& B,
                const double& X, const double& Y, const double& Z,  const std::string& Text)
{
	/*Create some variables.*/
	SDL_Color Color = {R, G, B};
	SDL_Surface *Message = TTF_RenderText_Blended(const_cast<TTF_Font*>(Font), Text.c_str(), Color);
	unsigned Texture = 0;
    
	/*Generate an OpenGL 2D texture from the SDL_Surface*.*/
	glGenTextures(1, &Texture);
	glBindTexture(GL_TEXTURE_2D, Texture);
    
	glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
	glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
    
	glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, Message->w, Message->h, 0, GL_BGRA,
	             GL_UNSIGNED_BYTE, Message->pixels);
    
	/*Draw this texture on a quad with the given xyz coordinates.*/
	glBegin(GL_QUADS);
    glTexCoord2d(0, 0); glVertex3d(X, Y, Z);
    glTexCoord2d(1, 0); glVertex3d(X+Message->w, Y, Z);
    glTexCoord2d(1, 1); glVertex3d(X+Message->w, Y+Message->h, Z);
    glTexCoord2d(0, 1); glVertex3d(X, Y+Message->h, Z);
	glEnd();
    
	/*Clean up.*/
	glDeleteTextures(1, &Texture);
	SDL_FreeSurface(Message);
}


void FillRect(int x, int y, int w, int h, int c1, int c2, int c3) {
    int f_rect=0;
    glBindTexture(GL_TEXTURE_2D, f_rect);
    glColor3f ((double)c1/255, (double)c2/255, (double)c3/255);
    glBegin(GL_QUADS);
    glTexCoord2f(0,0); glVertex2f(x, y-h);
    glTexCoord2f(1,0); glVertex2f(x+w,y-h);
    glTexCoord2f(1,1); glVertex2f(x+w, y);
    glTexCoord2f(0,1); glVertex2f(x, y);
    glEnd();
    SDL_GL_SwapBuffers();
}


int loadTexture(std::string fileName){
    SDL_Surface *image=IMG_Load(fileName.c_str());
    SDL_DisplayFormatAlpha(image);
    unsigned object(0);
    glGenTextures(1,&object);
    glBindTexture(GL_TEXTURE_2D,object);
    glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST);
    glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST);
    glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_CLAMP_TO_EDGE);
    glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_CLAMP_TO_EDGE);
    glTexImage2D(GL_TEXTURE_2D,0, GL_RGBA,image->w,image ->h,0, GL_BGRA_EXT,GL_UNSIGNED_BYTE,image->pixels);
    SDL_FreeSurface(image);
    return object;
}

void init(){
    
    glEnable(GL_LIGHTING);
    glEnable(GL_LIGHT0);
    
    srand(time(NULL));
    
    /* Initialization */
    SDL_InitSubSystem(SDL_INIT_AUDIO);
    
    SDL_EnableKeyRepeat(250, 100);
    
    //Initialize SDL_mixer
    Mix_OpenAudio( 44100, MIX_DEFAULT_FORMAT, 2, 4096 );
    
    TTF_Init();
    
    music = Mix_LoadMUS( "LT.ogg" );
    //Open the font
    font = TTF_OpenFont( "menlo.ttc", 12 );
    fontv2 = TTF_OpenFont( "menlo.ttc", 20 );
    
    
    SDL_EnableUNICODE( SDL_ENABLE );
        
    glClearColor(0.0,0.0,0.0,0.0);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(0.0,1024,740,1.0, 0.0,1.0);
    glEnable(GL_BLEND);
    glEnable(GL_TEXTURE_2D);
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
    background=loadTexture("Scalpel.png");
    console=loadTexture("console.png");
    shadow=loadTexture("BBB.png");

}


void draw(){
    glClear(GL_COLOR_BUFFER_BIT);
    glBindTexture(GL_TEXTURE_2D,background);
    //glColor4f ((double)255/255, (double)255/255, (double)255/255, (double)100/255);
    glColor3f(1.0f, 1.0f, 1.0f);
    glBegin(GL_QUADS);
    glTexCoord2f(0,0); glVertex2f(0,0);
    glTexCoord2f(1,0); glVertex2f(1024,0);
    glTexCoord2f(1,1); glVertex2f(1024,600);
    glTexCoord2f(0,1); glVertex2f(0,600);
    glEnd();
    
    glBindTexture(GL_TEXTURE_2D, overlay);
    glColor4f ((double)0/255, (double)0/255, (double)0/255, 0.80f);
    glBegin(GL_QUADS);
    glTexCoord2f(0,0); glVertex2f(0,0);
    glTexCoord2f(1,0); glVertex2f(1024,0);
    glTexCoord2f(1,1); glVertex2f(1024,740);
    glTexCoord2f(0,1); glVertex2f(0,740);
    glEnd();
    

    
        if (m_flashl==true){
     glBindTexture(GL_TEXTURE_2D, shadow);
     //glColor4f ((double)255/255, (double)255/255, (double)255/255, 0.25f);
     //glColor3f(1.0f, 1.0f, 1.0f);
        glColor4f(1, 1, 1, 0.1f);
     glBegin(GL_QUADS);
     glTexCoord2f(0,0); glVertex2f(m_x-150, m_y-150);
     glTexCoord2f(1,0); glVertex2f(m_x+150, m_y-150);
     glTexCoord2f(1,1); glVertex2f(m_x+150, m_y+150);
     glTexCoord2f(0,1); glVertex2f(m_x-150, m_y+150);
     glEnd();}
    
    glBindTexture(GL_TEXTURE_2D, console);
    glColor3f(1.0f, 1.0f, 1.0f);
    glBegin(GL_QUADS);
    glTexCoord2f(0,0); glVertex2f(0,595);
    glTexCoord2f(1,0); glVertex2f(1024,595);
    glTexCoord2f(1,1); glVertex2f(1024,595+156);
    glTexCoord2f(0,1); glVertex2f(0,595+156);
    glEnd();
    
    if (mess1==true)
        RenderText(font, 255, 0, 0, 35, 630+12, NULL, a.c_str());
    if (mess2==true)
        RenderText(font, 255, 0, 0, 35, 646+12, NULL, b.c_str());
    if (mess3==true)
        RenderText(font, 255, 0, 0, 35, 662+12, NULL, c.c_str());
    
    if (str.length()!=0){
        RenderText(font, 255, 0, 0, 35, 694+12, NULL, str.c_str());
        
    }
    
    glFlush();
    SDL_GL_SwapBuffers();
}




I apologize if you might find the code hard to read, I have some problems with commenting but I am trying to get better at it :)

Thanks for any help :)

Is This A Good Question/Topic? 0
  • +

Replies To: C++/SDL/OpenGL crash on windows

#2 PastaPojken  Icon User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 16
  • Joined: 27-October 12

Re: C++/SDL/OpenGL crash on windows

Posted 29 January 2013 - 12:37 PM

I noticed that I accidentally left some code that isn't supposed to be there in the "Init.h" file,
here is the correct version:

#ifdef __linux__
#include "SDL/SDL.h"
#include "SDL/SDL_image.h"
#include "SDL/SDL_ttf.h"
#include "SDL/SDL_opengl.h"
#include "SDL/SDL_mixer.h"


#else
#include "SDL.h"
#include "SDL_opengl.h"
#include "SDL_image.h"
#include "SDL_ttf.h"
#include "SDL_mixer.h"
#endif

#include <stdio.h>
#include <string>
#include <cstring>
#include <fstream>
#include <iostream>
#include <time.h>
#include <cmath>



using namespace std;

int background;
int console;
GLuint glmessage;
GLuint glmessage2;
GLuint glmessage3;
SDL_Surface *message=NULL;
SDL_Surface *message2=NULL;
SDL_Surface *message3=NULL;
SDL_Surface *text=NULL;
int gltext;
int screen;
int overlay;
int shadow;
int m_flash;

char pars[100];


int loop=0;
bool showtext=true;
bool abswitch = false;
bool abcswitch = false;
bool holdd=false;

bool b_key=false;
bool pl_key=false;
bool y_key=false;
bool lb_key=false;
bool g_key=false;

bool mess1=false;
bool mess2=false;
bool mess3=false;

bool r1_doorun=false;
bool r3_doorun=false;
bool r4_doorun=false;
bool r6_doorun=false;

int r1_doorop=0;
int r3_doorop=0;
int r4_doorop=0;
int r6_doorop=0;


bool light=false;
bool m_flashl=false;
int m_flashl_=1; //flashlight

int we_door=0; //west or east door chose 0=inactive 1=west 2=east 3=north 4=south
int k_roomin=0; // 0=no key of the room you are in 1=you have the key of the room you're in

bool keys[323]={false};

int music_v=32;
int music_v2;

int music_vm=0;

int m_x=0, m_y=0;

//Quit flag
bool quit = false;

//The music that will be played
Mix_Music *music;

//The storage strings for console instrucitions
string str;
string str2;
string str3;


string a;
string b;
string c;

string room_look;


//The event structure
SDL_Event event;

//The font
TTF_Font *font;
TTF_Font *fontv2;


//The color of the font
SDL_Color textColor = { 255, 0, 0};



void RenderText(const TTF_Font *Font, const GLubyte& R, const GLubyte& G, const GLubyte& B,
                const double& X, const double& Y, const double& Z,  const std::string& Text)
{
	/*Create some variables.*/
	SDL_Color Color = {R, G, B};
	SDL_Surface *Message = TTF_RenderText_Blended(const_cast<TTF_Font*>(Font), Text.c_str(), Color);
	unsigned Texture = 0;
    
	/*Generate an OpenGL 2D texture from the SDL_Surface*.*/
	glGenTextures(1, &Texture);
	glBindTexture(GL_TEXTURE_2D, Texture);
    
	glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
	glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
    
	glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, Message->w, Message->h, 0, GL_BGRA,
	             GL_UNSIGNED_BYTE, Message->pixels);
    
	/*Draw this texture on a quad with the given xyz coordinates.*/
	glBegin(GL_QUADS);
    glTexCoord2d(0, 0); glVertex3d(X, Y, Z);
    glTexCoord2d(1, 0); glVertex3d(X+Message->w, Y, Z);
    glTexCoord2d(1, 1); glVertex3d(X+Message->w, Y+Message->h, Z);
    glTexCoord2d(0, 1); glVertex3d(X, Y+Message->h, Z);
	glEnd();
    
	/*Clean up.*/
	glDeleteTextures(1, &Texture);
	SDL_FreeSurface(Message);
}


void FillRect(int x, int y, int w, int h, int c1, int c2, int c3) {
    int f_rect=0;
    glBindTexture(GL_TEXTURE_2D, f_rect);
    glColor3f ((double)c1/255, (double)c2/255, (double)c3/255);
    glBegin(GL_QUADS);
    glTexCoord2f(0,0); glVertex2f(x, y-h);
    glTexCoord2f(1,0); glVertex2f(x+w,y-h);
    glTexCoord2f(1,1); glVertex2f(x+w, y);
    glTexCoord2f(0,1); glVertex2f(x, y);
    glEnd();
    SDL_GL_SwapBuffers();
}


int loadTexture(std::string fileName){
    SDL_Surface *image=IMG_Load(fileName.c_str());
    SDL_DisplayFormatAlpha(image);
    unsigned object(0);
    glGenTextures(1,&object);
    glBindTexture(GL_TEXTURE_2D,object);
    glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST);
    glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST);
    glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_CLAMP_TO_EDGE);
    glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_CLAMP_TO_EDGE);
    glTexImage2D(GL_TEXTURE_2D,0, GL_RGBA,image->w,image ->h,0, GL_BGRA_EXT,GL_UNSIGNED_BYTE,image->pixels);
    SDL_FreeSurface(image);
    return object;
}

void init(){
    
    srand(time(NULL));
    
    /* Initialization */
    SDL_InitSubSystem(SDL_INIT_AUDIO);
    
    SDL_EnableKeyRepeat(250, 100);
    
    //Initialize SDL_mixer
    Mix_OpenAudio( 44100, MIX_DEFAULT_FORMAT, 2, 4096 );
    
    TTF_Init();
    
    music = Mix_LoadMUS( "LT.ogg" );
    //Open the font
    font = TTF_OpenFont( "menlo.ttc", 12 );
    fontv2 = TTF_OpenFont( "menlo.ttc", 20 );
    
    
    SDL_EnableUNICODE( SDL_ENABLE );
        
    glClearColor(0.0,0.0,0.0,0.0);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(0.0,1024,740,1.0, 0.0,1.0);
    glEnable(GL_BLEND);
    glEnable(GL_TEXTURE_2D);
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
    background=loadTexture("Scalpel.png");
    console=loadTexture("console.png");
    shadow=loadTexture("BBB.png");

}


void draw(){
    glClear(GL_COLOR_BUFFER_BIT);
    glBindTexture(GL_TEXTURE_2D,background);
    //glColor4f ((double)255/255, (double)255/255, (double)255/255, (double)100/255);
    glColor3f(1.0f, 1.0f, 1.0f);
    glBegin(GL_QUADS);
    glTexCoord2f(0,0); glVertex2f(0,0);
    glTexCoord2f(1,0); glVertex2f(1024,0);
    glTexCoord2f(1,1); glVertex2f(1024,600);
    glTexCoord2f(0,1); glVertex2f(0,600);
    glEnd();
    
    glBindTexture(GL_TEXTURE_2D, overlay);
    glColor4f ((double)0/255, (double)0/255, (double)0/255, 0.80f);
    glBegin(GL_QUADS);
    glTexCoord2f(0,0); glVertex2f(0,0);
    glTexCoord2f(1,0); glVertex2f(1024,0);
    glTexCoord2f(1,1); glVertex2f(1024,740);
    glTexCoord2f(0,1); glVertex2f(0,740);
    glEnd();
    

    
        if (m_flashl==true){
     glBindTexture(GL_TEXTURE_2D, shadow);
     //glColor4f ((double)255/255, (double)255/255, (double)255/255, 0.25f);
     //glColor3f(1.0f, 1.0f, 1.0f);
        glColor4f(1, 1, 1, 0.1f);
     glBegin(GL_QUADS);
     glTexCoord2f(0,0); glVertex2f(m_x-150, m_y-150);
     glTexCoord2f(1,0); glVertex2f(m_x+150, m_y-150);
     glTexCoord2f(1,1); glVertex2f(m_x+150, m_y+150);
     glTexCoord2f(0,1); glVertex2f(m_x-150, m_y+150);
     glEnd();}
    
    glBindTexture(GL_TEXTURE_2D, console);
    glColor3f(1.0f, 1.0f, 1.0f);
    glBegin(GL_QUADS);
    glTexCoord2f(0,0); glVertex2f(0,595);
    glTexCoord2f(1,0); glVertex2f(1024,595);
    glTexCoord2f(1,1); glVertex2f(1024,595+156);
    glTexCoord2f(0,1); glVertex2f(0,595+156);
    glEnd();
    
    if (mess1==true)
        RenderText(font, 255, 0, 0, 35, 630+12, NULL, a.c_str());
    if (mess2==true)
        RenderText(font, 255, 0, 0, 35, 646+12, NULL, b.c_str());
    if (mess3==true)
        RenderText(font, 255, 0, 0, 35, 662+12, NULL, c.c_str());
    
    if (str.length()!=0){
        RenderText(font, 255, 0, 0, 35, 694+12, NULL, str.c_str());
        
    }
    
    glFlush();
    SDL_GL_SwapBuffers();
}


This post has been edited by jimblumberg: 29 January 2013 - 01:04 PM
Reason for edit:: Removed qoute

Was This Post Helpful? 0
  • +
  • -

#3 anonymous26  Icon User is offline

  • D.I.C Lover

Reputation: 1
  • View blog
  • Posts: 3,638
  • Joined: 26-November 10

Re: C++/SDL/OpenGL crash on windows

Posted 29 January 2013 - 02:57 PM

Firstly, you are coding a C++ program like it's C. Secondly, you have no code to handle when resources are not allocated successfully.

Next, you need to run a debug session to pinpoint the precise location of the crash - not just dump all your code here expecting us to fix your work.
Was This Post Helpful? 0
  • +
  • -

#4 PastaPojken  Icon User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 16
  • Joined: 27-October 12

Re: C++/SDL/OpenGL crash on windows

Posted 30 January 2013 - 07:37 AM

View PostButchDean, on 29 January 2013 - 02:57 PM, said:

Firstly, you are coding a C++ program like it's C. Secondly, you have no code to handle when resources are not allocated successfully.

Next, you need to run a debug session to pinpoint the precise location of the crash - not just dump all your code here expecting us to fix your work.


Well, I have no code that handles the resources if they are not allocated succefully because I've never had any problems with that (and it's not what is causing the crash...) so I never felt that I actually needed one. The game was originally written using only SDL but then I decided to use OpenGL for drawing. Since then I've not been able to make it work on windows.

Today I discovered that somehow the debugger in dev-cpp isn't working properly. Anyway I tried debugging with VC++, the effect is the same (white window) except that it doesn't crash. The debugger itself isn't outputting any errors.

I'm sorry for just "dumping" the code but I really don't understand what I am doing wrong.
Was This Post Helpful? 0
  • +
  • -

#5 anonymous26  Icon User is offline

  • D.I.C Lover

Reputation: 1
  • View blog
  • Posts: 3,638
  • Joined: 26-November 10

Re: C++/SDL/OpenGL crash on windows

Posted 30 January 2013 - 08:08 AM

You can't take something from one platform, move it to another and insist there is nothing wrong with parts of you code because it used to work on the old platform. Clearly your code is broken for the new platform and YOU need to find out why, without making assumptions.

For the record, I am quite certain that you renderer is failing to initialize because your initialization routine is broken. If you can't be bothered to add additional exception handling code then it is going to stay broken. Simple as that.
Was This Post Helpful? 0
  • +
  • -

#6 PastaPojken  Icon User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 16
  • Joined: 27-October 12

Re: C++/SDL/OpenGL crash on windows

Posted 30 January 2013 - 09:59 AM

I found the error, it's in the "loadtexture" function, it appears to be caused by GL_UNSIGNED_BYTE. Thanks for the help
Was This Post Helpful? 0
  • +
  • -

Page 1 of 1