2012-02-15 8 views
1

私はレースゲームを作っていますし、私は私のシーンの画面上などの速度、ラップ、キーバインディングなど、いくつかの情報を印刷したいと思います。私はそれらを画面上にフラットにして、ポジションを持ってカメラの前に固定して(実際のゲームのスピードメーターのように)、自分のシーンの中には置かないようにします。OpenGLの印刷テキスト変数 - メニュー

私はどのような機能を使用できますか(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(); 

もう一つは(何も画面に表示しない)、これを試してみましたが、様々なルーチン

から印刷された複数のメッセージがありますキーボードで1または2または3を押して入力した3つの項目の中から1つを選択する必要があります。

+0

さまざまなソリューションでは、レンダリングテキストは複雑な問題です。このサイトで何度も前に尋ねられています。詳細な回答については、この質問を参照してください:http://stackoverflow.com/questions/5262951/what-is-state-of-the-art-for-text-rendering-in-opengl-as-of-version-4- 1 あなたのOpenGLのバージョンにもよりますので、使用しているOpenGLのバージョンと対象としているOSを教えてください。 – Lefteris

+0

Windows 7の下でバージョン4.2、ギリシャ語です! –

+0

メニューについての情報: glutCreateMenu(MenuSelect); glutAddMenuEntry( "赤"、赤); //右ボタン glutAttachMenu(GLUT_RIGHT_BUTTON)にメニューを添付。 私はマウスを使用します。私は時間がありません –

答えて

1

glRasterPos2f(100,100)に大きすぎる値を渡しているような気がします。 ここにGLUT printing text with glutを使ってテキストを表示する方法を見ることができる良い投稿です。

+0

私は値を下げ、例はまだ動作しません。アイドル関数にメッセージを投稿しました。私の場面の解像度は720pです –

0

は、あなたが正常にWindowsでのOpenGL 4.2コアコンテキストを作成していますか? (達成するための明示的な作業が必要) OpenGL 4をサポートするカードを持っていても、OpenGL 4コアのコンテキストで作業しているわけではありません。それはglRasterPosに伴い廃止予定ですので、

それはさておき、あなたは、OpenGL 4.2コアコンテキストで作業している場合、その後glutBitmapは、()(動作しない)

私はどこ元の記事のコメントに与えた同じ答えを参照してください。 I linkは既にopenGLテキストをレンダリングする方法については非常に良い答えがあります。 glutBitmapCharacter は、あなたが送信している文字のASCIIコードを期待しているので、

+0

cout << "OpenGL Version" << glGetString(GL_VERSION)<< endl; このようなコンテキストを作成したかどうか本当にわかりません –

+0

はいいいえ互換性とコアコンテキストの違いを反映する答えを編集します – Lefteris

+0

@NicolBolas完全性のために、私の答えではOPの問題点を特定しようとしていました。 glutBitmapはopenGL 4.2で作業中だと言って以来働いていません コメントの後半になって初めて彼は知らなかったコンテキストとは、彼が扱っている互換性コンテキストです。 – Lefteris

0

何が画面に表示しません。あなたはあなたが表示したい場合は、あなたのcharバッファにメッセージ

例えば、各文字のASCII値を送信する必要がある代わりに数字

のために文字のint型の値を送信している「1」、1 +を送信します48、as 48は0のASCIIコードです。 glutBitmapCharacter(GLUT_BITMAP_HELVETICA_18、1 + 48)