void RenderText(GB_GlyphQuad* quads, uint32_t num_quads) { // note this flips y-axis so y is down. Matrixf proj = Matrixf::Ortho(0, s_config->width, s_config->height, 0, -10, 10); glMatrixMode(GL_PROJECTION); glLoadMatrixf(reinterpret_cast<float*>(&proj)); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glEnable(GL_TEXTURE_2D); static int count = 1; // set to 0 to enable dumping for (uint32_t i = 0; i < num_quads; ++i) { if (count == 0) { printf("quad[%d]\n", i); printf(" origin = [%d, %d]\n", quads[i].origin[0], quads[i].origin[1]); printf(" size = [%d, %d]\n", quads[i].size[0], quads[i].size[1]); printf(" uv_origin = [%.3f, %.3f]\n", quads[i].uv_origin[0], quads[i].uv_origin[1]); printf(" uv_size = [%.3f, %.3f]\n", quads[i].uv_size[0], quads[i].uv_size[1]); printf(" gl_tex_obj = %u\n", quads[i].gl_tex_obj); printf(" user_data = %p\n", quads[i].user_data); } DrawTexturedQuad(quads[i].gl_tex_obj, Vector2f(quads[i].origin[0], quads[i].origin[1]), Vector2f(quads[i].size[0], quads[i].size[1]), Vector2f(quads[i].uv_origin[0], quads[i].uv_origin[1]), Vector2f(quads[i].uv_size[0], quads[i].uv_size[1]), *((uint32_t*)quads[i].user_data)); } count++; }
void DrawPatchClean (int lump, int x, int y) { if(!m_Private) return; patch_t *patch = (patch_t *)W_CacheLumpNum (lump, PU_CACHE); glpatch_t &glp = get_glpatch(lump); glBindTexture(GL_TEXTURE_2D, glp.texture); float xscale = 1.0f/320.0f; float yscale = 1.0f/240.0f; DrawTexturedQuad(x*xscale, y*yscale, patch->width()*xscale, patch->height()*yscale, glp.h, glp.w); }
void Flag::Display() { glPushAttrib(GL_ALL_ATTRIB_BITS); glPushMatrix(); glMaterialfv(GL_FRONT, GL_AMBIENT, matAmbient); glMaterialfv(GL_FRONT, GL_DIFFUSE, matDiffuse); glMaterialfv(GL_FRONT, GL_SPECULAR, matSpecular); glMateriali(GL_FRONT, GL_SHININESS, matShininess); glColor3f(0.1, 0.1, 0.1); glTranslatef(300, -100, 300); Cylinder(100, 1); glTranslatef(0, 55, 0); glRotatef(-65, 0, 1, 0); GLFrame frame = {0, 0, 45, 45}; DrawTexturedQuad(frame, texture); glRotatef(180, 0, 1, 0); DrawTexturedQuad(frame, texture); glPopMatrix(); glPopAttrib(); }
void DebugDrawGlyphCache(GB_Context* gb, const Config& config) { // note this flips y-axis so y is down. Matrixf proj = Matrixf::Ortho(0, config.width, config.height, 0, -10, 10); glMatrixMode(GL_PROJECTION); glLoadMatrixf(reinterpret_cast<float*>(&proj)); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glEnable(GL_TEXTURE_2D); const int sheet_gap = 2; const int texture_size = gb->cache->texture_size; GB_Cache* cache = gb->cache; int y = 0; for (uint32_t i = 0; i < cache->num_sheets; i++) { DrawTexturedQuad(cache->sheet[i].gl_tex_obj, Vector2f(0, y), Vector2f(texture_size, texture_size), Vector2f(0, 0), Vector2f(1, 1), MakeColor(255, 255, 255, 255)); y += texture_size + sheet_gap; } }
void DrawMenu() { if(!menuactive) return; // Darken behind menu DimArea(0, 0, 1, 1, 0.5); extern int messageToPrint; if(messageToPrint) { } else { //extern void M_Drawer(); //M_Drawer(); // DRAW MENU int x = currentMenu->x; int y = currentMenu->y; int max = currentMenu->numitems; glColor4f(1,1,1,1); glEnable(GL_TEXTURE_2D); glEnable(GL_ALPHA_TEST); glDisable(GL_BLEND); glAlphaFunc(GL_GREATER, 0); for (int i = 0; i < max; i++) { if (currentMenu->menuitems[i].name[0]) { //screen->DrawPatchClean (W_GetNumForName(currentMenu->menuitems[i].name), x, y); int lump = W_GetNumForName(currentMenu->menuitems[i].name); patch_t *patch = (patch_t *)W_CacheLumpNum (lump, PU_CACHE); glpatch_t &glp = get_glpatch(lump, false); glBindTexture(GL_TEXTURE_2D, glp.texture); DrawTexturedQuad(x/320.0, y/200.0, patch->width()/320.0, patch->height()/200.0, glp.h, glp.w); } y += LINEHEIGHT; } // DRAW SKULL //if (drawSkull) { extern short whichSkull; extern char skullName[2][9]; //screen->DrawPatchClean (W_GetNumForName(skullName[whichSkull]), // x + SKULLXOFF, currentMenu->y - 5 + itemOn*LINEHEIGHT); int lump = W_GetNumForName(skullName[whichSkull]); patch_t *patch = (patch_t *)W_CacheLumpNum (lump, PU_CACHE); glpatch_t &glp = get_glpatch(lump, false); glBindTexture(GL_TEXTURE_2D, glp.texture); double xscale = 1.0/320.0; double yscale = 1.0/240.0; x += SKULLXOFF; y = currentMenu->y - 5 + itemOn*LINEHEIGHT; //DrawTexturedQuad(x*xscale, y*yscale, patch->width()*xscale, patch->height()*yscale, 1, 1); DrawTexturedQuad(x/320.0, y/200.0, patch->width()/320.0, patch->height()/200.0, glp.h, glp.w); } } }
void GUIinfoSelection::PrivateDraw() { glPushAttrib(GL_CURRENT_BIT); glColor4f(0.0, 0.0, 0.0, 0.5); glBindTexture(GL_TEXTURE_2D, 0); Quad(0, 0, w, h); glColor3f(0, 1, 0); map<UnitDef*,GroupUnitsInfo> lstUnits; char buf[500]; int i = 0; set<CUnit*>::iterator ui; if(selectedUnits.selectedGroup!=-1){ for(ui=grouphandler->groups[selectedUnits.selectedGroup]->units.begin();ui!=grouphandler->groups[selectedUnits.selectedGroup]->units.end();++ui){ i++; lstUnits[(*ui)->unitDef].number = lstUnits[(*ui)->unitDef].number+1; lstUnits[(*ui)->unitDef].health = (int)(lstUnits[(*ui)->unitDef].health+(*ui)->health); lstUnits[(*ui)->unitDef].maxHealth = (int)(lstUnits[(*ui)->unitDef].maxHealth+(*ui)->maxHealth); lstUnits[(*ui)->unitDef].id = (*ui)->unitDef->id; if ((*ui)->stockpileWeapon) { lstUnits[(*ui)->unitDef].numStockpiled = lstUnits[(*ui)->unitDef].numStockpiled + (*ui)->stockpileWeapon->numStockpiled; lstUnits[(*ui)->unitDef].numStockpileQued = lstUnits[(*ui)->unitDef].numStockpileQued + (*ui)->stockpileWeapon->numStockpileQued; } } } else { for(ui=selectedUnits.selectedUnits.begin();ui!=selectedUnits.selectedUnits.end();++ui){ i++; lstUnits[(*ui)->unitDef].number = lstUnits[(*ui)->unitDef].number+1; lstUnits[(*ui)->unitDef].health = (int)(lstUnits[(*ui)->unitDef].health+(*ui)->health); lstUnits[(*ui)->unitDef].maxHealth = (int)(lstUnits[(*ui)->unitDef].maxHealth+(*ui)->maxHealth); lstUnits[(*ui)->unitDef].id = (*ui)->unitDef->id; if ((*ui)->stockpileWeapon) { lstUnits[(*ui)->unitDef].numStockpiled = lstUnits[(*ui)->unitDef].numStockpiled + (*ui)->stockpileWeapon->numStockpiled; lstUnits[(*ui)->unitDef].numStockpileQued = lstUnits[(*ui)->unitDef].numStockpileQued + (*ui)->stockpileWeapon->numStockpileQued; } } } i=0; map<UnitDef*,GroupUnitsInfo>::iterator lsti; for(lsti=lstUnits.begin();lsti!=lstUnits.end();lsti++){ i++; float hpp = (float)(lsti->second.health)/(lsti->second.maxHealth); if(hpp>0.5f) glColor3f(1.0f-((hpp-0.5f)*2.0f),1.0f,0.0); else glColor3f(1.0f,hpp*2.0f,0.0); sprintf(buf,"%d x",lsti->second.number); guifont->Print(13,buildPicSize*i,1,buf); glBindTexture(GL_TEXTURE_2D,lsti->first->unitimage); int x=48; int y=buildPicSize*(i-1)+buildPicSize/2; glColor3f(1.0, 1.0, 1.0); DrawTexturedQuad(x, y, buildPicSize, buildPicSize); if (lsti->second.numStockpiled != 0 || lsti->second.numStockpileQued != 0) { glColor3f(1.0f,1.0,0.0); sprintf(buf,"(%d/%d)",lsti->second.numStockpiled,lsti->second.numStockpileQued); guifont->Print(50,buildPicSize*i,1,buf); } } h=(i+(i!=0))* buildPicSize; glPopAttrib(); }