我使用 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);