【发布时间】:2018-05-11 13:51:39
【问题描述】:
当我调用 IDirect3D9::CreateDevice 时,我得到 FPU 异常并且我的应用程序崩溃(“浮点除以零”)。
自最新更新 Windows 10(2018 年 4 月)和具有双显卡(NVIDIA + Intel)的笔记本电脑以来发生。
我们找到了一个临时解决方案 - 通过在我们的应用启动时调用 Set8087CW($133F) 来全局禁用我们应用中的所有 FPU 异常。
我确信我们与 DirectX 一起工作的代码是正确的,并且我传递给 CreateDevice() 的参数没有错误。我还将 D3DCREATE_FPU_PRESERVE 标志传递给 CreateDevice()。
任何以前版本的 Windows 10 或 Windows 8/7/Vista/XP 都不会出现此问题。如果为我们的应用手动选择 Intel 显卡而不是 NVIDIA,也不会出现此问题。
我们的应用是在 Delphi (Pascal) 上编写的。
【问题讨论】:
-
那么这个异常的调用栈是什么?您使用哪些参数来创建设备?
-
这很可能是 NVIDIA 驱动程序中的错误。调用堆栈将有助于追踪它。
-
感谢您的回复。我们使用 Delphi,很难检查异常发生的确切位置。我们只看到例外。
标签: exception directx directx-9 fpu