glutBitmapString / glutStrokeString似乎需要const unsigned char * - 字符串不起作用

时间:2011-06-27 22:55:19

标签: c++ glut freeglut

Ubuntu 11.04,G ++,freeglut和GLUT。

我根本不明白这一点。这是我得到的错误:

whatever.cc:315:59: error: cannot convert ‘std::string’ to ‘const unsigned char*’ for argument ‘2’ to ‘void glutStrokeString(void*, const unsigned char*)’

如果我尝试使用glutBitmapString:

whatever.cc:315:59: error: cannot convert ‘std::string’ to ‘const unsigned char*’ for argument ‘2’ to ‘void glutBitmapString(void*, const unsigned char*)’

这是相关代码(我认为)。

scoreStream << "Score: " << score << "\0";
scoreString = scoreStream.str();

// ...in another method:

glRasterPos2i(0, 0);
glColor4f(0.0f, 0.0f, 0.0f, 1.0f);
glutBitmapString(GLUT_BITMAP_HELVETICA_18, scoreString);

This answer告诉我它应该有效,但事实并非如此。

引用那些不想跳的人:

// Draw blue text at screen coordinates (100, 120), where (0, 0) is the top-left of the
// screen in an 18-point Helvetica font
glRasterPos2i(100, 120);
glColor4f(0.0f, 0.0f, 1.0f, 1.0f);
glutBitmapString(GLUT_BITMAP_HELVETICA_18, "text to render");

(另外,我试过在那里留下像“文字渲染”这样的直接字符串。没有骰子。)

whatever.cc:315:64: error: invalid conversion from ‘const char*’ to ‘const unsigned char*’

我很困惑。就我记忆而言,这是我关于SO的第一个问题,如果它没有太好地放在一起,那么道歉。我会提供任何额外的信息。

1 个答案:

答案 0 :(得分:5)

没有std::string自动转换为char const*。但是,您可以使用std::string::c_str()char const*中获取std::string

e.g。 glutBitmapString(GLUT_BITMAP_HELVETICA_18, scoreString.c_str());

注意:您链接的答案并未表明您可以使用std::string。它给出的示例(glutBitmapString(GLUT_BITMAP_HELVETICA_18, "text to render");)使用字符串文字,这是char的数组,而不是std::string

请记住,OpenGL是一个C库,C中不存在std::string