void X11Window::setVerticalSync(bool enable) { #ifdef OPENGL_ES //TODO #else typedef GLint (*glSwapIntervalProc)(GLint); glSwapIntervalProc glSwapInterval = NULL; if(isExtensionSupported("GLX_MESA_swap_control")) glSwapInterval = (glSwapIntervalProc)getExtensionProcAddress("glXSwapIntervalMESA"); else if(isExtensionSupported("GLX_SGI_swap_control")) glSwapInterval = (glSwapIntervalProc)getExtensionProcAddress("glXSwapIntervalSGI"); if(glSwapInterval) glSwapInterval(enable ? 1 : 0); #endif }
void WIN32Window::setVerticalSync(bool enable) { #ifdef OPENGL_ES eglSwapInterval(m_eglDisplay, enable ? 1 : 0); #else if(!isExtensionSupported("WGL_EXT_swap_control")) return; typedef BOOL (WINAPI * wglSwapIntervalProc)(int); wglSwapIntervalProc wglSwapInterval = (wglSwapIntervalProc)getExtensionProcAddress("wglSwapIntervalEXT"); if(!wglSwapInterval) return; wglSwapInterval(enable ? 1 : 0); #endif }
bool WIN32Window::isExtensionSupported(const char *ext) { #ifdef OPENGL_ES //TODO return false; #else typedef const char* (WINAPI * wglGetExtensionsStringProc)(); wglGetExtensionsStringProc wglGetExtensionsString = (wglGetExtensionsStringProc)getExtensionProcAddress("wglGetExtensionsStringEXT"); if(!wglGetExtensionsString) return false; const char *exts = wglGetExtensionsString(); if(exts && strstr(exts, ext)) return true; return false; #endif }