Jump to content
  • Advertisement
Sign in to follow this  
Himura-San

OpenGL Problems with TGA textures...

This topic is 4546 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hi, I´m using the CTargaImage class given in the Beginning OpenGL book to handle my tga texture, but my programs seems to work fine just with the textures of tutorials of the net. The textures are loaded correcly but right after I finish my app I get a error. Why´s that? How can I know if a particular texture downloaded from net has an alpha channel or what´s his store data type? I´m going crazy with that, maybe I´m just making a stupid mistake. Here is a snippet of the code:

    glEnable( GL_TEXTURE_2D );
    
    texture = new CTargaImage;
    
    if (! texture->Load("rock.tga") ) return false;
    
    glGenTextures( 1 , &texture_id );
    
    // bind the texture object
    glBindTexture(GL_TEXTURE_2D, texture_id );
    
    // minimum required to set the min and mag texture filters
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
    
    // now that the texture object is bound, specify a texture for it
    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB , texture->GetWidth(),
                 texture->GetHeight(), 0, GL_RGB, GL_UNSIGNED_BYTE,           
                 texture->GetImage());


Share this post


Link to post
Share on other sites
Advertisement
You've called glTexImage2D () with GL_RGB without knowing exactly what your texture type is. Either you modify your texture loading routine to return the texture type or use a fixed texture internal format. But most of the time the texture will be stored in type GL_RGBA, so repair your texture loading routine is probably better.

What was the error you have got ?.

You may try IrfanView for a free image viewer. For files format you can take a look at Wotsit.

Share this post


Link to post
Share on other sites
Quote:
Original post by Skeleton_V@T
You've called glTexImage2D () with GL_RGB without knowing exactly what your texture type is ...

I think you're right, but anytime I used incompatible image formats in TexImage the program crashed outright.

Himura-San, check whether your TGA class has a returnImageFormat() or something method, and choose OGL's texture internalfmt accordingly. But as I wrote above, I have a little doubt that that's the problem for rock.tga, what is exactly the error you are talking about?

Share this post


Link to post
Share on other sites
First of all, thanks for your attention.
Skeleton, thank you for the IrfanView tip, It´s marvelous. :D

Well , I´ve changed my glTexImage2D(...) to this and i still get the same error:

// now that the texture object is bound, specify a texture for it
glTexImage2D(GL_TEXTURE_2D, 0, texture->GetBPP() / 8 ,
texture->GetWidth(), texture->GetHeight(), 0,
texture->GetBPP() == 32 ? GL_RGBA : GL_RGB,
GL_UNSIGNED_BYTE,
texture->GetImage() );




My app is working perfectly , the texture loads and all other stuff goes well.The problem is right after I close it. I get that WindowsXP error about illegal operation just like when you handle pointers the first time.

I´ve rock.tga and wall.tga. Although they have the very same properties when I use rock.tga I don´t get the error but with wall.tga I do.

Thanks in Advance.

Share this post


Link to post
Share on other sites
If you're getting page faults, then your stack is either becoming corrupt, or you're accessing invalid pointers, so check for those. Strewing a load of _ASSERTE( _CrtCheckMemory() ) calls around wouldn't go a miss either (include crtdbg.h - and make sure you're running in debug mode). I presume you've tried the debugger to trace the source of the error?

Share this post


Link to post
Share on other sites
Hey guys, it was just a pro with the clean up :D
I created a new projetc in GLUT to test and it worked nice.

I´m using wxWidgets as GUI and I still dont get what´s wrong in my destructor class, but I will find out now that I know the problem is in the deleting process.
Probably an invalid pointer...

Thank You Python for the tips. I´m still a noob on debugging but I will sure follow your advise.

Thank you guys.

[Edited by - Himura-San on January 11, 2006 6:20:11 AM]

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

Participate in the game development conversation and more when you create an account on GameDev.net!

Sign me up!