0

openglのフォント用のFTGLライブラリで苦労しています。たとえば、画面の左下以外の場所にテキストを配置する方法がまだわかりません。現在、pixmapフォントを使用しており、実験を開始しましたglRasterPos

次のコードは、左下のテキストを白で表示するという点で「機能」します。

ftglRenderFont(ftgl_freesans, "HELLO WORLD!", FTGL_RENDER_ALL);

次の例では、テキストはまったく表示されません。

float r[4];
glGetFloatv(GL_CURRENT_RASTER_POSITION, r);
glRasterPos4fv(r);
ftglRenderFont(ftgl_freesans, "HELLO WORLD!", FTGL_RENDER_ALL);

よくわかりません!何も変わらないはずですが、なぜフォントがレンダリングされないのですか?

4

1 に答える 1

1

glRasterPosは、呼び出し時にマトリックススタックの現在の値によって変換され、値を「設定」するだけではありません。

現在のラスター位置の値をクエリすると、すでに変換された位置が返されます。そのため、呼び出しglRasterPos(glGet(GL_CURRENT_RASTER_POSITION))は、現在のウィンドウスペースの位置を変換行列に再度通す効果がありますが、これは必要なことではありません。

モデルビューと射影行列をIDに設定した場合、get/set操作は期待どおりに機能するはずです。

MSDNからの引用:

glRasterPosによって提示されるオブジェクト座標は、glVertexコマンドのオブジェクト座標と同じように扱われます。それらは、現在のモデルビューと投影行列によって変換され、クリッピングステージに渡されます。頂点がカリングされていない場合は、ウィンドウ座標に投影およびスケーリングされ、新しい現在のラスター位置になります。

于 2012-10-19T23:27:40.370 に答える