Exemplo n.º 1
0
void GameLogic::renderLeadBoard()
{
    //Render leader board screen
    m_platform.beginRender();

    glClear(GL_COLOR_BUFFER_BIT);

    glEnable(GL_TEXTURE_2D);
    glEnableClientState(GL_VERTEX_ARRAY);
    glEnableClientState(GL_TEXTURE_COORD_ARRAY);

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

    m_background.draw();
    m_leaderBoard.draw();

    glDisableClientState(GL_VERTEX_ARRAY);
    glDisableClientState(GL_TEXTURE_COORD_ARRAY);
    glDisable(GL_TEXTURE_2D);
    glDisable(GL_BLEND);

    bbutil_render_text(m_font, m_message, m_messagePosX, m_messagePosY, 1.0f, 1.0f, 1.0f, 1.0f);

    if (m_leaderBoardReady) {
        m_playButton.draw();

        float posY, sizeX, sizeY;
        char buf[100];

        bbutil_measure_text(m_leaderboardFont, "123", &sizeX, &sizeY);
        posY = m_leaderBoard.PosY() + m_leaderBoard.Height() / 2 - sizeY - LEADERBOARD_LINE_OFFSET_Y;

        for (int i = 0; i < static_cast<int>(m_leaderboard.size()); i++) {
            sprintf(buf, "%i. %s", m_leaderboard[i].rank(), m_leaderboard[i].name().c_str());
            bbutil_render_text(m_leaderboardFont, buf, m_leaderBoard.PosX() - m_leaderBoard.Width() / 2 + LEADERBOARD_LINE_OFFSET_X, posY, 1.0f, 1.0f, 1.0f, 1.0f);

            sprintf(buf, "%li", m_leaderboard[i].score());
            bbutil_measure_text(m_leaderboardFont, buf, &sizeX, &sizeY);

            bbutil_render_text(m_leaderboardFont, buf, m_leaderBoard.PosX() + m_leaderBoard.Width() / 2 - sizeX - LEADERBOARD_LINE_OFFSET_X, posY, 1.0f, 1.0f, 1.0f, 1.0f);

            posY -= sizeY + 10.0f;
        }
    }

    m_platform.finishRender();
}
Exemplo n.º 2
0
static void render() {
    //Typical render pass
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glViewport(0, 0, (int) width, (int) height);

    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();

    glOrthof(0.0f, width / height, 0.0f, 1.0f, -1.0f, 1.0f);

    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    glScalef(1.0f / height, 1.0f / height, 1.0f);

    glEnable(GL_TEXTURE_2D);
    glEnableClientState(GL_VERTEX_ARRAY);
    glEnableClientState(GL_TEXTURE_COORD_ARRAY);

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

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

    pos_x = ( width / 2 ) - ( button_size_x / 2 );
    pos_y = ( height / 2 ) - ( button_size_y / 2 );
    glTranslatef(pos_x, pos_y, 0.0f);

    glVertexPointer(2, GL_FLOAT, 0, button_vertices);
    glTexCoordPointer(2, GL_FLOAT, 0, button_tex_coord);
    glBindTexture(GL_TEXTURE_2D, button);

    glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
    glTranslatef(-pos_x, -pos_y, 0.0f);

    pthread_mutex_lock( &textMux );
    bbutil_render_text(font, titleText, 10.0f, height - 100, 0.35f, 0.35f, 0.35f, 1.0f);
    bbutil_render_text(font, statusText, 10.0f, 10.0f, 0.35f, 0.35f, 0.35f, 1.0f);
    bbutil_render_text(font, countText, 10.0f, pos_y - 30, 0.35f, 0.35f, 0.35f, 1.0f);
    pthread_mutex_unlock( &textMux );

    glDisableClientState(GL_VERTEX_ARRAY);
    glDisableClientState(GL_TEXTURE_COORD_ARRAY);
    glDisable(GL_TEXTURE_2D);

    //Use utility code to update the screen
    bbutil_swap();
}
Exemplo n.º 3
0
void render() {
    //Typical rendering pass
    glClear(GL_COLOR_BUFFER_BIT);

    //Render background quad first
    glEnable(GL_TEXTURE_2D);

    glEnableClientState(GL_VERTEX_ARRAY);
    glEnableClientState(GL_TEXTURE_COORD_ARRAY);

    glVertexPointer(2, GL_FLOAT, 0, vertices);
    glTexCoordPointer(2, GL_FLOAT, 0, tex_coord);
    glBindTexture(GL_TEXTURE_2D, background);

    glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
    glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);

    glDisableClientState(GL_TEXTURE_COORD_ARRAY);
    glDisableClientState(GL_VERTEX_ARRAY);
    glDisable(GL_TEXTURE_2D);

    //Use utility code to render welcome text onto the screen
    bbutil_render_text(font, "Hello world", pos_x, pos_y, 0.35f, 0.35f, 0.35f, 1.0f);

    //Use utility code to update the screen
    bbutil_swap();
}
Exemplo n.º 4
0
void GameLogic::button::draw() const
{
    glEnable(GL_TEXTURE_2D);
    glEnableClientState(GL_VERTEX_ARRAY);
    glEnableClientState(GL_TEXTURE_COORD_ARRAY);

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

    if (isPressed == true) {
        pressed->draw();
    } else {
        regular->draw();
    }

    glDisableClientState(GL_VERTEX_ARRAY);
    glDisableClientState(GL_TEXTURE_COORD_ARRAY);
    glDisable(GL_TEXTURE_2D);
    glDisable(GL_BLEND);

    bbutil_render_text(font, text, posX + textX, posY + textY, 1.0f, 1.0f, 1.0f, 1.0f);
}
Exemplo n.º 5
0
void GameLogic::renderFetchUser()
{
    m_platform.beginRender();

    glClear(GL_COLOR_BUFFER_BIT);
    glEnable(GL_TEXTURE_2D);
    glEnableClientState(GL_VERTEX_ARRAY);
    glEnableClientState(GL_TEXTURE_COORD_ARRAY);
    glEnable(GL_BLEND);
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

    m_background.draw();

    glDisableClientState(GL_VERTEX_ARRAY);
    glDisableClientState(GL_TEXTURE_COORD_ARRAY);
    glDisable(GL_TEXTURE_2D);
    glDisable(GL_BLEND);

    bbutil_render_text(m_font, m_message, m_messagePosX, m_messagePosY, 0.75f, 0.75f, 0.75f, 1.0f);

    m_platform.finishRender();
}
Exemplo n.º 6
0
static void frame(void *data)
{
  App *app = (App*)data;

  /* Calculate delta time */
  app->timeStart = GetTicks();
  Globals::DeltaTime = (float)(app->timeStart - app->oldTime) / app->dfps;
  app->oldTime = app->timeStart;

  /* Update & draw game */
  Game::Update();
  Game::Draw();

  /* Calculate FPS */
  if(GetTicks() >= app->fpsTimeStart + 1000)
  {
    Globals::FPS = app->frames;
    app->frames = 1;
    app->fpsTimeStart = GetTicks();
  }
  /*else*/ ++app->frames;

  /* Print FPS */
  static std::stringstream ss;
  ss.str("");
  ss << "FPS: " << Globals::FPS;
  //ss << Globals::ScreenWidth << ", " << Globals::ScreenHeight;

  float textWidth, textHeight;
  bbutil_measure_text(app->mainFont, ss.str().c_str(), &textWidth, &textHeight);

  float x = -Globals::ScreenWidth * 0.5f;
  float y = Globals::ScreenHeight * 0.5f - textHeight;

  bbutil_render_text(app->mainFont, ss.str().c_str(), x, y, 1.0f, 1.0f, 1.0f, 1.0f);
}
Exemplo n.º 7
0
void render()
{
    // Clear the screen.
    glClear(GL_COLOR_BUFFER_BIT);

    // Populate vertex and texture coordinate arrays.
    int i;
    for (i = 0; i < QUAD_COUNT; ++i) {
        const GLfloat x = _quads[i].x;
        const GLfloat y = _quads[i].y;
        const GLfloat width = _quads[i].width;
        const GLfloat height = _quads[i].height;
        _vertices[i*8 + 0] = x;
        _vertices[i*8 + 1] = y;
        _vertices[i*8 + 2] = x + width;
        _vertices[i*8 + 3] = y;
        _vertices[i*8 + 4] = x;
        _vertices[i*8 + 5] = y + height;
        _vertices[i*8 + 6] = x + width;
        _vertices[i*8 + 7] = y + height;

        const GLfloat u1 = _quads[i].uvs[0];
        const GLfloat v1 = _quads[i].uvs[1];
        const GLfloat u2 = _quads[i].uvs[2];
        const GLfloat v2 = _quads[i].uvs[3];
        _textureCoords[i*8 + 0] = u1;
        _textureCoords[i*8 + 1] = v2;
        _textureCoords[i*8 + 2] = u2;
        _textureCoords[i*8 + 3] = v2;
        _textureCoords[i*8 + 4] = u1;
        _textureCoords[i*8 + 5] = v1;
        _textureCoords[i*8 + 6] = u2;
        _textureCoords[i*8 + 7] = v1;
    }

    // Draw the virtual gamepad.
    glEnable(GL_TEXTURE_2D);
    glEnable(GL_BLEND);

    glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);

    glEnableClientState(GL_VERTEX_ARRAY);
    glEnableClientState(GL_TEXTURE_COORD_ARRAY);

    glColor4f(1.0f, 0.0f, 0.0f, 1.0f);

    glVertexPointer(2, GL_FLOAT, 0, _vertices);
    glTexCoordPointer(2, GL_FLOAT, 0, _textureCoords);
    glBindTexture(GL_TEXTURE_2D, _gamepadTexture);

    // Draw only connected controllers.
    if (_controllers[0].handle && _controllers[1].handle) {
        glDrawElements(GL_TRIANGLE_STRIP, INDEX_COUNT, GL_UNSIGNED_SHORT, _indices);
    } else if (_controllers[0].handle) {
        glDrawElements(GL_TRIANGLE_STRIP, 120, GL_UNSIGNED_SHORT, _indices);
        glDrawElements(GL_TRIANGLE_STRIP, 6, GL_UNSIGNED_SHORT, _indices + 240);
    } else if (_controllers[1].handle) {
        glDrawElements(GL_TRIANGLE_STRIP, 126, GL_UNSIGNED_SHORT, _indices + 120);
    }

    glDisableClientState(GL_TEXTURE_COORD_ARRAY);
    glDisableClientState(GL_VERTEX_ARRAY);
    glDisable(GL_TEXTURE_2D);
    glDisable(GL_BLEND);

    // Use utility code to render text.
    for (i = 0; i < MAX_CONTROLLERS; ++i) {
        GameController* controller = &_controllers[i];
        float xOffset = (_surfaceWidth * 0.5f)*i;

        bbutil_render_text(_font, controller->deviceString0, 5 + xOffset, _surfaceHeight - 20, 1.0f, 0.0f, 0.0f, 1.0f);

        if (controller->handle) {
            // Controller is connected; display info about its current state.
            bbutil_render_text(_font, controller->deviceString1, 5 + xOffset, _surfaceHeight - 40, 1.0f, 0.0f, 0.0f, 1.0f);
            bbutil_render_text(_font, controller->buttonsString, 5 + xOffset, _surfaceHeight - 60, 1.0f, 0.0f, 0.0f, 1.0f);
            bbutil_render_text(_font, controller->analog0String, 5 + xOffset, _surfaceHeight - 80, 1.0f, 0.0f, 0.0f, 1.0f);
            bbutil_render_text(_font, controller->analog1String, 5 + xOffset, _surfaceHeight - 100, 1.0f, 0.0f, 0.0f, 1.0f);

            // Render button labels.
            int j;
            for (j = 0; j < MAX_BUTTONS; ++j) {
                Button* button = &_buttons[i][j];
                if (button->type == TRIGGER) {
                    bbutil_render_text(_font, button->label, button->quad->x + 20, button->quad->y + 20, 1.0f, 0.0f, 0.0f, 1.0f);
                } else if (button->type == DPAD_UP) {
                    bbutil_render_text(_font, button->label, button->quad->x + 30, button->quad->y + 70, 1.0f, 0.0f, 0.0f, 1.0f);
                } else if (button->type == DPAD_RIGHT) {
                    bbutil_render_text(_font, button->label, button->quad->x + 70, button->quad->y + 30, 1.0f, 0.0f, 0.0f, 1.0f);
                }
                else {
                    bbutil_render_text(_font, button->label, button->quad->x + 30, button->quad->y + 30, 1.0f, 0.0f, 0.0f, 1.0f);
                }
            }
        }
    }

    if (_controllers[0].handle || _controllers[1].handle) {
        bbutil_render_text(_font, _pollingButton.label, _pollingButton.quad->x + 20, _pollingButton.quad->y + 20, 1.0f, 0.0f, 0.0f, 1.0f);
    }

    // Use utility code to update the screen.
    bbutil_swap();
}
Exemplo n.º 8
0
int zaDir10::render()
{
//	if (!m_dirty)
//		return 0;

	m_dirty = false;

	if (!m_font.font)
	{
		fprintf(stderr,"font err");
		return EXIT_FAILURE;
	}

	static int rep = 0;
	static int a =0;

	char *p;
	int mount = 0;

	p = this->getValue("\"StateOfCharge\":");
	if (p == NULL)
	{
		mount = 0;
	}
	else
	    mount = atoi(p);

	a ++ ;
	if ( a >  mount/12.f)
		a = 0;

    bool l_charge = true;
    p = this->getValue("\"ChargerName\":\"");
	if (p != NULL)
	{
		if (strstr(p,"NONE")!=NULL
		   || strstr(p,"PLUGGED")!=NULL)
		{
			l_charge = false;
			a = mount/12.5f;
		}
	}

	if (a == 0)  this->m_0.RunImg();
	if (a == 1)  this->m_1.RunImg();
	if (a == 2)  this->m_2.RunImg();
	if (a == 3)  this->m_3.RunImg();
	if (a == 4)  this->m_4.RunImg();
	if (a == 5)  this->m_5.RunImg();
	if (a == 6)  this->m_6.RunImg();
	if (a == 7)  this->m_7.RunImg();
	if (a == 8)  this->m_8.RunImg();
	if (a >= 9)  this->m_9.RunImg();
//	m_bar1.RunImg();
//	m_bar2.RunImg();
//	m_bar3.RunImg();

	char info[100];
	memset(info,0,100);

	int l_y = 100;

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



	p = this->getValue("\"StateOfCharge\":");
	if (p != NULL)
	{
		sprintf(info,"%s%%",p);
	}

	int l_rate = atoi(p);

	p = this->getValue("AvailableEnergy:n:");
	if (p != NULL)
	{
		sprintf(info,"%s    %s mWH",info,p);
	}

	bbutil_render_text(m_font.font,"", 100.0f, 620-l_y);
	bbutil_render_text(m_font.font,info, 100.0f, 620-l_y);


	p = this->getValue("\"AverageCurrent\":"); //ChargeCurrent
	if (p != NULL)
	{
			sprintf(info,"%s mA",p);
	}

	int l_timeMin = 0;
	int l_cur = 0;
	int l_tofull = 0;

	if (info[0] == '-')
	{
	  glColor4f(1.0f, 0.0f, 0.0f, 1.0f);
	  l_cur = atoi(p+1);
	  l_timeMin = 1800*l_rate*60/100/l_cur;
	  l_tofull = 0;
	}
	else
	{
		glColor4f(0.0f, 1.0f, 0.0f, 1.0f);
		l_cur = atoi(p);
		if (l_cur != 0)
			l_timeMin = 1800*(100-l_rate)*60/100/l_cur;
		else
			l_timeMin = 24*60;
		l_tofull = 1;
	}
	bbutil_render_text(m_font.font,"", 100.0f, 620-l_y);
	bbutil_render_text(m_font.font,info,380.0f, 620-l_y);

	// charge time
	int l_hour, l_min;
	l_min = l_timeMin%60;
	if (l_timeMin > 59)
	{
		l_hour = (l_timeMin-l_min)/60;
		if (l_min == 0)
			sprintf(info," %d hour",l_hour);
		else
			sprintf(info,"%d h %d m",l_hour,l_min);
	}
	else
	{
		sprintf(info,"  %d min",l_min);
	}

	if (!l_tofull)
		strcat(info," to empty");
	else
		strcat(info," to full");
	glColor4f(1.0f, 1.0f, 1.0f, 1.0f);

	if (l_timeMin != 0)
	{
		bbutil_render_text(m_fonts.font,"", 100.0f, 620-l_y);
		bbutil_render_text(m_fonts.font,info,200.0f, 500-l_y);
	}

	if ( !l_charge || (l_charge && rep < 3))
	{
		glColor4f(0.3f, 1.0f, 0.3f, 1.0f);

		p = this->getValue("\"BatteryName\":\"");
		if (p != NULL)
		{
			sprintf(info,"Name: %s",p);
		}
		bbutil_render_text(m_fonts.font,"", 100.0f, 620-l_y);
		bbutil_render_text(m_fonts.font,info, 80.0f, 440-50-l_y);

		p = this->getValue("\"StateOfBattery\":\"");
		if (p != NULL)
		{
			sprintf(info,"State of Battery: %s",p);
		}
		bbutil_render_text(m_fonts.font,"", 100.0f, 620-l_y);
		bbutil_render_text(m_fonts.font,info, 80.0f, 380-50-l_y);

		p = this->getValue("\"StateOfHealth\":");
		if (p != NULL)
		{
			sprintf(info,"Battery Health: %s%%",p);
		}
		bbutil_render_text(m_fonts.font,"", 100.0f, 620-l_y);
		bbutil_render_text(m_fonts.font,info, 80.0f, 320-50-l_y);

		p = this->getValue("\"BatteryAlert\":\"");
		if (p != NULL)
		{
			sprintf(info,"Battery Alert: %s",p);
		}
		bbutil_render_text(m_fonts.font,"", 100.0f, 620-l_y);
		bbutil_render_text(m_fonts.font,info, 80.0f, 260-50-l_y);


		p = this->getValue("\"Temperature\":");
		if (p != NULL)
		{
			sprintf(info,"CPU Temperature: %d",atoi(p)/100);
		}
		bbutil_render_text(m_fonts.font,"", 100.0f, 620-l_y);
		bbutil_render_text(m_fonts.font,info, 80.0f, 200-50-l_y);
	}

	if (l_charge && rep >= 3)
	{
		glColor4f(1.0f, 1.0f, 0.0f, 1.0f);

		p = this->getValue("\"ChargerName\":\"");
		if (p != NULL)
		{
			sprintf(info,"Charger: %s",p);
		}
		bbutil_render_text(m_fonts.font,"", 100.0f, 620-l_y);
		bbutil_render_text(m_fonts.font,info, 80.0f, 440-50-l_y);

		p = this->getValue("\"ChargerParams\":[{\"ChargerStatus\":\"");
		if (p != NULL)
		{
			sprintf(info,"Charger State: %s",p);
		}
		bbutil_render_text(m_font.font,"", 100.0f, 620-l_y);
		bbutil_render_text(m_fonts.font,info, 80.0f, 380-50-l_y);

		p = this->getValue("\"AverageCurrent\":"); //ChargeCurrent
		if (p != NULL)
		{
			sprintf(info,"Average Current: %s mA",p);
		}
		bbutil_render_text(m_fonts.font,"", 100.0f, 620-l_y);
		bbutil_render_text(m_fonts.font,info, 80.0f, 320-50-l_y);

		p = this->getValue("\"BatteryVoltage\":");
		if (p != NULL)
		{
			sprintf(info,"Battery Voltage: %s mV",p);
		}
		bbutil_render_text(m_fonts.font,"", 100.0f, 620-l_y);
		bbutil_render_text(m_fonts.font,info, 80.0f, 260-50-l_y);

		info[0] = 0;
		p = this->getValue("\"CycleCount\":");
		if (p != NULL)
		{
			sprintf(info,"Charge Count: %s",p);
		}
		bbutil_render_text(m_fonts.font,"", 100.0f, 620-l_y);
		bbutil_render_text(m_fonts.font,info, 80.0f, 200-50-l_y);

//		info[0] = 0;
//		p = this->getValue("\"TimeToFull\":");
//		if (p != NULL)
//		{
//			sprintf(info,"Time to Full: %s min",p);
//		}
//		bbutil_render_text(m_fonts.font,info, 80.0f, 200-50);
//
//		info[0] = 0;
//		p = this->getValue("\"Temperature\":");
//		if (p != NULL)
//		{
//			sprintf(info,"CPU Temperature: %s",p);
//		}
//		bbutil_render_text(m_fonts.font,info, 60.0f, 140);
	}

	if (l_charge)
	{
		rep ++ ;
		if( rep > 6)
			rep = 0;
	}
	else
		rep = 0;


	ppopen();

    struct   tm     *ptm;
    time_t ts;
    ts   =   time(NULL);
    ptm   =   localtime(&ts);
    char m_nowtime[40];
    sprintf(m_nowtime,"%04d/%02d/%02d %02d:%02d:%02d",
  		  ptm->tm_year+1900,
  		  ptm->tm_mon+1,
  		  ptm->tm_mday,
  		  ptm->tm_hour,
  		  ptm->tm_min,
  		  ptm->tm_sec );

	glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
	bbutil_render_text(m_fonts.font,"", 100.0f, 620-l_y);
	bbutil_render_text(m_fonts.font, m_nowtime, 150.0f,1280-70.0f);
	usleep(1000000);
	return 0 ;
}
Exemplo n.º 9
0
void render() {
	int i;
	//Typical render pass
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

	//First render background and menu if it is enabled
	enable_2d();

	glEnable(GL_TEXTURE_2D);

	glEnableClientState(GL_VERTEX_ARRAY);
	glEnableClientState(GL_TEXTURE_COORD_ARRAY);

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

	glVertexPointer(2, GL_FLOAT, 0, shadow_vertices);
	glTexCoordPointer(2, GL_FLOAT, 0, shadow_tex_coord);
	glBindTexture(GL_TEXTURE_2D, shadow);

	//glColor4f(0.85f, 0.85f, 0.85f, 1.0f);
	glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);

	if (menu_active || menu_show_animation || menu_hide_animation) {
		glTranslatef(pos_x, pos_y, 0.0f);

		for (i = 0; i < 4; i++) {
			if (i == selected) {
				glVertexPointer(2, GL_FLOAT, 0, radio_btn_selected_vertices);
				glTexCoordPointer(2, GL_FLOAT, 0, radio_btn_selected_tex_coord);
				glBindTexture(GL_TEXTURE_2D, radio_btn_selected);
			} else {
				glVertexPointer(2, GL_FLOAT, 0, radio_btn_unselected_vertices);
				glTexCoordPointer(2, GL_FLOAT, 0,
						radio_btn_unselected_tex_coord);
				glBindTexture(GL_TEXTURE_2D, radio_btn_unselected);
			}

			glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
			glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
			glTranslatef(0.0f, 60.0f, 0.0f);
		}

		glColor4f(0.35f, 0.35f, 0.35f, 1.0f);
		bbutil_render_text(font, "Color Menu", 10.0f, 10.0f);
		bbutil_render_text(font, "Red", 70.0f, -40.0f);
		bbutil_render_text(font, "Green", 70.0f, -100.0f);
		bbutil_render_text(font, "Blue", 70.0f, -160.0f);
		bbutil_render_text(font, "Yellow", 70.0f, -220.0f);
	}

	glDisableClientState(GL_VERTEX_ARRAY);
	glDisableClientState(GL_TEXTURE_COORD_ARRAY);
	glDisableClientState(GL_VERTEX_ARRAY);
	glDisable(GL_TEXTURE_2D);

	//Then render the cube
	enable_3d();
	glEnable(GL_LIGHTING);
	glEnable(GL_LIGHT0);
	glEnable(GL_COLOR_MATERIAL);
	glEnable(GL_DEPTH_TEST);

	glTranslatef(cube_pos_x, cube_pos_y, cube_pos_z);

	glRotatef(30.0f, 1.0f, 0.0f, 0.0f);
	glRotatef(15.0f, 0.0f, 0.0f, 1.0f);
	glRotatef(angle, 0.0f, 1.0f, 0.0f);

	glColor4f(cube_color[0], cube_color[1], cube_color[2], cube_color[3]);

	glEnableClientState(GL_VERTEX_ARRAY);
	glEnableClientState(GL_NORMAL_ARRAY);

	glVertexPointer(3, GL_FLOAT, 0, cube_vertices);
	glNormalPointer(GL_FLOAT, 0, cube_normals);

	glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
	glDrawArrays(GL_TRIANGLE_STRIP, 4, 4);
	glDrawArrays(GL_TRIANGLE_STRIP, 8, 4);
	glDrawArrays(GL_TRIANGLE_STRIP, 12, 4);
	glDrawArrays(GL_TRIANGLE_STRIP, 16, 4);
	glDrawArrays(GL_TRIANGLE_STRIP, 20, 4);

	glDisableClientState(GL_VERTEX_ARRAY);
	glDisableClientState(GL_NORMAL_ARRAY);

	glDisable(GL_LIGHTING);
	glDisable(GL_LIGHT0);
	glDisable(GL_COLOR_MATERIAL);
	glDisable(GL_DEPTH_TEST);

	//Use utility code to update the screen
	bbutil_swap();
}
Exemplo n.º 10
0
/**
 * main render function
 */
void render() {
	counter++;
	if(counter >= 36000){
		counter = 0;
	}
	//Typical render pass
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

	// update dimensions
	enable_2d();

	glEnableClientState(GL_VERTEX_ARRAY);
	glEnableClientState(GL_TEXTURE_COORD_ARRAY);

	glPushMatrix();

		// if in portrait mode
		if (oriention_side_up > 0)
		{
			glVertexPointer(2, GL_FLOAT, 0, verticesH);
			glTexCoordPointer(2, GL_FLOAT, 0, tex_coordH);
		}
		// if in landscape mode
		else
		{
			glVertexPointer(2, GL_FLOAT, 0, vertices);
			glTexCoordPointer(2, GL_FLOAT, 0, tex_coord);
		}

		//portrait or landscape?
		glBindTexture(GL_TEXTURE_2D, oriention_side_up>0?backgroundH:background);
		glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);

	glPopMatrix();

	pp = points.begin();

	while (pp != points.end()) {

		if (pp->visible) {
			// draw touchpoint
			glPushMatrix();
				glTranslatef(pp->getX(), (oriention_side_up>0?1024:600) - pp->getY(), 0);
				glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
				glVertexPointer(2, GL_FLOAT, 0, verticesTouchpoint);
				glTexCoordPointer(2, GL_FLOAT, 0, tex_coord_touchpoint);
				glBindTexture(GL_TEXTURE_2D, touchpoint);
				glPushMatrix();
					glRotatef((float) ((float)(pp->startRotation) + (float) counter / 0.25f), 0, 0, 1);
					glPushMatrix();
						glTranslatef(-60, -60, 0);
						glColor4f(pp->r,pp->g,pp->b,1);
						glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
					glPopMatrix();
				glPopMatrix();
			glPopMatrix();

			// draw touchpoint number
			glPushMatrix();
				glColor4f(0.3f,0.3f,0.3f,1.0f);
				char buffer [33];
				itoa (pp->id+1,buffer,10);
				glTranslatef(pp->getX()+50,(oriention_side_up>0?1024:600)-pp->getY()+50,0);
				glPushMatrix();
					bbutil_render_text(font,buffer,0,0);
				glPopMatrix();
			glPopMatrix();

		}
		pp++;
	}

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

	glDisableClientState(GL_TEXTURE_COORD_ARRAY);
	glDisableClientState(GL_VERTEX_ARRAY);

	//Use utility code to update the screen
	bbutil_swap();
}
Exemplo n.º 11
0
void GameLogic::renderGame()
{
    m_platform.beginRender();

    //Typical rendering pass
    glClear(GL_COLOR_BUFFER_BIT);

    //Draw background
    glEnable(GL_TEXTURE_2D);
    glEnableClientState(GL_VERTEX_ARRAY);
    glEnableClientState(GL_TEXTURE_COORD_ARRAY);

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

    m_background.draw();

    if (m_gamePaused) {
        glDisableClientState(GL_VERTEX_ARRAY);
        glDisableClientState(GL_TEXTURE_COORD_ARRAY);
        glDisable(GL_TEXTURE_2D);
        glDisable(GL_BLEND);

        bbutil_render_text(m_font, m_message, m_messagePosX, m_messagePosY, 0.75f, 0.75f, 0.75f, 1.0f);

        m_platform.finishRender();

        return;
    }

    // Draw terrain
    glPushMatrix();
    std::list<HawkBody*>::iterator it = m_terrain.begin();
    std::list<HawkBody*>::iterator last = m_terrain.end();
    for (; it != last; ++it) {
        // Skip rotation for now as we don't have any.
        HawkVector position = Hawk::toPixels((*it)->body()->GetPosition());
        glTranslatef(position.x, position.y, 0);
        (*it)->draw();
        glTranslatef(-position.x, -position.y, 0);
    }
    glPopMatrix();


    glPushMatrix();
    HawkPoint position = Hawk::toPixels(m_player->body()->GetPosition());
    glTranslatef(position.x, position.y, 0);
    glRotatef((180 * m_player->body()->GetAngle() / M_PI), 0.0f, 0.0f, 1.0f);
    m_player->draw();
    glPopMatrix();


    glDisableClientState(GL_VERTEX_ARRAY);
    glDisableClientState(GL_TEXTURE_COORD_ARRAY);
    glDisable(GL_TEXTURE_2D);
    glDisable(GL_BLEND);

    //Display score
    char buf[100];
    sprintf(buf, "%i", m_score);

    bbutil_render_text(m_scoreFont, buf, m_scorePosX, m_scorePosY, 0.75f, 0.75f, 0.75f, 1.0f);

    m_platform.finishRender();
}