Direct3D ID3DXFont-> Windows XP上的DrawText崩溃

时间:2011-07-19 02:02:26

标签: windows fonts directx

我正在尝试从文件中加载字体然后在Direct3D中使用它,它在我的Windows 7机器上运行得很好,但是如果我在XP SP2机器上尝试它,那么第一次调用{{1}将返回0(表示失败),第二次尝试将导致程序崩溃。

Windows XP上Direct3D中的导入字体是否有一些限制?有没有办法可以得到一些有用的错误代码,因为DrawText返回0本身并不是很有帮助。

供参考,这是我的字体导入代码:

DrawText

以下是我创建if (AddFontResourceEx("ttfFiles/tf2Build.ttf", FR_PRIVATE, 0) == 0) { // Throw exception. } 对象的方法(也会返回没有问题):

ID3DXFont

编辑:我设法让它在XP中的调试器下发生,这是一个非常可怕的错误:

  

DirectFont.exe中出现未处理的“System.AccessViolationException”类型异常   附加信息:尝试读取或写入受保护的内存。这通常表明其他内存已损坏。

这是堆栈跟踪:

  

usp10.dll!ClientData :: GetOtlTable()+ 0x35 bytes
  usp10.dll!otlResourceMgr :: getOtlTable()+ 0x7a bytes
  usp10.dll!SubstituteOtlChars()+ 0x1af bytes
  usp10.dll!OtlShape()+ 0x3c5 bytes
  D3DX9_43.dll!D3DXCore :: CFont :: DrawTextAW()+ 0x5aa字节   D3DX9_43.dll!D3DXCore :: CFont :: DrawTextA()+ 0x26 bytes

1 个答案:

答案 0 :(得分:1)

问题可能出在绘图循环中,而不是初始化。在drawtext调用处放置一个断点,并在第二次调用时查找任何无效参数。