我正在制作赛车游戏,我想在我的场景屏幕上打印一些信息,如速度,圈数,键绑定等。我希望它们在屏幕上保持平坦,有一个位置可以说固定在相机前面(比如真实游戏中的速度计)不在我的场景中 - 如果那是不可能的话那么我会将它们打印在我的场景中。
你知道我可以使用哪些功能(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进行输入
答案 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)