Jump to content

  • Log In with Google      Sign In   
  • Create Account

Medic8712

Member Since 17 Apr 2011
Offline Last Active Apr 21 2011 09:16 AM

Topics I've Started

Weird Access Violation Error

17 April 2011 - 01:51 PM

I've been toying with opengl for a little while now and have made my way down into NeHes 6th and 7th tutorials. I have no problem at all understanding the tutorials (even though I have to gut the windows code from them cause I'm using SDL). I successfully got tutorial 6 working in my own coding method with SDL. I moved onto tutorial 7 and decided to do a recode on my load texture function to include all 3 filter methods shown. I of course wanted to test my new function so I skipped the light portion and went ahead and compiled and ran the code. This is where the error pops up. The program crashes at startup. I run in debug and it gives me an Access violation that it says is no where in my code (kinda hard to explain that one but when i try to be shown where in the code the violation takes place it tells me no source code applicable).
Now heres the weird part. If i compile and run the code using the bmp file from tutorial 6 it runs perfectly. When I switch out the bmp with the one from 7 it crashes on startup and spits out the Access Violation.
I've tried completely closing the IDE and restarting it. I've tried commenting out lines until i found the one that crashes it. I've tried pretty much everything i can think of. Its just wierd cause it works with the one but not the other. Here's my code.

//Loading Texture to GLuint texture[] is declared as  GLUint texture[3];
texture[0] =LoadTexture("Crate.bmp", 1);


//Funtion to load img and convert to texture

int LoadTexture(const char *file, int TexFilter)
{
    SDL_Surface *tex = IMG_Load(file);
    GLuint texture;
	
	switch(TexFilter)
	{
 	case 1:
		if(tex)
		{
			glGenTextures(1, &texture);
			glBindTexture(GL_TEXTURE_2D, texture);

        		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
        		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);

			glTexImage2D(GL_TEXTURE_2D, 0, 3, tex->w, tex->h,  //IF commented out the program will run but will be just a black screen with no crashing
        		0, GL_BGR, GL_UNSIGNED_BYTE, tex->pixels);

        		SDL_FreeSurface(tex);
   				return texture;
		}
	break;
	case 2:
		if(tex)
		{
			glGenTextures(1, &texture);
			glBindTexture(GL_TEXTURE_2D, texture);

			glTexImage2D(GL_TEXTURE_2D, 0, 3, tex->w, tex->h,
			0, GL_BGR, GL_UNSIGNED_BYTE, tex->pixels);

			glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
			glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);

			SDL_FreeSurface(tex);
			return texture;
		}
		break;
	case 3:
		if(tex)
		{
			glGenTextures(1, &texture);
			glBindTexture(GL_TEXTURE_2D, texture);

			gluBuild2DMipmaps(GL_TEXTURE_2D, 3, tex->w, tex->h,
			GL_BGR, GL_UNSIGNED_BYTE, tex->pixels);

			glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
			glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_NEAREST);

			SDL_FreeSurface(tex);
			return texture;
		}
		break;
	default:
		SDL_FreeSurface(tex);
		return NULL;
	}
	SDL_FreeSurface(tex);
	return NULL;
}


And heres my specs (shouldn't matter for something this simple for programming though I would think.
Using
VS Studios 2010 Ultimate
Win 7 Ultimate 32 bit
4 gigs ram
Nvidia 9800 Geforce graphics card
Core 2 duo Intel processor
SDL with OpenGL both updated to latest releases

Come to think of it I think it may be because I didn't free the texture?
Its late here where i'm at and I'm done fooling with it tonight but if that might be it please say so and i'll test it tomorrow after a reboot.

PARTNERS