Hi Brad, What happens when you run SingleThreaded or CullDrawThreadPerContext?
Robert. On Thu, Feb 3, 2011 at 6:27 PM, Brad Colbert <[email protected]> wrote: > One more update: > > I modified the code slightly in both the Pre and Post draw callbacks to > compare frame numbers. I would expect that they would have the same number, > but they do not at times. > > I also added a bit of code to the PostDraw to compare the last frame number > to the current. The results are not what I would expect. > > Again, this is DrawThreadPerContext. > > Output snipet: > > Pre 0x7fffe5f49f90 : 1501 > Pos 0x7fffe66f6ea0 : 1501 > > Pre 0x7fffe5f49f90 : 1502 > Pos 0x7fffe66f6ea0 : 1503 ** Not Next ** previous frame was 1501 > > Pre 0x7fffe5f49f90 : 1503 > Pos 0x7fffe66f6ea0 : 1503 ** Not Next ** previous frame was 1503 > > Pre 0x7fffe5f49f90 : 1504 > Pos 0x7fffe66f6ea0 : 1504 > > Pre 0x7fffe5f49f90 : 1505 > Pos 0x7fffe66f6ea0 : 1506 ** Not Next ** previous frame was 1504 > > -B > > > -----Original Message----- > From: [email protected] > [mailto:[email protected]] On Behalf Of Brad Colbert > Sent: Thursday, February 03, 2011 10:11 AM > To: 'OpenSceneGraph Users' > Subject: Re: [osg-users] Why does Draw skip frame number as reported from > FrameStamp::getFrameNumber()? > > Simplifying my example, my PostDrawCallback now simply prints the pointer > value of *this (to determine that it's the same PostDrawCallback instance) > and the frame number and I get the following (snipet): > > 0x2a9a400:896 > 0x2a9a400:896 > 0x2a9a400:898 > 0x2a9a400:899 > 0x2a9a400:899 > 0x2a9a400:901 > 0x2a9a400:902 > 0x2a9a400:902 > 0x2a9a400:904 > > Clearly it's the same callback, there is only one camera, and the frame > number is repeating and skipping. > > -B > > > -----Original Message----- > From: [email protected] > [mailto:[email protected]] On Behalf Of Robert > Osfield > Sent: Thursday, February 03, 2011 9:14 AM > To: OpenSceneGraph Users > Subject: Re: [osg-users] Why does Draw skip frame number as reported from > FrameStamp::getFrameNumber()? > > Hi Brad, > > I couldn't make sense of your original email and same with this one, > I'm confused by the role of your map and would suspect that your > method is the cause of the odd output. > > The way I'd check the current frame number is to simply have a draw > callback directly output the frame number. > > Robert. > > On Thu, Feb 3, 2011 at 5:07 PM, Brad Colbert <[email protected]> wrote: >> I'm resending this with a new Subject: line. Worried that it was a little >> too cryptic. >> >> I'm trying to understand how the threading works in OSG when >> DrawThreadPerContext with respect to which process is on which frame at >> which time. It appears to me that the draw frame is skipping values in the >> frame count, as reported from FrameStamp::getFrameNumber(). >> >> My test code fills a map<int,bool> (the int is the frame time, and bool is >> just there ;) ) in a cull traversal by using the following code: >> >> // >> const osg::FrameStamp* frameStamp = cv->getFrameStamp(); >> >> frameMap[frameStamp->getFrameNumber()] = true; >> >> >> // >> And in a PostDrawCallback on a camera I'm printing out the current frame # : >> the frames #'s in the map, and then I clear the current frame number entry: >> >> // Get the current frame number >> osg::FrameStamp* frameStamp = renderInfo.getState()->getFrameStamp(); >> >> int frameNumber = frameStamp->getFrameNumber(); >> >> std::cout << frameNumber << " : "; >> >> std::map<int, bool>::const_iterator framei = frameMap.begin(); >> >> for (; framei != frameMap.end(); framei++ ) >> std::cout << framei->first << ", "; >> >> std::cout << "\n\n"; >> >> frameMap.erase( frameNumber ); >> >> >> The following is the output on the console. Again, the first number is the >> current frame number in the PostDrawCallback of the camera. The following >> numbers, on the same line, are the frame numbers placed in the map during >> the cull traversal. >> >> >> 746 : >> >> 747 : >> >> 749 : 748, 749, >> >> 750 : 748, 750, >> >> 751 : 748, 751, >> >> 752 : 748, 752, >> >> 753 : 748, 753, >> >> 754 : 748, >> >> 755 : 748, 755, >> >> 756 : 748, >> >> 757 : 748, 756, 757, >> >> 758 : 748, 756, 758, >> >> 759 : 748, 756, 759, >> >> 759 : 748, 756, >> >> 761 : 748, 756, 760, 761, >> >> >> My question is, why is the draw skipping frame numbers? >> >> --- >> Brad Colbert >> Renaissance Sciences Corporation >> >> _______________________________________________ >> osg-users mailing list >> [email protected] >> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org >> > _______________________________________________ > osg-users mailing list > [email protected] > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org > _______________________________________________ > osg-users mailing list > [email protected] > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org > _______________________________________________ > osg-users mailing list > [email protected] > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org > _______________________________________________ osg-users mailing list [email protected] http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

