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(); }
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(); }
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(); }
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); }
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(); }
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); }
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(); }
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 ; }
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(); }
/** * 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(); }
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(); }