【发布时间】:2019-12-14 08:47:05
【问题描述】:
我正在尝试为我的自定义游戏引擎添加字体支持。我在 VS2012 中使用 C++ 和 DirectX 9。问题:当你创建一个ID3DXFont对象时,你必须分别指定字符的宽度和高度,但是不同字体的纵横比(宽度/高度)是不同的,从而使一种字体被拉伸,另一种正常。
- 拉伸的“OCR A Extended”字体:https://imgur.com/MC7hP8L
- 正常的“Pristina”字体:https://imgur.com/jHX2xFk
我尝试在 Google 和其他论坛上搜索可能的函数来从系统或其他来源获取这两个值,但没有运气...
现在,我正在手动输入:
ID3DXFont* f;
D3DXCreateFont(
m_context->getD3Ddevice(),
size, size / 4.0F, // this part is the issue
FW_REGULAR,
0,
false,
DEFAULT_CHARSET,
OUT_DEFAULT_PRECIS,
DRAFT_QUALITY,
DEFAULT_PITCH | FF_DONTCARE,
m_name,
&f );
这段代码没有修改过,就是操作上面两张图显示的文字的那个。
【问题讨论】:
-
"VS2012" - 哇,老派。您可能想要升级它并利用 C++17 以及过去(几乎)10 年来所做的所有改进..