55 #if wxCHECK_VERSION( 3, 3, 2 )
56 int eglMajor = 0, eglMinor = 0;
58 if( aCanvas->GetEGLVersion( &eglMajor, &eglMinor ) )
59 backend = wxString::Format(
"EGL %d.%d", eglMajor, eglMinor );
60 else if(
int glxVersion = aCanvas->GetGLXVersion() )
61 backend = wxString::Format(
"GLX %d.%d", glxVersion / 10, glxVersion % 10 );
64 #if wxUSE_GLCANVAS_EGL
67 if(
int glxVersion = aCanvas->GetGLXVersion() )
68 backend = wxString::Format(
"GLX %d.%d", glxVersion / 10, glxVersion % 10 );
80#if defined( GLAD_GLX )
82 if( !wxGLCanvas::GetGLXVersion() )
85 if( Display* dpy = wxGetX11Display() )
87 if( !gladLoaderLoadGLX( dpy, DefaultScreen( dpy ) ) )
90 XID drawable = aCanvas->GetXWindow();
92 if( glXSwapIntervalEXT && glXQueryDrawable && drawable )
94 if( aVal == -1 && !GLAD_GLX_EXT_swap_control_tear )
97 unsigned clampedInterval;
98 glXSwapIntervalEXT( dpy, drawable, aVal );
99 glXQueryDrawable( dpy, drawable, GLX_SWAP_INTERVAL_EXT, &clampedInterval );
103 unsigned lateSwapsEnabled = 0;
104 glXQueryDrawable( dpy, drawable, GLX_LATE_SWAPS_TEAR_EXT, &lateSwapsEnabled );
106 if( lateSwapsEnabled )
107 clampedInterval = -1;
110 return clampedInterval;
113 if( glXSwapIntervalMESA && glXGetSwapIntervalMESA )
118 if( !glXSwapIntervalMESA( aVal ) )
122 if( glXSwapIntervalSGI )
127 if( !glXSwapIntervalSGI( aVal ) )
132#elif defined( GLAD_WGL ) && defined( GLAD_GL )
134 if( !gladLoaderLoadWGL( aCanvas->GetHDC() ) )
137 if( !gladLoaderLoadGL() )
140 const GLubyte* vendor = glGetString( GL_VENDOR );
141 const GLubyte* version = glGetString( GL_VERSION );
143 if( wglSwapIntervalEXT )
145 wxString vendorStr, versionStr;
148 vendorStr = wxString(
reinterpret_cast<const char*
>( vendor ) );
151 versionStr = wxString(
reinterpret_cast<const char*
>( version ) );
153 if( aVal == -1 && ( !wxGLCanvas::IsExtensionSupported(
"WGL_EXT_swap_control_tear" ) ) )
157 if( aVal == -1 && vendorStr == wxS(
"ATI Technologies Inc." ) )
159 wxArrayString parts = wxSplit( versionStr.AfterLast(
' ' ),
'.', 0 );
161 if( parts.size() == 4 )
165 if( parts[0].ToLong( &majorVer ) )
173 HDC hdc = wglGetCurrentDC();
174 HGLRC hglrc = wglGetCurrentContext();
178 int currentInterval = wglGetSwapIntervalEXT();
180 if( currentInterval != aVal )
182 wglSwapIntervalEXT( aVal );
183 currentInterval = wglGetSwapIntervalEXT();
186 return currentInterval;