[source lang=cpp]
int main(int argc, char** argv)
{
char FilePath[25];
printf("Enter file name: ");
cin>> FilePath;
//createFromAvi(FilePath);
/*InitAVI(FilePath, pGetFrame, iWidth, iHeight, FirstFrame, TotalFrames);
if(pGetFrame == NULL){
printf("Error: pGetFrame returned NULL\n");
return 0;
}
printf("Width: %i\nHeight: %i\nTotal Frames: %i\n", iWidth, iHeight, TotalFrames);*/
glEnable (GL_TEXTURE_2D); /* enable texture mapping */
//glEnable (GL_DEPTH_TEST);
//glPolygonMode (GL_FRONT_AND_BACK, GL_FILL);
CreateTexture(g_TexID);
if(GetLastError() == GL_INVALID_VALUE || GetLastError() == GL_INVALID_OPERATION) printf("Error: cannot create texture\n");
//int histR[256], histG[256], histB[256];
GetBMPDimensions(FilePath, g_Width, g_Height);
rgb = new byte[g_Width*g_Height*3];
grey = new byte[g_Width*g_Height*3];
if(!LoadBMPFile(FilePath, g_TexID, rgb, g_Width, g_Height)) printf("Error: cannot load image\n");
RGBToGreyScale(rgb, grey, g_Width, g_Height);
//CreateCumulHistogram(grey, histR, histG, histB, g_Width, g_Height, GREY_CLR);
//NormalizeHistogram(grey, histR, histG, histB, g_Width, g_Height);
ChangeTexture(g_TexID, grey, g_Width, g_Height);
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE);
glutInitWindowSize(g_Width, g_Height);
glutInitWindowPosition(512 - g_Width / 2, 384 - g_Height / 2);
glutCreateWindow("FPS: ");
/* THIS IS THE LINE IM TALKING ABOUT */
if(!glIsTexture(g_TexID)) printf("Error: texture ID == NULL\n");
time(&clock1);
glutIdleFunc(displayFunc);
glutDisplayFunc(displayFunc);
glutMainLoop();
//createFromAvi(FilePath);
return 0;
}
bool ChangeTexture(GLuint TexID, byte* rgb, int iWidth, int iHeight)
{
glBindTexture(GL_TEXTURE_2D, TexID); // Bind the ID texture specified by the 2nd parameter
// Finally we define the 2d texture
glTexImage2D(GL_TEXTURE_2D, 0, 3, iWidth, iHeight, 0, GL_RGB, GL_UNSIGNED_BYTE, rgb);
// And create 2d mipmaps for the minifying function
gluBuild2DMipmaps(GL_TEXTURE_2D, 3, iWidth, iHeight, GL_RGB, GL_UNSIGNED_BYTE, rgb);
return true;
}
void CreateTexture(GLuint TexID)
{
glGenTextures(1, &TexID); //generate 1 texture
glBindTexture(GL_TEXTURE_2D, TexID); // Bind the ID texture specified by the 2nd parameter
// The next commands sets the texture parameters
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); // If the u,v coordinates overflow the range 0,1 the image is repeated
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); // The magnification function ("linear" produces better results)
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_NEAREST); //The minifying function
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); // We don't combine the color with the original surface color, use only the texture map.
}
[SOLVED] trouble with glGenTexture and changing textures
I had this working once before, but now I cannot seem to get it working and it's driving me nuts. A second set of eyes may see what I can't. Every time I run the program the message "texture ID == NULL" shows, and I get a white texture. I have no idea why it is becoming NULL, as I am creating the texture, then changing the RGB values to it, along with the mipmap. So yea if anyone can figure out why I keep getting a blank white image it would be greatly appreciated.
EDIT: I got it working now, i was missing some enables and initializing a window.
[Edited by - scwizzo on May 28, 2009 11:32:20 PM]
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement