wglUseFontBitmaps を使用して OpenGL で描画するフォントは、すべての文字に等しいスペース (幅) を使用するため、「.」たとえば、「M」と同じくらいのスペースが必要です。フォント作成のピッチ パラメータを に変更しましたVARIABLE_PITCH
が、何も変わりません。実際に wglUseFontBitmaps で実行できますか、それとも、生成されたすべてのビットマップが等しいスペースを取るという性質ですか?
さらに、ラスター化されたビットマップ テキストの幅/高さを GetTextExtentPoint32W() でクエリしています。返される幅は問題ありませんが、高さが常に大きすぎます。黒いテキストの後ろに明るい四角形を描いて、3D シーン内で常に読めるようにしています。質問された高さはなぜそんなに大きいのですか? 上位文字用に予約されているスペースは、この「É」のようなものですか?
私のセットアップ:
HFONT font; // Windows Font ID
font = CreateFont( -12, // Height Of Font
0, // Width Of Font
0, // Angle Of Escapement
0, // Orientation Angle
FW_EXTRALIGHT, // Font Weight
FALSE, // Italic
FALSE, // Underline
FALSE, // Strikeout
ANSI_CHARSET, // Character Set Identifier
OUT_TT_PRECIS, // Output Precision
CLIP_DEFAULT_PRECIS, // Clipping Precision
ANTIALIASED_QUALITY, // Output Quality
FF_DONTCARE | VARIABLE_PITCH, // Family And Pitch
(LPCWSTR)L"Arial"); // Font Name
SelectObject(this->hDeviceContext, font);
//init display lists for text drawing
bool createFontLists = wglUseFontBitmaps(this->hDeviceContext, 0, 255, 1000);