i can load the texture because i am using the same method that i used before with glut.
Here is my 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;
}






