Прямой 3D, влияющий на тип данных double - PullRequest
3 голосов
/ 18 февраля 2009

Я недавно добавил код DirectX в свою программу, и теперь мои переменные с двойным типом данных имеют только диапазон / разрешение с плавающей запятой (или, по крайней мере, меньший диапазон / разрешение, чем раньше). Если я удалю инициализацию direct3D - «Direct3DCreate9 (D3D_SDK_VERSION)» - проблема исчезнет. Любое понимание? Спасибо.

Ответы [ 2 ]

7 голосов
/ 18 февраля 2009

Direct3D изменит состояние FPU для включения режима одинарной точности.

Если вы хотите сохранить режим двойной точности, используйте D3DCREATE_FPU_PRESERVE при создании устройства D3D. Это повлияет на производительность D3D:

http://msdn.microsoft.com/en-us/library/bb172527(VS.85).aspx

1 голос
/ 18 февраля 2009

Как объясняется в этой записи блога: Direct3D и FPU , вы можете указать Direct3D не изменять режим FPU с одинарной точностью:

К счастью, вы можете избежать всего этого, просто сказав Direct3D вообще не связываться с FPU. При создании устройства вы должны использовать флаг CreateFlags.FpuPreserve, чтобы сохранить двойную точность CLR и заставить ваш код функционировать так, как вы ожидаете.

...