Jao Assy

Members
  • Content count

    4
  • Joined

  • Last visited

Community Reputation

100 Neutral

About Jao Assy

  • Rank
    Newbie
  1. OpenGL Texture fail OPENGL/SDL

    I´m sorry about the cross posting thing, but i did not know where should i post my doubt, talking about it , its working, was that DemonRad mentioned before, loading the texture after the initialization of SDL and the window, thank you for your kindness
  2. I don´t know why the texture is not appearing at the screen, i ve tryid with GLUT and it works verywell, but i switch to SDL because i think it is a best event handler. i can load the texture because i am using the same method that i used before with glut. Here is my code:[CODE] #include "stdafx.h" using namespace std; //Screen attributes const int SCREEN_WIDTH = 640; const int SCREEN_HEIGHT = 480; const int SCREEN_BPP = 32; //The frame rate const int FRAMES_PER_SECOND = 60; //The attributes of the square const int SQUARE_WIDTH = 20; const int SQUARE_HEIGHT = 20; //pos double left_pos = 0.0; double up_pos = 0.0; //mov double movimento = 1.0; //Event handler SDL_Event event; unsigned int tex[100]; unsigned int loadTexture(const char* filename,int x,int y) { SDL_Surface* img = SDL_LoadBMP(filename); unsigned int id; glGenTextures(2,&id); glBindTexture(GL_TEXTURE_2D,id); glTexImage2D(GL_TEXTURE_2D,0,GL_RGB,x,y,0,GL_BGR_EXT,GL_UNSIGNED_BYTE,img->pixels); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); SDL_FreeSurface(img); return id; } bool init_GL() { //Set clear color glClearColor( 0, 0, 0, 0 ); //Set projection glMatrixMode( GL_MODELVIEW ); glLoadIdentity(); glOrtho( 0, SCREEN_WIDTH, SCREEN_HEIGHT, 0, -1, 1 ); //Initialize modelview matrix glMatrixMode( GL_PROJECTION); glLoadIdentity(); glEnable(GL_TEXTURE_2D); //If there was any errors if( glGetError() != GL_NO_ERROR ) { return false; } //If everything initialized return true; } bool Init() { //Initialize SDL if( SDL_Init( SDL_INIT_EVERYTHING ) < 0 ) { return false; } //Create Window if( SDL_SetVideoMode( SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_BPP, SDL_SWSURFACE | SDL_OPENGL ) == NULL ) { return false; } //Initialize OpenGL if( init_GL() == false ) { return false; } //Set caption SDL_WM_SetCaption( "OpenGL Test", NULL ); SDL_GL_SetAttribute( SDL_GL_DOUBLEBUFFER, 1 ); return true; } void clean_up() { //Quit SDL SDL_Quit(); } void squareShow() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity(); glEnable(GL_TEXTURE_2D); glBindTexture(GL_TEXTURE_2D,tex[0]); glBegin(GL_QUADS); glTexCoord2f(0.0,1.0); glVertex2f(100+left_pos,200+up_pos);glTexCoord2f(1.0,1.0); glVertex2f(200+left_pos,200+up_pos);glTexCoord2f(1.0,0.0); glVertex2f(200+left_pos,100+up_pos);glTexCoord2f(0.0,0.0); glVertex2f(100+left_pos,100+up_pos); glEnd(); } int main( int argc, char* args[] ) { tex[0] = loadTexture("minecraft_s1.bmp",256,256); //initialize SDL SDL_Init(SDL_INIT_EVERYTHING); bool quit = false; if( Init() == false ) { return 1; } bool left = false; bool right = false; bool up = false; bool down = false; while( quit == false ) { if(up == true || down == true || left == true || right == true) { cout <<"X: "<<left_pos<<" Y: "<<up_pos<<endl; } //EVENTS while ( SDL_PollEvent(&event) ) { if ( event.type == SDL_KEYDOWN && event.key.keysym.sym == SDLK_ESCAPE) { quit = true; } // left right move if ( event.type == SDL_KEYDOWN && event.key.keysym.sym == SDLK_d ) { right = true; } if ( event.type == SDL_KEYUP && event.key.keysym.sym == SDLK_d ) { right = false; } if ( event.type == SDL_KEYDOWN && event.key.keysym.sym == SDLK_a ) { left = true; } if ( event.type == SDL_KEYUP && event.key.keysym.sym == SDLK_a ) { left = false; } // up down move if ( event.type == SDL_KEYDOWN && event.key.keysym.sym == SDLK_w ) { up = true; } if ( event.type == SDL_KEYUP && event.key.keysym.sym == SDLK_w ) { up = false; } if ( event.type == SDL_KEYDOWN && event.key.keysym.sym == SDLK_s ) { down = true; } if ( event.type == SDL_KEYUP && event.key.keysym.sym == SDLK_s ) { down = false; } if ( event.type == SDL_KEYUP && event.key.keysym.sym == SDLK_r ) { glClearColor(1,0,0,1); } } if(right == true) { left_pos = left_pos + movimento; } if(left == true) { left_pos = left_pos - movimento; } if(up == true) { up_pos = up_pos - movimento; } if(down == true) { up_pos = up_pos + movimento; } if( event.type == SDL_QUIT ) { quit = true; } //Clear the screen glClear( GL_COLOR_BUFFER_BIT ); squareShow(); glFlush(); //Update screen SDL_GL_SwapBuffers(); } clean_up(); return 0; } [/CODE]