GLuint base, texture;
AUX_RGBImageRec *TextImg;
Text::LoadTextImg(LPWSTR path)
{
TextImg = auxDIBImageLoad(path);
glGenTextures(1, &texture);
glBindTexture(GL_TEXTURE_2D, texture);
glPixelStorei (GL_UNPACK_ALIGNMENT, 1);
glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexEnvf (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, TextImg->sizeX, TextImg->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, TextImg->data);
free(TextImg->data);
free(TextImg);
glDisable(GL_DEPTH_TEST);
glEnable(GL_TEXTURE_2D);
}
Text::Render()
{
glEnable(GL_TEXTURE_2D);
// Set projection matrix to orthographic
glMatrixMode(GL_PROJECTION);
glPushMatrix();
glLoadIdentity();
glOrtho(0, ScreenWidth, 0, ScreenHeight, -1, 1);
// Move to starting position
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glLoadIdentity();
glTranslated(x,y);
glBindTexture(GL_TEXTURE_2D, texture); // Make sure right texture is selected
glBegin(GL_QUADS);
glTexCoord2f(0.0f, 0.0f); glVertex2i(0,0);
glTexCoord2f(1.0f, 0.0f); glVertex2i(256,0);
glTexCoord2f(1.0f, 1.0f); glVertex2i(256,256);
glTexCoord2f(0.0f, 1.0f); glVertex2i(0,256);
glEnd();
// Go back to original matricies
glPopMatrix();
glMatrixMode(GL_PROJECTION);
glPopMatrix();
glEnable(GL_DEPTH_TEST);
glDisable(GL_TEXTURE_2D);
}
QGLWidget::initializeGL()
{
glClearColor(0.0, 0.0, 0.3, 0.0);
glShadeModel(GL_SMOOTH);
glEnable(GL_DEPTH_TEST);
glClearDepth(1.0f);
}