Exemple #1
0
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++;
}
Exemple #2
0
	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();
}
Exemple #4
0
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;
    }
}
Exemple #5
0
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();
}