基本的な HUD のようなテキストを OpenGL/C++ プロジェクトに追加しようとしています。
したがって、私は決めました
glutBitmapCharacter( type, character)
私の好きな武器になります。
最も簡単に使用するには、以前のレンダリング領域に 2D マトリックスを追加する必要があることに気付きました。
glPushMatrix();
glLoadIdentity();
gluOrtho2D(0, 10, 0, 10);
これで 10*10 の 2D 立方体ができあがります。
glutBitmapCharacter が最後の文字位置を記憶して次の文字位置を追加するときに問題が発生しました。文字列を書き込んでいる間はかなり賢く、明らかにこの位置を覚えていて、私のテキストを一度だけ画面全体に飛ばします:)いたずら。
glRasterPos2f(x,y);
私が聞いたように、これをリセットするのは通常のことです.
コードを実行すると、奇妙なことが起こります。
glPushMatrix();
glLoadIdentity();
gluOrtho2D(0, 10, 0, 10);
string message ="mmh... Pie...";
float poss[3];
glRasterPos3f(0.0, 0.0, 0.0);
glGetFloatv(GL_CURRENT_RASTER_POSITION, poss);
std::cout<< "X" <<(GLfloat) poss[0] << " Y"<<poss[1] << " Z"<<poss[2] << std::endl;
for( size_t i = 0; i < message.size(); ++i ) {
glutBitmapCharacter(GLUT_BITMAP_HELVETICA_18, message[i]);
}
glPopMatrix();
私のテキストは表示されません。実際、結果として得られる X、Y、および Z (Z が必要かどうかもわかりません..とにかく 0 にする必要があります) はすべて inf (無限大) です。独自の glRasterPos を設定しなければ、画面を離れる以外は問題なく動作します。私の戻り位置は、予想どおり、アップカウント X および 0 、 0 です。
それで、これについての取り決めは何ですか、私は正確に何を間違っていますか?