PDA

View Full Version : Tecture loading doesn't work ?



_Steam
07-06-2012, 04:15 AM
Hello Every one,

Am new to OpenGL and i need help in the following code,


#include<gl\gl.h>
#include<gl\glu.h>
#include<SDL/SDL.h>
#include"stopwatch.cpp"
//#include"textureloader.cpp"
#include"cube.cpp"
#include"gl_3D_Object/objectloader.h"
//#include"gl_3D_Camera/SDL_OpenGL_3DCamera.h"
#include"gl_3D_Camera/3D_Camera.cpp"
#include"gl_3D_Skybox/SDL_openGL_3D_Skybox.h"
#include "SDL/SDL_opengl.h"

unsigned int loadTexture(std::string filename){
SDL_Surface* img=SDL_LoadBMP(filename.c_str());
if(img==NULL)return 0;
unsigned int id;
glGenTextures(1,&id);
glBindTexture(GL_TEXTURE_2D,id);
glTexImage2D(GL_TEXTURE_2D,0,GL_RGB,img->w, img->h,0,GL_RGB,GL_UNSIGNED_SHORT_5_6_5, img->pixels);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTE R,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTE R,GL_LINEAR);
SDL_FreeSurface(img);
return id;
}

the problem is that this code used to once -_-, but now the image never gets loaded... Can anyone plz point out what i have done wrong?

thokra
07-06-2012, 05:37 AM
Debug into it, break at


SDL_Surface* img=SDL_LoadBMP(filename.c_str());

check the filename, which you should pass as a const std::string& not by value, and see if it really contains what you're looking for. If not, check the filename argument at the place you invoke loadTexture() and see if you pass valid filenames in the first place. If all that's fine see the SDL API doc and check under which circumstances SDL_LoadBMP() can fail - I assume it fails if the file doesn't exist, can't be accessed or isn't an image encoded in a valid image format.

_Steam
07-08-2012, 05:49 AM
Thanks Thokra, well the file is of valid format, it used to work once on my other laptop, this is weird but when i copied the project to my new laptop and included the necessary files it didn't work. I was thinking if you could share with me any other way of loading an image in opengl using sdl. thanks in advance for your help