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

发布于 2025-01-06 01:28:14 字数 732 浏览 2 评论 0原文

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

你知道我可以使用哪些函数吗(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

I am making a racing game and I would like to print some information such as speed, lap, key bindings etc. on the screen of my scene. I want them to be flat on the screen, having a position lets say fixed in front of the camera (like speedometers in real games) not inside my scene - if that's not possible then I ll print them inside my scene.

Do you know what functions can I use (glutBitmapCharacter?)I tried printw but my program doesn't compile. What do you propose?

There will be multiple messages printed from various routines

I have already tried this (nothing displays on screen)

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

One more thing how can I create a menu - is there any method I can use, user will have to chose between 3 entries, input by pressing 1 or 2 or 3 on keyboard only

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

淡淡绿茶香 2025-01-13 01:28:14

我感觉您为 glRasterPos2f(100, 100); 传递了太大的值;
这是一篇很好的文章,您可以在其中了解如何使用 GLUT 打印文本来显示文本供过于求

I have the feeling you are passing too big values for glRasterPos2f(100, 100);
Here is a good post where you can see how to display text using GLUT printing text with glut.

不一样的天空 2025-01-13 01:28:14

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

而不是您需要发送字符缓冲区中每个字符的 ascii 值 message

例如,如果您想显示“1”,请发送 1 + 48,如下所示48是0的ascii码
glutBitmapCharacter(GLUT_BITMAP_HELVETICA_18, 1+48)

nothing displays on your screen because
glutBitmapCharacter
is expecting the ASCII code of the character you are sending. you are sending the int value of the character for digits

instead you need to send the ascii value of each character in your char buffer message

Eg if you want to display '1', send 1 + 48, as 48 is ascii code for 0
glutBitmapCharacter(GLUT_BITMAP_HELVETICA_18, 1+48)

氛圍 2025-01-13 01:28:14

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

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

请参阅我在原始帖子的评论中给出的相同答案,其中 我链接 已经给出了关于如何渲染 openGL 文本的非常好的答案。

Are you sure you are succesfully creating an openGL 4.2 core context under Windows? (Needs some explicit work to achieve it)
Just having a card that supports openGL 4 does not mean you are working with an openGL 4 core context.

That aside if you ARE working on an openGL 4.2 core context then glutBitmap() would not work since it's deprecated along with glRasterPos()

Refer to the same answer I gave in the comments of the original post where I link to a very good answer already given on how to render openGL text.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文