59 #if wxCHECK_VERSION( 3, 3, 2 )
60 int eglMajor = 0, eglMinor = 0;
62 if( aCanvas->GetEGLVersion( &eglMajor, &eglMinor ) )
63 backend = wxString::Format(
"EGL %d.%d", eglMajor, eglMinor );
64 else if(
int glxVersion = aCanvas->GetGLXVersion() )
65 backend = wxString::Format(
"GLX %d.%d", glxVersion / 10, glxVersion % 10 );
68 #if wxUSE_GLCANVAS_EGL
71 if(
int glxVersion = aCanvas->GetGLXVersion() )
72 backend = wxString::Format(
"GLX %d.%d", glxVersion / 10, glxVersion % 10 );
84#if defined( GLAD_GLX )
86 if( !wxGLCanvas::GetGLXVersion() )
89 if( Display* dpy = wxGetX11Display() )
91 if( !gladLoaderLoadGLX( dpy, DefaultScreen( dpy ) ) )
94 XID drawable = aCanvas->GetXWindow();
96 if( glXSwapIntervalEXT && glXQueryDrawable && drawable )
98 if( aVal == -1 && !GLAD_GLX_EXT_swap_control_tear )
101 unsigned clampedInterval;
102 glXSwapIntervalEXT( dpy, drawable, aVal );
103 glXQueryDrawable( dpy, drawable, GLX_SWAP_INTERVAL_EXT, &clampedInterval );
107 unsigned lateSwapsEnabled = 0;
108 glXQueryDrawable( dpy, drawable, GLX_LATE_SWAPS_TEAR_EXT, &lateSwapsEnabled );
110 if( lateSwapsEnabled )
111 clampedInterval = -1;
114 return clampedInterval;
117 if( glXSwapIntervalMESA && glXGetSwapIntervalMESA )
122 if( !glXSwapIntervalMESA( aVal ) )
126 if( glXSwapIntervalSGI )
131 if( !glXSwapIntervalSGI( aVal ) )
136#elif defined( GLAD_WGL ) && defined( GLAD_GL )
138 if( !gladLoaderLoadWGL( aCanvas->GetHDC() ) )
141 if( !gladLoaderLoadGL() )
144 const GLubyte* vendor = glGetString( GL_VENDOR );
145 const GLubyte* version = glGetString( GL_VERSION );
147 if( wglSwapIntervalEXT )
149 wxString vendorStr, versionStr;
152 vendorStr = wxString(
reinterpret_cast<const char*
>( vendor ) );
155 versionStr = wxString(
reinterpret_cast<const char*
>( version ) );
157 if( aVal == -1 && ( !wxGLCanvas::IsExtensionSupported(
"WGL_EXT_swap_control_tear" ) ) )
161 if( aVal == -1 && vendorStr == wxS(
"ATI Technologies Inc." ) )
163 wxArrayString parts = wxSplit( versionStr.AfterLast(
' ' ),
'.', 0 );
165 if( parts.size() == 4 )
169 if( parts[0].ToLong( &majorVer ) )
177 HDC hdc = wglGetCurrentDC();
178 HGLRC hglrc = wglGetCurrentContext();
182 int currentInterval = wglGetSwapIntervalEXT();
184 if( currentInterval != aVal )
186 wglSwapIntervalEXT( aVal );
187 currentInterval = wglGetSwapIntervalEXT();
190 return currentInterval;