2008-08-18 16 views
19

を使用する単純なOpenGLアプリケーションを作成しています。自分自身のフォントレンダリングコードをロールしたくない代わりに、GLUTと一緒に出荷される単純なビットマップフォントを使用したいと思います。それらを働かせるためのステップは何ですか?GLUTビットマップフォントを使用

答えて

27

GLUTビットマップフォントを使用したOpenGLでは、簡単なテキスト表示が簡単です。これらは単純な2Dフォントであり、ではないの中にはあなたの3D環境ではが適しています。ただし、表示ウィンドウにオーバーレイする必要があるテキストには最適です。

ここでGLUTウィンドウ上の緑に着色されたエリック・カートマンの好きな言葉を表示するには、サンプルの手順は次のとおりです。私たちは、スクリーン座標でのラスタ位置を設定することがあります

。したがって、2Dレンダリング用の投影とモデルビュー行列を設定します。

glMatrixMode(GL_PROJECTION); 
glPushMatrix(); 
glLoadIdentity(); 
gluOrtho2D(0.0, WIN_WIDTH, 0.0, WIN_HEIGHT); 

glMatrixMode(GL_MODELVIEW); 
glPushMatrix(); 
glLoadIdentity(); 

フォントの色を設定します。

glColor3f(0.0, 1.0, 0.0); // Green 

テキストを表示するウィンドウの場所を設定します。これは、スクリーン座標でラスタ位置を設定することによって行われます。ウィンドウの左下隅は(0、0)です。

glRasterPos2i(10, 10); 

は、フォントを設定し、glutBitmapCharacterを使用して文字列の文字を表示します。

string s = "Respect mah authoritah!"; 
void * font = GLUT_BITMAP_9_BY_15; 
for (string::iterator i = s.begin(); i != s.end(); ++i) 
{ 
    char c = *i; 
    glutBitmapCharacter(font, c); 
} 

マトリックスを元に戻します。

glMatrixMode(GL_MODELVIEW); 
glPopMatrix(); 

glMatrixMode(GL_PROJECTION); 
glPopMatrix(); 
+2

+1サウスパーク –

+0

を見るために、私は3Dの世界座標におけるいくつかのオブジェクトを持っていると私は、ビューポート上の固定位置にオーバーレイテキストを表示する必要があります。私はこのアプローチを試みましたが、それは私に固定オーバーレイテキストを与えません。それどころか、カメラの動きに応じて回転するテキストを私に与えます。どのようにこれを動作させるのですか? – Papouh

+0

@Papouh:それは変です。私が使用しているコールは2Dであるため、ウィンドウに表示されます。彼らは3Dで移動してはいけません。 –

関連する問題