aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/android/mod.rs4
-rw-r--r--src/lib.rs24
-rw-r--r--src/osx/mod.rs4
-rw-r--r--src/win32/mod.rs10
-rw-r--r--src/x11/headless.rs5
-rw-r--r--src/x11/window/mod.rs5
6 files changed, 52 insertions, 0 deletions
diff --git a/src/android/mod.rs b/src/android/mod.rs
index cdd5293..8093d50 100644
--- a/src/android/mod.rs
+++ b/src/android/mod.rs
@@ -265,6 +265,10 @@ impl Window {
pub fn platform_display(&self) -> *mut libc::c_void {
self.display as *mut libc::c_void
}
+
+ pub fn get_api(&self) -> ::Api {
+ ::Api::OpenGlEs
+ }
}
#[unsafe_destructor]
diff --git a/src/lib.rs b/src/lib.rs
index b27ef97..bcfb11a 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -84,6 +84,14 @@ impl std::error::Error for CreationError {
}
}
+/// All APIs related to OpenGL that you can possibly get while using glutin.
+pub enum Api {
+ /// The classical OpenGL. Available on Windows, Linux, OS/X.
+ OpenGl,
+ /// OpenGL embedded system. Available on Linux, Android.
+ OpenGlEs,
+}
+
/// Object that allows you to build windows.
#[cfg(feature = "window")]
pub struct WindowBuilder<'a> {
@@ -457,6 +465,15 @@ impl Window {
pub unsafe fn platform_display(&self) -> *mut libc::c_void {
self.window.platform_display()
}
+
+ /// Returns the API that is currently provided by this window.
+ ///
+ /// - On Windows and OS/X, this always returns `OpenGl`.
+ /// - On Android, this always returns `OpenGlEs`.
+ /// - On Linux, it must be checked at runtime.
+ pub fn get_api(&self) -> Api {
+ self.window.get_api()
+ }
}
#[cfg(feature = "window")]
@@ -488,6 +505,13 @@ impl HeadlessContext {
pub fn get_proc_address(&self, addr: &str) -> *const libc::c_void {
self.context.get_proc_address(addr) as *const libc::c_void
}
+
+ /// Returns the API that is currently provided by this window.
+ ///
+ /// See `Window::get_api` for more infos.
+ pub fn get_api(&self) -> Api {
+ self.context.get_api()
+ }
}
#[cfg(feature = "headless")]
diff --git a/src/osx/mod.rs b/src/osx/mod.rs
index fbdedfd..c69486a 100644
--- a/src/osx/mod.rs
+++ b/src/osx/mod.rs
@@ -400,4 +400,8 @@ impl Window {
pub fn platform_display(&self) -> *mut libc::c_void {
unimplemented!()
}
+
+ pub fn get_api(&self) -> ::Api {
+ ::Api::OpenGl
+ }
}
diff --git a/src/win32/mod.rs b/src/win32/mod.rs
index 8339cb1..5ba5a26 100644
--- a/src/win32/mod.rs
+++ b/src/win32/mod.rs
@@ -41,6 +41,11 @@ impl HeadlessContext {
pub fn get_proc_address(&self, addr: &str) -> *const () {
self.0.get_proc_address(addr)
}
+
+ /// See the docs in the crate root file.
+ pub fn get_api(&self) -> ::Api {
+ ::Api::OpenGl
+ }
}
/// The Win32 implementation of the main `Window` object.
@@ -252,6 +257,11 @@ impl Window {
pub fn platform_display(&self) -> *mut libc::c_void {
unimplemented!()
}
+
+ /// See the docs in the crate root file.
+ pub fn get_api(&self) -> ::Api {
+ ::Api::OpenGl
+ }
}
#[unsafe_destructor]
diff --git a/src/x11/headless.rs b/src/x11/headless.rs
index e6479d6..78fb985 100644
--- a/src/x11/headless.rs
+++ b/src/x11/headless.rs
@@ -47,6 +47,11 @@ impl HeadlessContext {
})
}
}
+
+ /// See the docs in the crate root file.
+ pub fn get_api(&self) -> ::Api {
+ ::Api::OpenGl
+ }
}
impl Drop for HeadlessContext {
diff --git a/src/x11/window/mod.rs b/src/x11/window/mod.rs
index 7bce19f..f22d1f8 100644
--- a/src/x11/window/mod.rs
+++ b/src/x11/window/mod.rs
@@ -535,6 +535,11 @@ impl Window {
pub fn platform_display(&self) -> *mut libc::c_void {
self.display as *mut libc::c_void
}
+
+ /// See the docs in the crate root file.
+ pub fn get_api(&self) -> ::Api {
+ ::Api::OpenGl
+ }
}
impl Drop for Window {