[ODE] ODE behaving differently for different renderers

gl gl at ntlworld.com
Fri Feb 23 08:21:08 MST 2007


>> D3DCREATE_FPU_PRESERVE
>>
>
> This flag is dangerous, because it only affects the create call -- not
> all possible calls into DirectX. If you care about the precision and
> rounding mode, set them manually each time you begin your
> collision/physics step.

'because it only affects the create call' doesn't sound right - it would 
make the flag pointless.

I was always under the impression it meant that each D3D call set the the 
FPU mode to what it required internally, and restored it to the previous 
state when it returned.

However, according to the latest docs, it actually means that D3D will *not* 
change the current mode, even internally:

"Forces Direct3D to not change the floating-point unit (FPU) control word, 
*running the pipeline using the precision of the calling thread*. Without 
this flag, Direct3D defaults to setting the FPU to single-precision 
round-to-nearest mode. Using this flag with the FPU in double-precision mode 
will reduce Direct3D performance.

Warning  Portions of Direct3D assume FPU exceptions are masked. Unmasking 
such exceptions may lead to undefined behavior."
--
gl 



More information about the ODE mailing list