Original Post
Hello, i am using OpenGL in a win32 project and am trying to get a textured quad to render. But when i enable GL_TEXTURE_2D the quad simply does not render, when it is disabled it just renders an untextured blank square. I have confirmed that my image is indeed loaded correctly. I assume I have made a stupid mistake in my opengl initialization.
Code:
Main OpenGL window init:
Texture OpenGL prepping (after loading):
Attempt at rendering:
What am i doing wrong? This is driving me nuts, because when i was using SDL as a base with opengl almost the exact same code worked like a charm.
Code:
Main OpenGL window init:
void Engine::CreateViewport() { glMatrixMode(GL_PROJECTION); glLoadIdentity(); //glViewport(0,0,screenwidth,screenheight); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(0.0f,(float)screenwidth,(float)screenheight,0.0f,-99999999.0f,99999999.0f); //gluPerspective(45.0f,(GLfloat)screenwidth/(GLfloat)screenheight,1.0f,1000.0f); //glMatrixMode(GL_PROJECTION); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); ShowCursor(true); RECT r; GetWindowRect(hwnd,&r); ClipCursor(&r); rendering = false; } void Engine::InitGL() { // Called after CreateViewport() glLoadIdentity(); glEnable(GL_TEXTURE_2D); glShadeModel(GL_SMOOTH); glClearColor(0.2f,0.2f,0.2f,0.0f); glClearDepth(0.0f); glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); glDisable(GL_DEPTH_TEST); glDepthFunc(GL_ALWAYS); glHint(GL_PERSPECTIVE_CORRECTION_HINT,GL_NICEST); glDisable(GL_LIGHTING); //glEnable(GL_LIGHT0); //GLfloat pos[] = { 2.0f,4.0f,-3.0f,1.0f }; //glLightfv(GL_LIGHT0,GL_POSITION,pos); glEnable(GL_LINE_SMOOTH); glEnable(GL_POLYGON_SMOOTH); glEnable(GL_BLEND); glHint(GL_LINE_SMOOTH_HINT,GL_NICEST); glHint(GL_POLYGON_SMOOTH_HINT,GL_NICEST); }Texture OpenGL prepping (after loading):
unsigned int Texture::GLPrepare() { if(!loaded) return 0; if(gltexid >= 0) glDeleteTextures(1,&gltexid); glGenTextures(1,&gltexid); glBindTexture(GL_TEXTURE_2D,gltexid); glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_CLAMP); glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_CLAMP); 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,bpp/8,width,height,0,bpp == 24 ? GL_RGB:GL_RGBA,GL_UNSIGNED_BYTE,imagedata); if(gluBuild2DMipmaps(GL_TEXTURE_2D,bpp/8,width,height,bpp == 24 ? GL_RGB:GL_RGBA,GL_UNSIGNED_BYTE,imagedata)) { glDeleteTextures(1,&gltexid); return 0; } return gltexid; }Attempt at rendering:
virtual void Draw() { glPushMatrix(); glEnable(GL_TEXTURE_2D); glBindTexture(GL_TEXTURE_2D,texid); glTranslatef(160.0f,80.0f,0.0f); glBegin(GL_QUADS); glTexCoord2f(0,0); glVertex2f(0,0); glTexCoord2f(0,1); glVertex2f(0,60); glTexCoord2f(1,1); glVertex2f(60,60); glTexCoord2f(1,0); glVertex2f(60,0); glEnd(); glPopMatrix(); }What am i doing wrong? This is driving me nuts, because when i was using SDL as a base with opengl almost the exact same code worked like a charm.