Nitro <[EMAIL PROTECTED]> wrote: >I can tell you more now. If I pass D3DCREATE_FPU_PRESERVE while creating >the DirectX device the bug does not appear. This flag means "Direct3D >defaults to single-precision round-to-nearest" (see [1]) mode. >Unfortunately it is not an option to pass this flag, I need the >performance boost it gives.
Using D3DCREATE_FPU_PRESERVE is extreamly unlikely to affect the performance of your code. Almost all 3D computation these days is done either on the video card or using SSE math on the CPU, neither which is affected by the use of this flag and the state of the FPU's precision setting. If you're mixing Python and Direct3D I would strongly recommend using D3DCREATE_FPU_PRESERVE. It will save you a lot of headaches because time.time() is probably not the only thing that will break. >Can somebody tell me how this interacts with python's time.time()? I >suppose it's some kind of double vs. float thing or some fpu asm code >issue... If you let Direct3D change the FPU settings, then the calculation made to compute the floating-point value returned by time.time() gets rounded to a 32-bit single-precision floating-point value. This means that number returned by time.time() only has 24 bits of precision, which for current time values, only gives you an accuracy of a hundred seconds or so. Ross Ridge -- l/ // Ross Ridge -- The Great HTMU [oo][oo] [EMAIL PROTECTED] -()-/()/ http://www.csclub.uwaterloo.ca/~rridge/ db // -- http://mail.python.org/mailman/listinfo/python-list