void TextureManager::DebugInfoRender(const float &fRatio, const PosQuat &pq) { Texture *pCurrent = 0; //render currently selected texture for debug display if (m_dwSelectedIndex < m_vTextures.size()) { pCurrent = m_vTextures.at(m_dwSelectedIndex); } if (!pCurrent) { return; } glColor4f(1.0f, 1.0f, 1.0f, 1.0f); GLboolean bLightingWasOn = glIsEnabled(GL_LIGHTING); if (bLightingWasOn) { //turn off lighting glDisable(GL_LIGHTING); } GLboolean bTextureWasOn = glIsEnabled(GL_TEXTURE_2D); if (!bTextureWasOn) { //turn textures on if it wasn't already on glEnable(GL_TEXTURE_2D); } glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); glBindTexture(GL_TEXTURE_2D, pCurrent->GetTexture()); glMultMatrixf(pq.quat.ToMatrix().m); float fScale = 0.33f; float fBorder = fScale * 1.05f; float fBorderSize = fBorder - fScale; glBegin(GL_QUADS); glTexCoord2f(0.0f, 0.0f); glVertex3f(-fScale, -fScale, 0.0f); glTexCoord2f(0.0f, 1.0f); glVertex3f(-fScale, fScale, 0.0f); glTexCoord2f(1.0f, 1.0f); glVertex3f(fScale, fScale, 0.0f); glTexCoord2f(1.0f, 0.0f); glVertex3f(fScale, -fScale, 0.0f); glEnd(); glDisable(GL_TEXTURE_2D); glBegin(GL_QUADS); glColor3f(1.0f, 0.0f, 1.0f); glNormal3f(0.0f, 0.0f, 1.0f); glVertex3f(-fBorder, -fBorder, 0.0f); glVertex3f(-fBorder, fBorder, 0.0f); glVertex3f(-fBorder + fBorderSize, fBorder, 0.0f); glVertex3f(-fBorder + fBorderSize, -fBorder, 0.0f); glVertex3f(fBorder, -fBorder, 0.0f); glVertex3f(fBorder, fBorder, 0.0f); glVertex3f(fBorder - fBorderSize, fBorder, 0.0f); glVertex3f(fBorder - fBorderSize, -fBorder, 0.0f); glVertex3f(-fBorder, -fBorder, 0.0f); glVertex3f(-fBorder, -fBorder + fBorderSize, 0.0f); glVertex3f(fBorder, -fBorder + fBorderSize, 0.0f); glVertex3f(fBorder, -fBorder, 0.0f); glVertex3f(-fBorder, fBorder, 0.0f); glVertex3f(-fBorder, fBorder - fBorderSize, 0.0f); glVertex3f(fBorder, fBorder - fBorderSize, 0.0f); glVertex3f(fBorder, fBorder, 0.0f); glEnd(); glColor3f(1.0f, 1.0f, 1.0f); //reset matrices so text is always in the correct spot glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(60.0, fRatio, 0.1, 50.0); //update this so we dont get crappy distortion glMatrixMode(GL_MODELVIEW); glLoadIdentity(); gluLookAt(0.0, 0.0, 1.75, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); size_t size = 50 + strlen(pCurrent->GetName()); char *pDetails = (char *)malloc(sizeof(char) * size); memset(pDetails, 0, size); sprintf_s(pDetails, size, "%dx%d, %u bytes, %s", pCurrent->GetSizeX(), pCurrent->GetSizeY(), pCurrent->GetSizeInBytes(), pCurrent->GetName()); glRasterPos2f(-fRatio, 0.97f); for (const char *c = pDetails; *c != '\0'; c++) { glutBitmapCharacter(GLUT_BITMAP_8_BY_13, *c); } free(pDetails); this->RenderHelpText(fRatio); glEnable(GL_TEXTURE_2D); if (!bTextureWasOn) { //disable textures if it wasn't on initially glDisable(GL_TEXTURE_2D); } if (bLightingWasOn) { //if it was on, turn it back on! glEnable(GL_LIGHTING); } }