caso WGL se describe en el answer by eugensk00.
Para CGL (MacOSX) consulte this answer para otra pregunta de SO.
Para EGL hay eglSwapInterval() función, pero al parecer (ver this y this) no garantiza resultado sin desgarramiento - sólo espera período determinado (tal vez es sólo debido a la rotura de los conductores).
Para GLX (Linux con X11 etc.) hay al menos 3 extensiones similares para esto, con un grado de funcionalidad variable. La wiki de OpenGL actualmente solo muestra una, que no está soportada por Mesa < = 10.5.9 (y tal vez más). He aquí una lista de más extensión completa de funciones (que aparece en OpenGL wiki) al menos:
GLX_EXT_swap_control
Conjunto intervalo de intercambio por embutición por pantalla: glXSwapIntervalEXT(dpy, drawable, interval)
Obtenga el intervalo de intercambio actual: glXQueryDrawable(dpy, drawable, GLX_SWAP_INTERVAL_EXT, &interval)
Obtenga el intervalo de intercambio máximo: glXQueryDrawable(dpy, drawable, GLX_MAX_SWAP_INTERVAL_EXT, &maxInterval)
Desactivar Vsync: Conjunto interval
a 0
GLX_MESA_swap_control
Conjunto intervalo de intercambio por contexto: glXSwapIntervalMESA(interval)
Obtener intervalo de intercambio actual: glXGetSwapIntervalMESA()
obtener el máximo intervalo de swap: no soportado
Disable Vsync: juego de interval
a 0
GLX_SGI_swap_control
Set intervalo swap: glXSwapIntervalSGI(interval)
.
Obtener intervalo de intercambio actual: no soportado
Obtener intervalo máximo swap: no soportado
Disable Vsync: no soportado (interval==0
es un error)
Para Vsync adaptativa, ver OpenGL wiki.
En el primer fragmento de código si (strstr (_wglGetExtensionsString(), extension_name) == NULL) debe leer si (strstr (_wglGetExtensionsStringEXT(), extension_name) == NULL) - Sin embargo, gracias, esto me ayudó !!! – HoboBen
También usé wglGetProcAddress en lugar de LogGetProcAddress – HoboBen
No es una extensión de OpenGL, sino WGL (la API del sistema de ventanas de Microsoft Windows para OpenGL). El intercambio de memoria intermedia es, por su propia naturaleza, una operación específica del sistema de ventanas. En lo que se refiere a GL, simplemente se basa en un buffer frontal/posterior izquierdo/derecho o en algún FBO arbitrario. El sistema de ventanas es lo único con suficiente conocimiento del sistema host subyacente para sincronizar la presentación de los búferes dibujados con algún evento (en este caso, el retorno vertical del monitor). –