有没有更简单的方法来使用C ++和OpenGL显示文本?

时间:2016-12-02 15:17:35

标签: c++ opengl glut

使用C ++和OpenGL(使用GLUT)我试图在用户屏幕上显示一些动态文本。我试图显示的文本是计算渲染Mandelbrot集所需的所有内容所花费的时间。

到目前为止,我已成功地这样做了:

std::ostringstream stream;
stream << "Time: " << end_time-start_time;
const std::string& tmp = stream.str();
const char* cstr = tmp.c_str();
strcpy(message, cstr );
int len = (int) strlen(message);
glPushMatrix();
glTranslatef(20.0, 80.0, 0.0);
glScalef(0.1, 0.1, 0.0);
glColor3f(1.0,1.0,1.0);
for (int i = 0; i < len; i++) {
    glutStrokeCharacter(GLUT_STROKE_ROMAN, message[i]);
}
glPopMatrix();

由于我不熟悉C ++和OpenGL,我无法找到更简洁的方法来做到这一点,但在我看来,这似乎太复杂了,只能显示一个单一的数据。

你能推荐一种更好或更简单的方法吗?欢迎任何建议或喜剧。

1 个答案:

答案 0 :(得分:2)

这可能更简洁(c ++ 11):

void showTime()
{
  glPushMatrix();
  glTranslatef(20.0, 80.0, 0.0);
  glScalef(0.1, 0.1, 0.0);
  glColor3f(1.0,1.0,1.0);
  for (auto ch : std::to_string(end_time - start_time))
  {
    glutStrokeCharacter(GLUT_STROKE_ROMAN, ch);
  }
  glPopMatrix();
}