Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/128.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ opengl在屏幕上打印文本变量-菜单_C++_Windows_Opengl_Text_Printing - Fatal编程技术网

C++ opengl在屏幕上打印文本变量-菜单

C++ opengl在屏幕上打印文本变量-菜单,c++,windows,opengl,text,printing,C++,Windows,Opengl,Text,Printing,我正在制作一个赛车游戏,我想在我的场景屏幕上打印一些信息,如速度、圈数、按键绑定等。我希望它们在屏幕上是平面的,有一个位置,比如说固定在摄像机前(就像真实游戏中的速度表),而不是在我的场景中——如果这不可能,那么我会在我的场景中打印它们 你知道我可以使用什么函数吗(glutBitmapCharacter?)我尝试了printw,但我的程序无法编译。你有什么建议 将从各种例程打印多条消息 我已经试过了(屏幕上没有显示任何内容) glPushMatrix(); glRasterPos2f(10010

我正在制作一个赛车游戏,我想在我的场景屏幕上打印一些信息,如速度、圈数、按键绑定等。我希望它们在屏幕上是平面的,有一个位置,比如说固定在摄像机前(就像真实游戏中的速度表),而不是在我的场景中——如果这不可能,那么我会在我的场景中打印它们

你知道我可以使用什么函数吗(glutBitmapCharacter?)我尝试了printw,但我的程序无法编译。你有什么建议

将从各种例程打印多条消息

我已经试过了(屏幕上没有显示任何内容)

glPushMatrix();
glRasterPos2f(100100);
GL3F(0.0,0.5,0.1);
sprintf(消息“\nLap(用户):%d”,lapsB);
len=(int)strlen(message);
对于(int i=0;i

还有一件事,我如何创建菜单?是否有我可以使用的方法,用户必须在3个条目之间进行选择,只需在键盘上按1、2或3即可输入

我感觉您传递的glRasterPos2f(100100)值太大了;
这是一篇很好的文章,在这里你可以看到如何使用GLUT显示文本

您确定在Windows下成功创建了openGL 4.2核心上下文吗?(需要一些明确的工作来实现) 仅仅拥有一张支持OpenGL4的卡并不意味着您正在使用OpenGL4核心上下文

除此之外,如果您正在处理openGL 4.2核心上下文,那么glutBitmap()将无法工作,因为它与glRasterPos()一起被弃用


参考我在原始帖子的评论中给出的相同答案,这里有一个关于如何呈现openGL文本的非常好的答案

屏幕上没有显示任何内容,因为 比特映射字符 应为所发送字符的ASCII码。您正在发送数字字符的int值

相反,您需要发送字符缓冲区消息中每个字符的ascii值

例如,如果要显示“1”,请发送1+48,因为48是0的ascii码
glutBitmapCharacter(GLUT_位图_HELVETICA_18,1+48)

在openGL中渲染文本是一个复杂的问题,有各种解决方案。在这个网站上已经被问过很多次了。请参阅此问题以获取详细答案:这也取决于您的openGL版本,因此,请告诉我们您正在使用的openGL版本以及您是windows 7下的TargetGit版本4.2的操作系统!找到一些关于菜单的信息:glutCreateMenu(MenuSelect);戊二醛(“红色”,红色);//将菜单附加到右键附件菜单(GLUT_右键);我会用鼠标,我没有时间,这个词也没有:glutStrokeCharacter(GLUT_STROKE_ROMAN,str[I]);您使用的是核心上下文还是兼容上下文?我降低了值,遵循的示例仍然不起作用。我在空闲功能中发布了这条消息,这样它就会一直闪烁。我的场景的分辨率是720pi,刚刚输入:cout-yes-correct。我将编辑答案以反映兼容性和核心之间的差异context@NicolBolas为了完整性起见,我不得不说,在我的回答中,我只是想确定OP的问题是什么,我发布了一个可能的原因,因为他说他正在使用openGL 4.2。直到后来在评论中,他才清楚地知道什么是上下文,这意味着他正在处理的是兼容上下文。
glPushMatrix();
                 glRasterPos2f(100, 100);
                 glColor3f(0.0,0.5,0.1);
                sprintf(message,"\nLap(User):%d",lapsB);
                len = (int) strlen(message);
                for (int i = 0; i < len; i++) {
                    glutBitmapCharacter(GLUT_BITMAP_HELVETICA_18, message[i]);
                }
                glPopMatrix();