我最近在我的程序中添加了一些 DirectX 代码,现在我的双精度数据类型变量只有浮点数的范围/分辨率(.. 或至少比以前更小的范围/分辨率)。如果我删除 direct3D 初始化 - “Direct3DCreate9(D3D_SDK_VERSION)” - 问题就消失了。有什么见解吗?谢谢。
Jeff
问问题
740 次
2 回答
7
Direct3D 将修改 FPU 状态以强制单精度模式。
如果要保留双精度模式,D3DCREATE_FPU_PRESERVE
请在创建 D3D 设备时使用。这将对 D3D 的性能产生影响:
http://msdn.microsoft.com/en-us/library/bb172527(VS.85).aspx
于 2009-02-18T00:07:29.507 回答
1
正如这篇博文所述:Direct3D and the FPU,您可以告诉 Direct3D 不要将 FPU 模式更改为单精度:
幸运的是,您可以通过简单地告诉 Direct3D 根本不要弄乱 FPU 来避免所有这些。创建设备时,您应该使用 CreateFlags.FpuPreserve 标志来保持 CLR 的双精度,并使您的代码按预期运行。
于 2009-02-18T00:11:26.003 回答