[ODE] ODE behaving differently for different renderers
Andreas Fredriksson
deplinenoise at gmail.com
Tue Feb 20 00:26:36 MST 2007
On 2/20/07, Hampus Soderstrom <hampus at sxp.se> wrote:
> I have not verified this but doesn't DirectX change the FPU precision
> when starting up?
It does, unless you tell it not to. I wouldn't recommend doing this,
because if DX9 triggers a FPU exception it can wreak havoc on its
internal state. What I've always done is to restore the precision
outside the rendering loop when needed.
Here's the flag to pass when creating the device if you're ok with the above:
D3DCREATE_FPU_PRESERVE
Forces Direct3D to not change the floating-point unit control word,
running the pipeline using the precision of the calling thread.
Without this flag, Direct3D defaults to setting the floating-point
unit to single-precision round-to-nearest mode. Using this flag with
the floating-point unit in double-precision mode will reduce Direct3D
performance.
Note Portions of Direct3D assume floating-point unit exceptions are
masked. Unmasking such exceptions may lead to undefined behavior.
HTH,
// Andreas
More information about the ODE
mailing list