From: osg-users-boun...@lists.openscenegraph.org
[mailto:osg-users-boun...@lists.openscenegraph.org] On Behalf Of Tanguy
Fautre
Sent: Thursday 29 January 2009 12:23
To: OpenSceneGraph Users
Subject: Re: [osg-users] MSVC v9

 

Apparently, it's also broken on VC8.

 

I've reduced the size of the example program,  removed the OSG
dependency, and getting ready to submit to MS.

 

T

 

 

From: osg-users-boun...@lists.openscenegraph.org
[mailto:osg-users-boun...@lists.openscenegraph.org] On Behalf Of Tanguy
Fautre
Sent: Thursday 29 January 2009 11:43
To: OpenSceneGraph Users
Subject: Re: [osg-users] MSVC v9

 

Hi Guy,

 

I was able to reproduce the problem on my computer too.

You got my colleagues and I quite puzzled. At this point it's very
tempting to say it's a compiler bug.

 

I'll do some more investigation. If you don't mind, I'll submit this bug
to Microsoft if we cannot fix it.

 

 

Tanguy

 

 

From: osg-users-boun...@lists.openscenegraph.org
[mailto:osg-users-boun...@lists.openscenegraph.org] On Behalf Of Guy
Wallis
Sent: Thursday 29 January 2009 03:38
To: OpenSceneGraph Users
Subject: [osg-users] MSVC v9

 

First, sorry Jan!

 

I'm new to mailing lists and assumed that threads were generated on the
basis of the subject line not who I replied to. Thanks for pointing out
my mistake.

 

 

 

 

Second, thanks to Tanguy and Ralph for suggestions.

 

I'm using an old 2.8 Ghz Pentium 4 - so not a dual core problem. But the
error does remind me of threading issues I used to have with
multiprocessor IRIX machines.

 

I tried using the volatile type qualifier but then I got a load of
conversion errors because MSVC++ v9 didn't recognise the variable as an
osg::Vec3 anymore:

 

.\dodec.cpp(78) : error C2678: binary '-' : no operator found which
takes a left-hand operand of type 'volatile osg::Vec3' (or there is no
acceptable conversion)

        C:\Program Files\OpenSceneGraph\include\osg/Vec3f(152): could be
'const osg::Vec3f osg::Vec3f::operator -(const osg::Vec3f &) const'

        C:\Program Files\OpenSceneGraph\include\osg/Vec3f(167): or
'const osg::Vec3f osg::Vec3f::operator -(void) const'

 

 

I've distilled the problem into a pretty simple program - I don't even
need to pop up a window. Some things might look a little odd, but almost
any changes from this point result in correct behaviour. I'm expecting a
list of coordinates from (0.0, 0.0, 0.0) to (11.0, 11.0, 11.0) but as
you'll hopefully see, I get the central part of the array not updating
properly.

 

 

#include <osg/Geometry>

 

osg::Vec3 vc[12];

 

int main( int argc, char **argv )

{

      int a;

      osg::Vec3   vt[12], p;

 

      for(a=0;a<12;a++){

            vc[a].set((float)a, (float)a, (float)a+1.0f);

      }

 

      p = osg::Vec3(0.0f,0.0f,1.0f);

      vt[0] = vc[0]-p;

      for(a=1;a<12;a++){

            vt[a] = vc[a]-p;

      }

      for(a=0;a<12;a++){

            printf("%5.2f %5.2f %5.2f\n", vt[a].x(), vt[a].y(),
vt[a].z());

      }

      return 0;

}

 

Two crucial steps are the vc[a]-p stage, and using the local variable vt
for printing because otherwise the array updates correctly.

 

Any ideas? Such as leave it for Microsoft to sort out!

 

Thanks,

 

Guy

 

_______________________________________________
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to