赤い本を読んでも、OpenGL を使用してフォントを描画するときの「ラスター位置」がわかりません。ラスター位置とは glrasterpos2f と glvertex2f の違いは何ですか? GL_CURRENT_RASTER_POSITION とは? この API を使用してフォントを描画する必要があるのはなぜですか? 誰かがこれを説明できれば幸いです。
1 に答える
古いバージョンの OpenGL には、多数の「ラスター」操作があり、プリミティブ セットアップ全体を経由せずに、フレームバッファーのピクセル ラスターで直接ピクセル操作を実行します。
ラスター位置は、次のラスター操作が開始されるウィンドウ座標の位置です。たとえば、glDrawPixelsは、置換ピクセル データが配置される左下隅を定義するラスター位置を使用して、フレーム バッファーの一部をオーバードローします。そのglBitmapと同様に、ピクセルの値を glColor に置き換え、同じステップでラスター位置を進めることができます。
glRasterPos でラスター位置を設定する場合、この呼び出しに渡された座標は頂点座標と同じ変換パイプラインにかけられ、ウィンドウ座標のラスター位置が生成されます。ラスター位置のみが変換されることが重要です。実際のラスター操作は「ピクセル空間」で行われ、変換されません。また、glRasterPos に渡された座標がたまたまクリップされた場合、次のラスター操作は No-Ops になります。
ラスター位置をウィンドウ座標に直接設定したい場合は、glWindowPosを使用できます。
この API を使用してフォントを描画する必要があるのはなぜですか?
glBitmapを使用してビットマップ フォントを描画するのは簡単であるため、以前はフォント描画の非常に一般的な方法でした。したがって、ラスター操作を使用してフォントを描画する場合は、ラスター位置を設定する必要があります。
ただし、OpenGL の最新バージョン (バージョン 3 以降) では、すべてのラスター演算が削除されています。これは、最新バージョンの OpenGL でテキストを描画するために別の方法を使用する必要があることも意味します。