Hi David,

See this:

http://www.donburns.net/OSG/Articles/Synchronization/index.html

In a nutshell, the two types of synchronization are 1) Synchronizing SwapBuffers to Vertical Retrace: This happens in the GPU asynchronous to the CPU.  2) Synchronizing the CPU to vertical retrace:  This happens in the CPU.

Blocking swapbuffers on vsync is accomplished through some driver setting.  Blocking the CPU on vertical retrace is attempted through the WaitVideoSyncSGI extension where it is available.  If it is not available then you need to do something like glFinish() after your SwapBuffers call.  This is not as efficient, however, as it requires a round trip to the GPU and the former simply waits for a kernel level signal from the vsync hardware.

-don

On 10/16/06, David Johansson <[EMAIL PROTECTED]> wrote:
Thank you Chris!

So, im guessing that "block-on-vsync" basically does the same thing as
vertical-sync but they sync in different ways?

As i understand from
" http://openscenegraph.net/pipermail/osg-users/2006-March/062743.html"

the "proper" way to get vertical-sync and to keep the program from
eating all cpu-power is to call the function that you described and
add an glFinish() at the end of my rendering loop or did i get
everything wrong?

David



On 10/16/06, Chris Hanson <[EMAIL PROTECTED]> wrote:
> David Johansson wrote:
> > Okay, it seems to work nice on my machine. Also, most (all?) games
> > using openGL can set V-Sync at runtime..
> > I'll get to tracing that 'v' key as soon as i have time, thanks for the
> > input!
>
>    I think that the 'v' key actually toggles "block-on-vsync", a different condition.
>
>    Here's the code I use:
>
> // Code from this cited message:
> // Date: Tue, 21 Mar 2006 21:07:35 -0800
> // From: "Farshid Lashkari" <[EMAIL PROTECTED]>
> // To: "osg users" < [email protected]>
> // Subject: Re: [osg-users] Can we toggle block on vsync using a RenderSurface and SceneView?
>
> typedef BOOL (APIENTRY *PFNWGLSWAPINTERVALFARPROC)( int );
> PFNWGLSWAPINTERVALFARPROC wglSwapIntervalEXT = NULL;
>
> // Enable (1) or disable (0) VSync
> // I believe this must be called with a valid GL context
> void setVSync(int interval)
> {
> const unsigned char *extensions = glGetString( GL_EXTENSIONS );
>
> if( extensions == 0 || strstr( (const char *)extensions, "WGL_EXT_swap_control" ) == 0 )
> return;
>
> wglSwapIntervalEXT = (PFNWGLSWAPINTERVALFARPROC)wglGetProcAddress("wglSwapIntervalEXT" );
> if( wglSwapIntervalEXT ) wglSwapIntervalEXT(interval);
> } // setVSync
>
>
> > David
>
>
> --
> Chris 'Xenon' Hanson aka Eric Hammil | http://www.3DNature.com/ eric at logrus
>   "I set the wheels in motion, turn up all the machines, activate the programs,
>    and run behind the scenes. I set the clouds in motion, turn up light and sound,
>    activate the window, and watch the world go 'round." -Prime Mover, Rush.
> _______________________________________________
> osg-users mailing list
> [email protected]
> http://openscenegraph.net/mailman/listinfo/osg-users
> http://www.openscenegraph.org/
>
_______________________________________________
osg-users mailing list
[email protected]
http://openscenegraph.net/mailman/listinfo/osg-users
http://www.openscenegraph.org/

_______________________________________________
osg-users mailing list
[email protected]
http://openscenegraph.net/mailman/listinfo/osg-users
http://www.openscenegraph.org/

Reply via email to