/* Copyright 1999, Be Incorporated. All Rights Reserved. This file may be used under the terms of the Be Sample Code License. */ #include "FPS.h" FPS::FPS() { } FPS::~FPS() { } void FPS::drawChar( GLfloat x, GLfloat y, GLint number ) { static bool numbers[13][7] = { {true,true,true,true,true,true,false}, /* 0 */ {false,true,true,false,false,false,false}, /* 1 */ {true,true,false,true,true,false,true}, /* 2 */ {true,true,true,true,false,false,true}, /* 3 */ {false,true,true,false,false,true,true}, /* 4 */ {true,false,true,true,false,true,true}, /* 5 */ {true,false,true,true,true,true,true}, /* 6 */ {true,true,true,false,false,false,false}, /* 7 */ {true,true,true,true,true,true,true}, /* 8 */ {true,true,true,false,false,true,true}, /* 9 */ {true,false,false,false,true,true,true}, /* F */ {true,true,false,false,true,true,true}, /* P */ {true,false,true,true,false,true,true}, /* S */ }; static GLfloat gap = 0.03; static GLfloat size = 1.0; static GLfloat x0 = -size / 4; static GLfloat x1 = -size / 4 + gap; static GLfloat x2 = -x1; static GLfloat x3 = -x0; static GLfloat y0 = size / 2; static GLfloat y1 = size / 2 - gap; static GLfloat y2 = 0 + gap; static GLfloat y3 = 0; static GLfloat y4 = -y2; static GLfloat y5 = -y1; static GLfloat y6 = -y0; glBegin( GL_LINES ); if( numbers[number][0] ) { glVertex2f( x1 + x, y0 + y ); glVertex2f( x2 + x, y0 + y ); } if( numbers[number][1] ) { glVertex2f( x3 + x, y1 + y ); glVertex2f( x3 + x, y2 + y ); } if( numbers[number][2] ) { glVertex2f( x3 + x, y4 + y ); glVertex2f( x3 + x, y5 + y ); } if( numbers[number][3] ) { glVertex2f( x1 + x, y6 + y ); glVertex2f( x2 + x, y6 + y ); } if( numbers[number][4] ) { glVertex2f( x0 + x, y5 + y ); glVertex2f( x0 + x, y4 + y ); } if( numbers[number][5] ) { glVertex2f( x0 + x, y2 + y ); glVertex2f( x0 + x, y1 + y ); } if( numbers[number][6] ) { glVertex2f( x1 + x, y3 + y ); glVertex2f( x2 + x, y3 + y ); } glEnd(); } void FPS::drawCounter( GLfloat frameRate ) { GLfloat pos = 0; int ifps = (int) (frameRate * 10 +0.5); int c100,c10,c1,c_1; c100 = ifps / 1000; c10 = (ifps / 100) % 10; c1 = (ifps / 10) % 10; c_1 = ifps % 10; if( c100 ) { drawChar( pos, 0, c100 ); pos += 1; } if( c100 || c10 ) { drawChar( pos, 0, c10 ); pos += 1; } drawChar( pos, 0, c1 ); pos += 0.5; glBegin( GL_POINTS ); glVertex2f( pos, -0.5 ); glEnd(); pos += 0.5; drawChar( pos, 0, c_1 ); pos += 1.5; drawChar( pos, 0, 10 ); pos += 1; drawChar( pos, 0, 11 ); pos += 1; drawChar( pos, 0, 12 ); pos += 1; }