2014-05-04 100 views
0

我使用opengl函数“drawstring”为我的游戏创建HUD。我已经成功地在屏幕上绘制了字符串,但是当涉及到显示诸如玩家位置或乐谱等浮点数的值时,我遇到了一个问题。将float值传递给glutBitmapString()?

经过一番研究,我发现drawstring只能接受const chars。所以我然后试图将一个浮点数转换或转换为一个char值,但我已经成功。

这是我的抽绳方法

void Player::DrawString(const char* text, const Vector3* position, const Color* color) 

{ 

     glPushMatrix(); 

       glDisable(GL_TEXTURE); 

       glDisable(GL_LIGHTING); 

       glDisable(GL_DEPTH_TEST); 

       glColor3f(1.0f, 1.0f, 1.0f); 



       glTranslatef(position->x, position->y, position->z); 

       glRasterPos2f(0.0f, 0.0f); 

       glutBitmapString(GLUT_BITMAP_TIMES_ROMAN_24, (unsigned char*)text); 

       glEnable(GL_LIGHTING); 

       glEnable(GL_TEXTURE); 

       glEnable(GL_DEPTH_TEST); 



     glPopMatrix(); 



} 

,这是我的方法调用

Color c1 = {0.0f, 0.0f, 0.0f}; 
     DrawString("Player Pos: ", &_vpos, &c1); 

     Vector3 vspeed = {20.0f, 0.0f, 500.0f}; 
     Color c = {1.0f, 1.0f, 1.0f}; 
     DrawString(cpp, &vspeed, &c1); 

CPP是我试图转换为字符的浮动。

+0

Casting!=转换。你的目标是什么?它是创建一个浮点值的字符串版本吗? – PaulMcKenzie

+0

另外,请注意,OpenGL没有任何字符串绘图功能。它有GLUT。了解OpenGL和GLUT之间的区别很重要! – user1118321

回答

1
#include <stdio.h> 

// ... 

char buf[256]; 
snprintf(buf, sizeof(buf) - 1, "Pos: { %f, %f, %f }", pos.x, pos.y, pos.z); 
DrawString(buf, &_vpos, &c1); 
+0

非常感谢你! 我不得不使用“_snprintf_s” – user3331499