diff options
Diffstat (limited to 'src/lib.rs')
-rw-r--r-- | src/lib.rs | 28 |
1 files changed, 28 insertions, 0 deletions
@@ -70,6 +70,34 @@ mod headless; #[cfg(feature = "window")] mod window; +/// Trait that describes objects that have access to an OpenGL context. +pub trait GlContext { + /// Sets the context as the current context. + unsafe fn make_current(&self); + + /// Returns true if this context is the current one in this thread. + fn is_current(&self) -> bool; + + /// Returns the address of an OpenGL function. + fn get_proc_address(&self, addr: &str) -> *const libc::c_void; + + /// Swaps the buffers in case of double or triple buffering. + /// + /// You should call this function every time you have finished rendering, or the image + /// may not be displayed on the screen. + /// + /// **Warning**: if you enabled vsync, this function will block until the next time the screen + /// is refreshed. However drivers can choose to override your vsync settings, which means that + /// you can't know in advance whether `swap_buffers` will block or not. + fn swap_buffers(&self); + + /// Returns the OpenGL API being used. + fn get_api(&self) -> Api; + + /// Returns the pixel format of the main framebuffer of the context. + fn get_pixel_format(&self) -> PixelFormat; +} + /// Error that can happen while creating a window or a headless renderer. #[derive(Clone, Debug, PartialEq, Eq)] pub enum CreationError { |