void S9xOpenGLDisplayDriver::swap_control (int enable) { glSwapIntervalProc glSwapInterval = NULL; const char *ext_str; ext_str = glXQueryExtensionsString (display, DefaultScreen (display)); /* We try to set this with both extensions since some cards pretend * to support both, but ignore one. */ if (strstr (ext_str, "GLX_MESA_swap_control")) { glSwapInterval = (glSwapIntervalProc) glGetProcAddress ((GLubyte *) "glXSwapIntervalMESA"); if (glSwapInterval) glSwapInterval (enable ? 1 : 0); } else if (strstr (ext_str, "GLX_SGI_swap_control")) { glSwapInterval = (glSwapIntervalProc) glGetProcAddress ((GLubyte *) "glXSwapIntervalSGI"); if (glSwapInterval) { glSwapInterval (enable ? 1 : 0); } } return; }
void GLGSRender::OnInitThread() { m_context = new wxGLContext(m_frame->GetCanvas()); m_frame->GetCanvas()->SetCurrent(*m_context); InitProcTable(); glEnable(GL_TEXTURE_2D); glEnable(GL_SCISSOR_TEST); glSwapInterval(Ini.GSVSyncEnable.GetValue() ? 1 : 0); }
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 GLGSRender::OnInitThread() { m_context = m_frame->GetNewContext(); m_frame->SetCurrent(m_context); InitProcTable(); glEnable(GL_TEXTURE_2D); glEnable(GL_VERTEX_PROGRAM_POINT_SIZE); glGenTextures(1, &g_depth_tex); glGenTextures(1, &g_flip_tex); #ifdef _WIN32 glSwapInterval(Ini.GSVSyncEnable.GetValue() ? 1 : 0); // Undefined reference: glXSwapIntervalEXT /*#else if (GLXDrawable drawable = glXGetCurrentDrawable()){ glXSwapIntervalEXT(glXGetCurrentDisplay(), drawable, Ini.GSVSyncEnable.GetValue() ? 1 : 0); }*/ #endif }