2014-05-04 27 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