Недавно я добавил в программу какой-то код DirectX, и теперь мои переменные типа double имеют диапазон/разрешение поплавка (.. или по меньшей мере меньший диапазон/разрешение, чем они были). Если я удалю инициализацию direct3D - «Direct3DCreate9 (D3D_SDK_VERSION)» - проблема исчезнет. Любое понимание? Благодарю.Прямое 3D-влияние на тип данных double
3
A
ответ
7
Direct3D изменит состояние FPU, чтобы заставить режим одиночной точности.
Если вы хотите сохранить режим двойной точности, используйте D3DCREATE_FPU_PRESERVE
при создании устройства D3D. Это будет иметь влияние на производительности D3D, хотя:
http://msdn.microsoft.com/en-us/library/bb172527(VS.85).aspx
1
Как объяснены в этой записи в блоге: Direct3D and the FPU, вы можете сказать, Direct3D не менять режим FPU с одинарной точностью:
К счастью, вы можете избежать всего этого, просто сообщив Direct3D, чтобы он вообще не возился с FPU. При создании устройства вы должны использовать флаг CreateFlags.FpuPreserve, чтобы сохранить двойную точность CLR и работать с вашим кодом, как вы ожидаете.