On Nov 19, 2007 9:25 AM, Ákos Maróy <[EMAIL PROTECTED]> wrote:
> Paul Martz wrote:
> > Vsync is usually on by default, can be toggled on or off by some driver
> > options, and can also sometimes be toggled by OpenGL extensions.
> but does this mean that if I call rendering blocks unti the next vsync
> clock tick?

OpenGL drivers have a FIFO, your app fills the fifo with tokens and
data, at the end of the frame you send in a swap buffers token and
this goes into the FIFO with everything else.  Normally the swap
buffers call itself doesn't block (although some implementations do
this), but the FIFO itself can only be cleared at the rate for one
swap buffers call per frame so it'll fill and once filled up it will
effectively block until previous frame was begun dispatching.  The
driver may allow several frames worth data in the fifo before block,
this is driver dependent, and also dependent on just how data you have
to pass to OpenGL- if you have massive models the CPU will be block on
the FIFO right on the same frame rather than more than one frame begin
backed in the FIFO.

The end result of this is simpler though - put vsync on, and your
frame loop will block and should iddle while its waiting for the FIFO
to begin accepting new data.  Some OpenGL drivers  have been known to
CPU resources when waiting rather than idling - ATI drivers were doing
this for a while, but I believe this has now been fixed.

osg-users mailing list

Reply via email to