glutBitmapString访问冲突
|
(作业系统:Windows 7,编译器:Visual Studio 2010 C ++编译器)
我有一个正确工作的OpenGL程序,该程序绘制了一些球体和模型,应用了一些着色器等。等等。
现在,我认为添加一些文本会很好,因此我在draw方法中添加了以下三行:
glColor3f(0.5f, 0.5f, 0.5f);
glRasterPos2f(0, 0);
glutBitmapString(GLUT_BITMAP_HELVETICA_12, (unsigned char*)\"some text\");
现在,这一切都使我的程序陷入了无限的“访问冲突”循环,这似乎无法解决。我什至把所有其他绘制代码都注释掉了,只输出了文本,但它仍然给出访问冲突错误,我在这里很茫然,因为似乎没有什么会影响到它。因此,有人对如何解决此问题有一些建议;))。
我可以发布所有绘图代码,但是我什至尝试了一个空项目,因此我很确定它不是其余的代码。
编辑:我尝试进一步缩小错误范围,而且glRasterPos2f似乎抛出了acces冲突(足够奇怪了)。它不在任何glBegin和glEnd调用之间,并且没有OpenGL错误。
Edit2:经过一些建议,我尝试了以下代码,我摆脱了访问冲突,但仍未显示任何文本
glColor3f(0.5f, 0.5f, 0.5f);
glRasterPos2f(0.0f, 0.0f);
std::string str(\"Hello World\");
char* p = new char[strlen(str.c_str() + 1)];
strcpy(p, str.c_str());
glutBitmapString(GLUT_BITMAP_HELVETICA_12, (const unsigned char*)p);
没有找到相关结果
已邀请:
3 个回复
吠强祷豪硅
是
类型,而不是
类型。有帮助吗?我在字符串转换方面也遇到了问题。 我发现,我没有关闭字符串,因为
比
长1。这是一个片段,用于解决具有相同参数类型的另一种方法:
然后你有
。
乐遣杀屎
当然,您可以在任何地方使用任何argc / argv。这以及Marnix的建议为我解决了异常错误。 请注意,我实际上并没有创建带有过剩的窗口。
脾萌
如果const不起作用,则glutBitmapString()可能正在修改字符串。