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

标签 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 的第一个问题,如果没有很好地组合在一起,我们深表歉意。我会尽我所能提供任何额外信息。

最佳答案

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

例如glutBitmapString(GLUT_BITMAP_HELVETICA_18, scoreString.c_str());

注意:您链接到的答案并未说明您可以使用 std::string。它给出的示例 (glutBitmapString(GLUT_BITMAP_HELVETICA_18, "text to render");) 使用了一个 string literal,它是一个 char 数组,不是 std::string

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

关于c++ - glutBitmapString/glutStrokeString 似乎需要 const unsigned char* - 字符串不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6499886/

相关文章:

c - 在动画期间获取 OpenGL 中的鼠标点击坐标?

c++ - 使用 freeglut/glew 在 VS2010 中设置 OpenGL 项目

c++ - Linux 中的 FreeGLUT 链接问题

c++ - 二叉搜索树实现(C++)

c++ - Windows内存管理中的备用列表是什么?

c++ - 使用 msxml2 IXMLDOMDocument2 删除 XML 声明

c++ - OpenGL 只显示在方法中加载的纹理?

c++ - glutSwapBuffers "Access violation reading location 0x0000000004C0F000"

c++ - 寻求有关如何将 tesseract 集成到 VC2010 C 程序中的说明

c++ - 使用 openGL (c++) 将椭圆分解为三角形