Simple Texture Mapping problem
I am trying to map a bmp onto a quad following this tutorial:
http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=06
To my knowledge, I have included and linked everything correctly. All of my files including the bmp are in the correct directories. When I run the app, the quad shows white, but no bmp is showed. The bmp is 64 x 64 pixels. Like I said, it seems like I've followed all of the rules. I have texture mapped once before, but on a different machine that I believe was running .NET 2003. I am running .NET 2002. If it makes any difference, I have an ATI Radeon 9800 pro. Can anyone help me???
A couple things that happen to me:
- Make sure you glEnable(GL_TEXTURE_2D).
- Try setting the minification/magnification and texture wrap texture parameters to something.
Quote:
* Make sure you glEnable(GL_TEXTURE_2D).
* Try setting the minification/magnification and texture wrap texture parameters to something.
This has been done already. Does not appear to be the problem, but thanks anyway.
Have you tried debugging to make sure that you're passing a valid array of data to glTexImage2D()? What is your minification filter set to?
um...
something like this happended to me recently. i don't know what went wrong, but i ended up resaving the bitmap and it loaded without any change in the code. I'm not even sure why, but it solved the problem. maybe there is something wrong with the bitmap itself.
something like this happended to me recently. i don't know what went wrong, but i ended up resaving the bitmap and it loaded without any change in the code. I'm not even sure why, but it solved the problem. maybe there is something wrong with the bitmap itself.
Quote:Original post by MrBeanerThere is a lot of variation possible in the bitmap format, and many of the loaders I've seen don't handle all cases. So a bitmap saved by one program might work whereas the same bitmap saved by another program won't.
I don't know what went wrong, but i ended up resaving the bitmap and it loaded without any change in the code.
This should be easy to detect through debugging, though, since you won't have valid data to pass in.
Quote:Original post by Myopic RhinoQuote:Original post by Myopic RhinoQuote:Original post by MrBeanerThere is a lot of variation possible in the bitmap format, and many of the loaders I've seen don't handle all cases. So a bitmap saved by one program might work whereas the same bitmap saved by another program won't.
I don't know what went wrong, but i ended up resaving the bitmap and it loaded without any change in the code.
This should be easy to detect through debugging, though, since you won't have valid data to pass in.
Have you tried debugging to make sure that you're passing a valid array of data to glTexImage2D()? What is your minification filter set to?
A)This bmp that I'm using is recognized by another texture mapping .cpp file.
B)Everything passed to glTexImage2D()seems to be on par and both of my filters are set to GL_LINEAR.
C)I might be able to narrow this down though... I have 2 files. One has my loadbmp, texture conversion, draw and main entry point functions. The other has all of the info needed to set up an opengl window. I link both of them to a header file that declares the draw function. This might be where the problem is, but I can't figure out what I should do. Any ideas? Thanks for the replies btw.
Can you post your texture generation code? That will give us a better understanding of what could be going wrong.
Quote:Original post by Kalidor
Can you post your texture generation code? That will give us a better understanding of what could be going wrong.
I hope this helps...please let me know if you need anything else. Thanks.
GLuint texture[1]; // Storage For One Texture ( NEW )LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); // Declaration For WndProcAUX_RGBImageRec *LoadBMP(char *Filename) // Loads A Bitmap Image{ FILE *File=NULL; // File Handle if (!Filename) // Make Sure A Filename Was Given { return NULL; // If Not Return NULL } File=fopen(Filename,"r"); // Check To See If The File Exists if (File) // Does The File Exist? { fclose(File); // Close The Handle return auxDIBImageLoad(Filename); // Load The Bitmap And Return A Pointer } return NULL; // If Load Failed Return NULL}int LoadGLTextures() // Load Bitmaps And Convert To Textures{ int Status=FALSE; // Status Indicator AUX_RGBImageRec *TextureImage[1]; // Create Storage Space For The Texture memset(TextureImage, 0 ,sizeof(void *) * 1);// Set The Pointer To NULL // Load The Bitmap, Check For Errors, If Bitmap's Not Found Quit if (TextureImage[0]=LoadBMP("w_pawn.bmp")) { Status=TRUE; // Set The Status To TRUE glGenTextures(1, &texture[0]); // Create The Texture // Typical Texture Generation Using Data From The Bitmap glBindTexture(GL_TEXTURE_2D, texture[0]); // Generate The Texture glTexImage2D(GL_TEXTURE_2D, 0, 3, TextureImage[0]->sizeX, TextureImage[0]->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, TextureImage[0]->data); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);// Linear Filtering glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); // Linear Filtering } if (TextureImage[0]) // If Texture Exists { if (TextureImage[0]->data) // If Texture Image Exists { free(TextureImage[0]->data); // Free The Texture Image Memory } free(TextureImage[0]); // Free The Image Structure } return Status; // Return The Status}
OK, I figured it out and I apologize for being such a retard. I figured out that because I had split my functions into 2 files, I wasn't calling a couple of them and thus the texture never existed in the first place. Thanks for all of your help.
[Edited by - 0311 on February 16, 2005 11:40:46 PM]
[Edited by - 0311 on February 16, 2005 11:40:46 PM]
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement