根据displayTimer()函数的标题,看起来您正试图在屏幕上显示z坐标而不是您想要的实际计时器。
首先,我建议将'z'参数重命名为'text'并将其数据类型更改为std :: string。然后,您可以将您的计时器值作为字符串传递给您的displayTimer()函数。接下来,您将不得不循环访问“文本”字符串,以便在屏幕上逐字显示它(字符)。
下面是一个例子你的函数会是什么样子:
void displayTimer(void * font, std::string text, float x, float y)
{
glRasterPos2f(x, y);
for (string::iterator i = text.begin(); i != text.end(); ++i)
{
char c = *i;
glutBitmapCharacter(font, c);
}
}
我不知道你的代码是如何组织的,但如何与您的显示器一起使用X()函数一例()函数到在屏幕上显示的定时器值将是如下:
#include <string>
std::string timerValue;
void * textFont;
void X(int value)
{
timerValue = std::to_string(value);
}
void displayTimer(void * font, std::string text, float x, float y)
{
glColor3f(0.0f, 1.0f, 0.0f); // Set color to green purely for testing.
glRasterPos2f(x, y);
for (string::iterator i = text.begin(); i != text.end(); ++i)
{
char c = *i;
glutBitmapCharacter(font, c);
}
}
void Display()
{
displayTimer(textFont,timerValue,10.0f,20.0f);
}
int main(int argc, char* argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
timerValue = 0;
textFont = = GLUT_BITMAP_HELVETICA_18;
glutTimerFunc(10,X,0);
glutDisplayFunc(Display);
glutMainloop();
return 0;
}
通知数据如何炭传递给glutBitmapCharacter在displayTimer()函数而不是AZ整数()函数。提示:为避免某些编译器警告,将x和y displayTimer()函数参数的数据类型更改为GLfloat,因为这是用于glRasterPos2f()函数的数据类型。
“不能正常工作”对您的问题不是很好的描述。它显示一个意外的价值,或在错误的位置,或其他? –
顾名思义,'glutBitmapCharacter'不是[应该写一个数字](https://www.opengl.org/documentation/specs/glut/spec3/node76.html)。 – usr2564301