0 Replies Latest reply on Jun 17, 2009 8:13 AM by darkpotpot

    strange calcul behavior with vista64 and opengl

    darkpotpot

      Hello everybody,

      I'm a developer in a company which is making tools for the video game industry. I'm currently working on a tool written in python and using panda3D game engine.

      I have a problem with this tool on a Vista64 OS with an ATI graphic card. Cause an example is better than word, here is the code I'm launching :

      a = 0.1
      for i in range(10) :
          print a
          a += 0.1
      import direct.directbase.DirectStart # < = Here is the call to the graphic engine
      b = 0.1
      for i in range(10) :
          print b
          b += 0.1

      and the output is :

      0.1
      0.2
      0.3
      0.4
      0.5
      0.6
      0.7
      0.8
      0.9
      1.0

      DirectStart: Starting the game.
      Warning: DirectNotify: category 'Interval' already exists
      Known pipe types:
      wglGraphicsPipe
      (all display modules loaded.)
      <libpanda.GraphicsPipeSelection object at 0x024EA638>
      :util(warning): Adjusting global clock's real time by 3.69549e-006 seconds.
      0.1
      0.20000000298
      0.300000011921
      0.40000000596
      0.5
      0.600000023842
      0.700000047684
      0.800000071526
      0.900000095367
      1.00000011921

      So, the problem is that, when the openGL context is started, the calcul is not correct. One of panda3D's developer told me it was a graphic context problem, in which it forces the FPU into single-precision mode (in fact, a driver problem). So all my calculations from then on are performed in single-precision, even if they are doubles. Of course it's not a critical problem on this example, but in my application it's a much bigger problem cause nothing is working.

      I did a lot of test with other configuration (Vista32 + ATI, XP32 + ATI, VISTA64 + NVidia, VISTA3 + NVIDIA, XP32 + NVIDIA, LINUX32 + ATI, LINUX32 + NVIDIA) and the only configuration with a problem is Vista 64 bits with an ATI graphic card.

      So, is it a known problem ? Is there something to do in order to solve it easily ? Cause for now, the only thing we can say to our client is that our tool is not working on Vista 64 with an ATI graphic card and the best way for them is to use an NVidia graphic card instead.

      I hope my post is clear. If you have any question on how making this example works to test it (or anything else), feel free to ask.

      Thanks in advance.