Add a GlContext trait
This commit is contained in:
parent
a08388bca1
commit
aa58f4149a
12 changed files with 332 additions and 190 deletions
28
src/lib.rs
28
src/lib.rs
|
|
@ -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 {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue