有没有更简单的方法来使用 C++ 和 OpenGL 显示文本?
Is there an easier way to display text using C++ and OpenGL?
使用 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 不是很熟悉,所以我想不出更简洁的方法,但在我看来这太复杂了,无法只显示一个句子。
你能推荐一种更好或更简单的方法吗?欢迎任何意见或批评。
这可能更简洁 (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();
}
使用 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 不是很熟悉,所以我想不出更简洁的方法,但在我看来这太复杂了,无法只显示一个句子。
你能推荐一种更好或更简单的方法吗?欢迎任何意见或批评。
这可能更简洁 (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();
}