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

时间:2012-02-15 14:58:28

标签: c++ windows opengl text printing

我正在制作赛车游戏,我想在我的场景屏幕上打印一些信息,如速度,圈数,键绑定等。我希望它们在屏幕上保持平坦,有一个位置可以说固定在相机前面(比如真实游戏中的速度计)不在我的场景中 - 如果那是不可能的话那么我会将它们打印在我的场景中。

你知道我可以使用哪些功能(glutBitmapCharacter?)我试过printw但我的程序没有编译。你有什么建议?

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

我已经尝试过这个(屏幕上没有任何内容)

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();

如何创建菜单还有一件事 - 我可以使用任何方法,用户必须在3个条目之间进行选择,仅通过在键盘上按1或2或3进行输入

3 个答案:

答案 0 :(得分:0)

我觉得你为glRasterPos2f传递了太大的值(100,100); 这是一篇很好的文章,您可以在其中看到如何使用GLUT printing text with glut显示文本。

答案 1 :(得分:0)

您确定在Windows下成功创建了一个openGL 4.2核心上下文吗? (需要一些明确的工作来实现它) 只是拥有支持openGL 4的卡并不意味着你正在使用openGL 4核心环境。

除此之外,如果你正在开发一个openGL 4.2核心上下文,那么glutBitmap()将不起作用,因为它与glRasterPos()一起弃用

请参阅我在I link原帖的评论中给出的相同答案,该答案已经就如何呈现openGL文本给出了非常好的答案。

答案 2 :(得分:0)

屏幕上没有显示任何内容,因为 glutBitmapCharacter 期待您发送的字符的ASCII码。您正在发送数字

的字符的int值

而是你需要发送char缓冲区中每个字符的ascii值消息

例如,如果要显示“1”,则发送1 + 48,因为48是0的ascii代码 glutBitmapCharacter(GLUT_BITMAP_HELVETICA_18,1 + 48)