123 lines
2.5 KiB
C++
123 lines
2.5 KiB
C++
/*
|
|
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;
|
|
|
|
int count = 0;
|
|
int number = 1;
|
|
while (ifps > number) {
|
|
number *= 10;
|
|
count++;
|
|
}
|
|
|
|
number /= 10;
|
|
for (int i = 0; i < count; i++) {
|
|
drawChar(pos, 0, (ifps / number) % 10);
|
|
pos += 1.0;
|
|
if (number == 1)
|
|
break;
|
|
number /= 10;
|
|
}
|
|
|
|
pos += 0.5;
|
|
drawChar(pos, 0, 10);
|
|
pos += 1;
|
|
drawChar(pos, 0, 11);
|
|
pos += 1;
|
|
drawChar(pos, 0, 12);
|
|
pos += 1;
|
|
}
|