コード例 #1
0
ファイル: cefmouse.cpp プロジェクト: Croydon/code
void InexorCefMouseManager::Render()
{
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();

    float fx = (2.0f * ((float) x / (float) max_x)) - 1.0f;
    float fy = 1.0f -(2.0f * ((float) y / (float) max_y));
    float ratio = (float) max_x / (float) max_y;
    float gx = size;
    float gy = size * ratio;

    glBlendFunc(GL_ONE, blendFunction);
    glEnable(GL_BLEND);
    glEnable(GL_TEXTURE_2D);

    settexture(texture.c_str(), 3);

    glColor4f(1.0f, 1.0f, 1.0f, 0.5f);

    glBegin(GL_QUADS);
    glTexCoord2f(0.0f, 0.0f);
    glVertex3f(fx, fy, 1.0f);
    glTexCoord2f(1.0f, 0.0f);
    glVertex3f(fx + gx, fy, 1.0f);
    glTexCoord2f(1.0f, 1.0f);
    glVertex3f(fx + gx, fy - gy, 1.0f);
    glTexCoord2f(0.0f, 1.0f);
    glVertex3f(fx, fy - gy, 1.0f);
    glEnd();

    glDisable(GL_TEXTURE_2D);
    glDisable(GL_BLEND);
}
コード例 #2
0
ファイル: rpg.cpp プロジェクト: pmcoder/sauerbraten
    void gameplayhud(int w, int h)
    {
        glPushMatrix();
        glScalef(0.5f, 0.5f, 1);
        draw_textf("using: %s", 636*2, h*2-256+149, selected ? selected->name : "(none)");       // temp     
        glPopMatrix();

        settexture("packages/hud/hud_rpg.png", 3);
        
        glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
        quad(0, h-128, 768, 128);        
        settexture("packages/hud/hbar.png", 3);
        glColor4f(1, 0, 0, 0.5f);
        quad(130, h-128+57, 193*playerobj->s_hp/playerobj->eff_maxhp(), 17);        
        glColor4f(0, 0, 1, 0.5f);
        quad(130, h-128+87, 193*playerobj->s_mana/playerobj->eff_maxmana(), 17);        
    }
コード例 #3
0
ファイル: fps.cpp プロジェクト: AaronThibault/BananaBread
// XXX EMSCRIPTEN: Add a temporary customizable logo in the upper right.
void drawlogo()
{
    static int total = 0;
    extern int curtime;
    const int end = 3500;
    if (total > end + 2000) return;
    total += curtime;
    settexture("packages/hud/ff.png");
    extern SDL_Surface *screen;
    float sz = screen->w/17, x = screen->w - sz*1.1, y = sz*0.1, tsz = 1, tx = 0, ty = 1;
    if (total > end)
    {
        float f = (total - end)/1000.0f;
        x += f*f*f*sz;
    }
    glBegin(GL_TRIANGLE_STRIP);
    glTexCoord2f(tx,     ty);     glVertex2f(x,    y);
    glTexCoord2f(tx+tsz, ty);     glVertex2f(x+sz, y);
    glTexCoord2f(tx,     ty+tsz); glVertex2f(x,    y+sz);
    glTexCoord2f(tx+tsz, ty+tsz); glVertex2f(x+sz, y+sz);
    glEnd();
}
コード例 #4
0
ファイル: theme.cpp プロジェクト: graphox/graphox
		void loading_theme::render(float bar, const char *text, GLuint tex, bool background)
		{
			#if 0
			if(background || graphox::get<int>("sdl_backingstore_bug") > 0)
				restorebackground();
			#endif

			int w = screen->w, h = screen->h;
			
			getbackgroundres(w, h);
			gettextres(w, h);

			glMatrixMode(GL_PROJECTION);
			glPushMatrix();
			glLoadIdentity();
			glOrtho(0, w, h, 0, -1, 1);
			glMatrixMode(GL_MODELVIEW);
			glPushMatrix();
			glLoadIdentity();

			glEnable(GL_TEXTURE_2D);
			defaultshader->set();
			glColor3f(1, 1, 1);

			float fh = 0.075f*min(w, h), fw = fh*10,
				  fx = renderedframe ? w - fw - fh/4 : 0.5f*(w - fw),
				  fy = renderedframe ? fh/4 : h - fh*1.5f,
				  fu1 = 0/512.0f, fu2 = 511/512.0f,
				  fv1 = 0/64.0f, fv2 = 52/64.0f;

			settexture("data/loading_frame.png", 3);
			
			
			glBegin(GL_TRIANGLE_STRIP);
				glTexCoord2f(fu1, fv1); glVertex2f(fx,    fy);
				glTexCoord2f(fu2, fv1); glVertex2f(fx+fw, fy);
				glTexCoord2f(fu1, fv2); glVertex2f(fx,    fy+fh);
				glTexCoord2f(fu2, fv2); glVertex2f(fx+fw, fy+fh);
			glEnd();

			glEnable(GL_BLEND);
			glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

			float bw = fw*(511 - 2*17)/511.0f, bh = fh*20/52.0f,
				  bx = fx + fw*17/511.0f, by = fy + fh*16/52.0f,
				  bv1 = 0/32.0f, bv2 = 20/32.0f,
				  su1 = 0/32.0f, su2 = 7/32.0f, sw = fw*7/511.0f,
				  eu1 = 23/32.0f, eu2 = 30/32.0f, ew = fw*7/511.0f,
				  mw = bw - sw - ew,
				  ex = bx+sw + max(mw*bar, fw*7/511.0f);
				  
			if(bar > 0)
			{
				settexture("data/loading_bar.png", 3);
				glBegin(GL_QUADS);
				glTexCoord2f(su1, bv1); glVertex2f(bx,    by);
				glTexCoord2f(su2, bv1); glVertex2f(bx+sw, by);
				glTexCoord2f(su2, bv2); glVertex2f(bx+sw, by+bh);
				glTexCoord2f(su1, bv2); glVertex2f(bx,    by+bh);

				glTexCoord2f(su2, bv1); glVertex2f(bx+sw, by);
				glTexCoord2f(eu1, bv1); glVertex2f(ex,    by);
				glTexCoord2f(eu1, bv2); glVertex2f(ex,    by+bh);
				glTexCoord2f(su2, bv2); glVertex2f(bx+sw, by+bh);

				glTexCoord2f(eu1, bv1); glVertex2f(ex,    by);
				glTexCoord2f(eu2, bv1); glVertex2f(ex+ew, by);
				glTexCoord2f(eu2, bv2); glVertex2f(ex+ew, by+bh);
				glTexCoord2f(eu1, bv2); glVertex2f(ex,    by+bh);
				glEnd();
			}

			if(text)
			{
				int tw = text_width(text);
				float tsz = bh*0.8f/FONTH;
				if(tw*tsz > mw) tsz = mw/tw;
				glPushMatrix();
				glTranslatef(bx+sw, by + (bh - FONTH*tsz)/2, 0);
				glScalef(tsz, tsz, 1);
				draw_text(text, 0, 0);
				glPopMatrix();
			}

			glDisable(GL_BLEND);

			if(tex)
			{
				glBindTexture(GL_TEXTURE_2D, tex);
				float sz = 0.35f*min(w, h), x = 0.5f*(w-sz), y = 0.5f*min(w, h) - sz/15;
				glBegin(GL_TRIANGLE_STRIP);
				glTexCoord2f(0, 0); glVertex2f(x,    y);
				glTexCoord2f(1, 0); glVertex2f(x+sz, y);
				glTexCoord2f(0, 1); glVertex2f(x,    y+sz);
				glTexCoord2f(1, 1); glVertex2f(x+sz, y+sz);
				glEnd();

				glEnable(GL_BLEND);
				glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
				settexture("data/mapshot_frame.png", 3);
				glBegin(GL_TRIANGLE_STRIP);
				glTexCoord2f(0, 0); glVertex2f(x,    y);
				glTexCoord2f(1, 0); glVertex2f(x+sz, y);
				glTexCoord2f(0, 1); glVertex2f(x,    y+sz);
				glTexCoord2f(1, 1); glVertex2f(x+sz, y+sz);
				glEnd();
				glDisable(GL_BLEND);
			}

			glDisable(GL_TEXTURE_2D);

			glMatrixMode(GL_PROJECTION);
			glPopMatrix();
			glMatrixMode(GL_MODELVIEW);
			glPopMatrix();
			swapbuffers();	
		}
コード例 #5
0
void renderprogress(float bar, const char *text, GLuint tex, bool background)   // also used during loading
{
    if(!inbetweenframes || envmapping) return;

    clientkeepalive();      // make sure our connection doesn't time out while loading maps etc.

    #ifdef __APPLE__
    interceptkey(SDLK_UNKNOWN); // keep the event queue awake to avoid 'beachball' cursor
    #endif

    extern int sdl_backingstore_bug;
    if(background || sdl_backingstore_bug > 0) restorebackground();

    int w = screen->w, h = screen->h;
    getbackgroundres(w, h);
    gettextres(w, h);

    glMatrixMode(GL_PROJECTION);
    glPushMatrix();
    glLoadIdentity();
    glOrtho(0, w, h, 0, -1, 1);
    glMatrixMode(GL_MODELVIEW);
    glPushMatrix();
    glLoadIdentity();

    glEnable(GL_TEXTURE_2D);
    glEnable(GL_BLEND);
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

    defaultshader->set();
    glColor3f(1, 1, 1);

    float fh = 0.070f*min(w, h), fw = fh*10,
          fx = renderedframe ? w - fw - fh/4 : 0.5f*(w - fw),
          fy = renderedframe ? fh/4 : h - fh*1.5f;

    settexture("data/loadingscreen/load_frame.png", 3);

    glBegin(GL_QUADS);
        glTexCoord2f(0,0); glVertex2f(fx,    fy);
        glTexCoord2f(1,0); glVertex2f(fx+fw, fy);
        glTexCoord2f(1,1); glVertex2f(fx+fw, fy+fh);
        glTexCoord2f(0,1); glVertex2f(fx,    fy+fh);
    glEnd();

    float bh = fh*20/52.0f, bx = fx + fw*17/511.0f;
    float by = fy + fh*16/52.0f, sw = fw*7/511.0f;
    float mw = fw, prog = bar;
    float ex = fx + max(mw*bar, fw*7/511.0f);


    if(bar > 0)
    {
        settexture("data/loadingscreen/load_bar.png", 3);
        glBegin(GL_QUADS);
            glTexCoord2f(0,    0); glVertex2f(fx,    fy);
            glTexCoord2f(prog, 0); glVertex2f(ex,    fy);
            glTexCoord2f(prog, 1); glVertex2f(ex, fy+fh);
            glTexCoord2f(0,    1); glVertex2f(fx, fy+fh);
        glEnd();
    }

    if(text)
    {
        int tw = text_width(text);
        float tsz = bh*0.8f/FONTH;
        if(tw*tsz > mw) tsz = mw/tw;
        glPushMatrix();
        glTranslatef(bx+sw, by + (bh - FONTH*tsz)/2, 0);
        glScalef(tsz, tsz, 1);
        draw_text(text, 0, 0);
        glPopMatrix();
    }

    glDisable(GL_BLEND);

    if(tex)
    {
        float sz = 0.35f*min(w, h),
            x = 0.5f*(w-sz),
            y = 0.5f*min(w, h) - sz/15;

        glBindTexture(GL_TEXTURE_2D, tex);
        glBegin(GL_TRIANGLE_STRIP);
            glTexCoord2f(0, 0); glVertex2f(x,    y);
            glTexCoord2f(1, 0); glVertex2f(x+sz, y);
            glTexCoord2f(0, 1); glVertex2f(x,    y+sz);
            glTexCoord2f(1, 1); glVertex2f(x+sz, y+sz);
        glEnd();

        glEnable(GL_BLEND);
        glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

        settexture("data/loadingscreen/mapshot_frame.png", 3);
        glBegin(GL_TRIANGLE_STRIP);
            glTexCoord2f(0, 0); glVertex2f(x,    y);
            glTexCoord2f(1, 0); glVertex2f(x+sz, y);
            glTexCoord2f(0, 1); glVertex2f(x,    y+sz);
            glTexCoord2f(1, 1); glVertex2f(x+sz, y+sz);
        glEnd();

        glDisable(GL_BLEND);
    }

    glDisable(GL_TEXTURE_2D);

    glMatrixMode(GL_PROJECTION);
    glPopMatrix();
    glMatrixMode(GL_MODELVIEW);
    glPopMatrix();
    swapbuffers();
}
コード例 #6
0
void ClientSystem::drawHUD(int w, int h)
{
    if (g3d_windowhit(true, false)) return; // Showing sauer GUI - do not show HUD

    float wFactor = float(h)/max(w,h);
    float hFactor = float(w)/max(w,h);

    // Rects

    glPushMatrix();
    glScalef(w, h, 1);

    for (unsigned int i = 0; i < queuedHUDRects.size(); i++)
    {
        queuedHUDRect& q = queuedHUDRects[i];
        if (q.x2 < 0)
        {
            float x1 = q.x1, y1 = q.y1;
            q.x1 = x1 - wFactor*fabs(q.x2)/2;
            q.y1 = y1 - hFactor*fabs(q.y2)/2;
            q.x2 = x1 + wFactor*fabs(q.x2)/2;
            q.y2 = y1 + hFactor*fabs(q.y2)/2;
        }

        vec rgb(q.color>>16, (q.color>>8)&0xFF, q.color&0xFF);
        rgb.mul(1.0/256.0);
        glColor3f(rgb[0], rgb[1], rgb[2]);

        glDisable(GL_TEXTURE_2D);
        notextureshader->set();
        glBegin(GL_QUADS);
        glVertex2f(q.x1, q.y1);
        glVertex2f(q.x2, q.y1);
        glVertex2f(q.x2, q.y2);
        glVertex2f(q.x1, q.y2);
        glEnd();
        glEnable(GL_TEXTURE_2D);
        defaultshader->set();	
    }

    glPopMatrix();

    // Images

    glPushMatrix();
    glScalef(w, h, 1);

    for (unsigned int i = 0; i < queuedHUDImages.size(); i++)
    {
        queuedHUDImage& q = queuedHUDImages[i];
        glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
        float x1 = q.centerX - (wFactor*q.width/2);
        float y1 = q.centerY - (hFactor*q.height/2);
        float x2 = q.centerX + (wFactor*q.width/2);
        float y2 = q.centerY + (hFactor*q.height/2);
        glColor3f(1, 1, 1);
        settexture(q.tex.c_str(), 3);
        glBegin(GL_QUADS);
            glTexCoord2f(0.0f, 0.0f); glVertex2f(x1, y1);
            glTexCoord2f(1.0f, 0.0f); glVertex2f(x2, y1);
            glTexCoord2f(1.0f, 1.0f); glVertex2f(x2, y2);
            glTexCoord2f(0.0f, 1.0f); glVertex2f(x1, y2);
        glEnd();
    }

    glPopMatrix();

    // Texts

    for (unsigned int i = 0; i < queuedHUDTexts.size(); i++)
    {
        queuedHUDText& q = queuedHUDTexts[i];

        glPushMatrix();
        glScalef(q.scale, q.scale, 1);

        int b = q.color & 255;
        q.color = q.color >> 8;
        int g = q.color & 255;
        int r = q.color >> 8;

        draw_text(q.text.c_str(), w*q.x/q.scale - text_width(q.text.c_str())/2, h*q.y/q.scale - FONTH/2, r, g, b);

        glPopMatrix();
    }
}