我正在尝试向自定义游戏引擎添加字体支持。我在VS2012中使用C ++和DirectX 9。问题:创建ID3DXFont对象时,必须分别指定字符的宽度和高度,但是不同字体的长宽比(宽度/高度)不同,从而使一种字体延伸,而另一种则正常。
我尝试在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 );
此代码尚未修改,它是操作上面两张图片显示的文本的代码。
编辑:另外,忘记添加:如果您看到一个同性恋者,您会骚扰他/她吗?没有?好吧,所以不要对想要旧平台支持的人大吼大叫。
答案 0 :(得分:0)
好的,所以我错过了Microsoft的关键帮助:DirectX示例(来自DirectX SDK)。
很明显,有一种关于如何绘制文本的方法,解决方案是只为width参数输入0:
D3DXCreateFont(
m_context->getD3Ddevice(),
size, 0, // In order, height & width
FW_REGULAR,
0,
false,
DEFAULT_CHARSET,
OUT_DEFAULT_PRECIS,
DRAFT_QUALITY,
DEFAULT_PITCH | FF_DONTCARE,
m_name,
&f );