pub struct GlfwWindow { /* private fields */ }
Expand description

All resources required for running a single-windowed GLFW application which renders graphics using Vulkan.

GlfwWindow derefs as a raw GLFW window handle so application state can configure the window however is convenient.

Implementations§

source§

impl GlfwWindow

source

pub fn new(window_title: impl AsRef<str>) -> Result<Self>

Create a new GLFW window.

The window starts in “windowed” mode and can be toggled into fullscreen or resized by the application.

Params
  • window_title - The title shown on the window’s top bar.
source

pub fn toggle_fullscreen(&mut self) -> Result<()>

Toggle application fullscreen.

If the window is currently windowed then swap to fullscreen using whatever the primary monitor advertises as the primary video mode.

If the window is currently fullscreen, then swap to windowed and restore the window’s previous size and location.

source

pub unsafe fn create_default_render_device( &self, physical_device_features: PhysicalDeviceFeatures ) -> Result<Arc<RenderDevice>>

Create a render device with no additional instanc extensions or layers.

Params
  • features - The physical device features required by the application.
Safety

The application is responsible for synchronizing access to all Vulkan resources and destroying the render device at exit.

source

pub unsafe fn create_render_device( &self, instance_extensions: &[String], instance_layers: &[String], features: PhysicalDeviceFeatures ) -> Result<Arc<RenderDevice>>

Create a render device for the application.

Params
  • instance_extensions - Any extensions to enable when creating the instance. Extensions for the swapchain on the current platform are added automatically and do not need to be provided.
  • instance_layers - Any additional layers to provide. The khronos validation layer is added automatically when debug assertions are enabled.
  • features - The physical device features required by the application.
Safety

The application is responsible for synchronizing access to all Vulkan resources and destroying the render device at exit.

source

pub unsafe fn create_vulkan_instance( &self, instance_extensions: &[String], instance_layers: &[String] ) -> Result<VulkanInstance>

Create a Vulkan instance with extensions and layers configured to such that it can present swapchain frames to the window.

Params
  • instance_extensions - Any extensions to enable when creating the instance. Extensions for the swapchain on the current platform are added automatically and do not need to be provided.
  • instance_layers - Any additional layers to provide. The khronos validation layer is added automatically when debug assertions are enabled.
Safety

The application is responsible for synchronizing access to all Vulkan resources and destroying the Vulkan instance at exit.

Methods from Deref<Target = Window>§

source

pub fn get_proc_address(&mut self, procname: &str) -> *const c_void

Returns the address of the specified client API or extension function if it is supported by the context associated with this Window. If this Window is not the current context, it will make it the current context.

Wrapper for glfwGetProcAddress.

source

pub fn get_instance_proc_address( &mut self, instance: usize, procname: &str ) -> *const c_void

This function returns the address of the specified Vulkan core or extension function for the specified instance. If instance is set to NULL it can return any function exported from the Vulkan loader, including at least the following functions:

  • vkEnumerateInstanceExtensionProperties
  • vkEnumerateInstanceLayerProperties
  • vkCreateInstance
  • vkGetInstanceProcAddr

If Vulkan is not available on the machine, this function returns NULL

Wrapper for glfwGetInstanceProcAddress

source

pub fn get_physical_device_presentation_support( &self, instance: usize, device: usize, queue_family: u32 ) -> bool

This function returns whether the specified queue family of the specified physical device supports presentation to the platform GLFW was built for.

Wrapper for glfwGetPhysicalDevicePresentationSupport

source

pub fn create_window_surface( &self, instance: usize, allocator: *const AllocationCallbacks, surface: *mut u64 ) -> u32

wrapper for glfwCreateWindowSurface

source

pub fn create_shared( &self, width: u32, height: u32, title: &str, mode: WindowMode<'_> ) -> Option<(Window, Receiver<(f64, WindowEvent)>)>

Wrapper for glfwCreateWindow.

source

pub fn render_context(&mut self) -> RenderContext

Returns a render context that can be shared between tasks, allowing for concurrent rendering.

source

pub fn should_close(&self) -> bool

Wrapper for glfwWindowShouldClose.

source

pub fn set_should_close(&mut self, value: bool)

Wrapper for glfwSetWindowShouldClose.

source

pub fn set_title(&mut self, title: &str)

Sets the title of the window.

Wrapper for glfwSetWindowTitle.

source

pub fn get_pos(&self) -> (i32, i32)

Wrapper for glfwGetWindowPos.

source

pub fn set_pos(&mut self, xpos: i32, ypos: i32)

Wrapper for glfwSetWindowPos.

source

pub fn get_size(&self) -> (i32, i32)

Wrapper for glfwGetWindowSize.

source

pub fn set_size(&mut self, width: i32, height: i32)

Wrapper for glfwSetWindowSize.

source

pub fn get_frame_size(&self) -> (i32, i32, i32, i32)

Wrapper for glfwGetWindowFrameSize

Returns (left, top, right, bottom) edge window frame sizes, in screen coordinates.

source

pub fn get_framebuffer_size(&self) -> (i32, i32)

Wrapper for glfwGetFramebufferSize.

source

pub fn set_aspect_ratio(&mut self, numer: u32, denum: u32)

Wrapper for glfwSetWindowAspectRatio.

source

pub fn set_size_limits( &mut self, minwidth: Option<u32>, minheight: Option<u32>, maxwidth: Option<u32>, maxheight: Option<u32> )

Wrapper for glfwSetWindowSizeLimits.

A value of None is equivalent to GLFW_DONT_CARE. If minwidth or minheight are None, no minimum size is enforced. If maxwidth or maxheight are None, no maximum size is enforced.

source

pub fn iconify(&mut self)

Wrapper for glfwIconifyWindow.

source

pub fn restore(&mut self)

Wrapper for glfwRestoreWindow.

source

pub fn maximize(&mut self)

Wrapper for glfwMaximizeWindow

source

pub fn show(&mut self)

Wrapper for glfwShowWindow.

source

pub fn hide(&mut self)

Wrapper for glfwHideWindow.

source

pub fn with_window_mode<T, F>(&self, f: F) -> Twhere F: Fn(WindowMode<'_>) -> T,

Returns whether the window is fullscreen or windowed.

Example
window.with_window_mode(|mode| {
    match mode {
        glfw::Windowed => println!("Windowed"),
        glfw::FullScreen(m) => println!("FullScreen({})", m.get_name()),
    }
});
source

pub fn with_window_mode_mut<T, F>(&self, f: F) -> Twhere F: FnMut(WindowMode<'_>) -> T,

Returns whether the window is fullscreen or windowed.

Variant that can accept an FnMut closure.

Example
window.with_window_mode(|mode| {
    match mode {
        glfw::Windowed => println!("Windowed"),
        glfw::FullScreen(m) => println!("FullScreen({})", m.get_name()),
    }
});
source

pub fn set_monitor( &mut self, mode: WindowMode<'_>, xpos: i32, ypos: i32, width: u32, height: u32, refresh_rate: Option<u32> )

Wrapper for glfwSetWindowMonitor

source

pub fn focus(&mut self)

Wrapper for glfwFocusWindow

It is NOT recommended to use this function, as it steals focus from other applications and can be extremely disruptive to the user.

source

pub fn is_focused(&self) -> bool

Wrapper for glfwGetWindowAttrib called with FOCUSED.

source

pub fn is_iconified(&self) -> bool

Wrapper for glfwGetWindowAttrib called with ICONIFIED.

source

pub fn is_maximized(&self) -> bool

Wrapper for glfwGetWindowattrib called with MAXIMIZED.

source

pub fn get_client_api(&self) -> i32

Wrapper for glfwGetWindowAttrib called with CLIENT_API.

source

pub fn get_context_version(&self) -> Version

Wrapper for glfwGetWindowAttrib called with CONTEXT_VERSION_MAJOR, CONTEXT_VERSION_MINOR and CONTEXT_REVISION.

Returns

The client API version of the window’s context in a version struct.

source

pub fn get_context_robustness(&self) -> i32

Wrapper for glfwGetWindowAttrib called with CONTEXT_ROBUSTNESS.

source

pub fn is_opengl_forward_compat(&self) -> bool

Wrapper for glfwGetWindowAttrib called with OPENGL_FORWARD_COMPAT.

source

pub fn is_opengl_debug_context(&self) -> bool

Wrapper for glfwGetWindowAttrib called with OPENGL_DEBUG_CONTEXT.

source

pub fn get_opengl_profile(&self) -> i32

Wrapper for glfwGetWindowAttrib called with OPENGL_PROFILE.

source

pub fn is_resizable(&self) -> bool

Wrapper for glfwGetWindowAttrib called with RESIZABLE.

source

pub fn set_resizable(&mut self, resizable: bool)

Wrapper for glfwSetWindowAttrib called with RESIZABLE.

source

pub fn is_visible(&self) -> bool

Wrapper for glfwGetWindowAttrib called with VISIBLE.

source

pub fn is_decorated(&self) -> bool

Wrapper for glfwGetWindowAttrib called with DECORATED.

source

pub fn set_decorated(&mut self, decorated: bool)

Wrapper for glfwSetWindowAttrib called with DECORATED.

source

pub fn is_auto_iconify(&self) -> bool

Wrapper for glfwGetWindowAttrib called with AUTO_ICONIFY.

source

pub fn set_auto_iconify(&mut self, auto_iconify: bool)

Wrapper for glfwSetWindowAttrib called with AUTO_ICONIFY.

source

pub fn is_floating(&self) -> bool

Wrapper for glfwGetWindowAttrib called with FLOATING.

source

pub fn set_floating(&mut self, floating: bool)

Wrapper for glfwSetWindowAttrib called with FLOATING.

source

pub fn is_framebuffer_transparent(&self) -> bool

Wrapper for glfwGetWindowAttrib called with TRANSPARENT_FRAMEBUFFER.

source

pub fn is_focus_on_show(&self) -> bool

Wrapper for glfwGetWindowAttrib called with FOCUS_ON_SHOW.

source

pub fn set_focus_on_show(&mut self, focus_on_show: bool)

Wrapper for glfwSetWindowAttrib called with FOCUS_ON_SHOW.

source

pub fn is_hovered(&self) -> bool

Wrapper for glfwGetWindowAttrib called with HOVERED.

source

pub fn set_pos_polling(&mut self, should_poll: bool)

Wrapper for glfwSetWindowPosCallback.

source

pub fn set_all_polling(&mut self, should_poll: bool)

Starts or stops polling for all available events

source

pub fn set_size_polling(&mut self, should_poll: bool)

Wrapper for glfwSetWindowSizeCallback.

source

pub fn set_close_polling(&mut self, should_poll: bool)

Wrapper for glfwSetWindowCloseCallback.

source

pub fn set_refresh_polling(&mut self, should_poll: bool)

Wrapper for glfwSetWindowRefreshCallback.

source

pub fn set_focus_polling(&mut self, should_poll: bool)

Wrapper for glfwSetWindowFocusCallback.

source

pub fn set_iconify_polling(&mut self, should_poll: bool)

Wrapper for glfwSetWindowIconifyCallback.

source

pub fn set_framebuffer_size_polling(&mut self, should_poll: bool)

Wrapper for glfwSetFramebufferSizeCallback.

source

pub fn set_drag_and_drop_polling(&mut self, should_poll: bool)

Wrapper for glfwSetDropCallback.

source

pub fn set_maximize_polling(&mut self, should_poll: bool)

Wrapper for glfwSetWindowMaximizeCallback.

source

pub fn set_content_scale_polling(&mut self, should_poll: bool)

Wrapper for glfwSetWindowContentScaleCallback.

source

pub fn get_cursor_mode(&self) -> CursorMode

Wrapper for glfwGetInputMode called with CURSOR.

source

pub fn set_cursor_mode(&mut self, mode: CursorMode)

Wrapper for glfwSetInputMode called with CURSOR.

source

pub fn set_cursor(&mut self, cursor: Option<Cursor>) -> Option<Cursor>

Wrapper for glfwSetCursor using Cursor

The window will take ownership of the cursor, and will not Drop it until it is replaced or the window itself is destroyed.

Returns the previously set Cursor or None if no cursor was set.

source

pub fn set_icon_from_pixels(&mut self, images: Vec<PixelImage, Global>)

Sets the window icon via glfwSetWindowIcon from a set a set of vectors containing pixels in RGBA format (one pixel per 32-bit integer)

source

pub fn has_sticky_keys(&self) -> bool

Wrapper for glfwGetInputMode called with STICKY_KEYS.

source

pub fn set_sticky_keys(&mut self, value: bool)

Wrapper for glfwSetInputMode called with STICKY_KEYS.

source

pub fn has_sticky_mouse_buttons(&self) -> bool

Wrapper for glfwGetInputMode called with STICKY_MOUSE_BUTTONS.

source

pub fn set_sticky_mouse_buttons(&mut self, value: bool)

Wrapper for glfwSetInputMode called with STICKY_MOUSE_BUTTONS.

source

pub fn does_store_lock_key_mods(&self) -> bool

Wrapper for glfwGetInputMode called with LOCK_KEY_MODS

source

pub fn set_store_lock_key_mods(&mut self, value: bool)

Wrapper for glfwSetInputMode called with LOCK_KEY_MODS

source

pub fn uses_raw_mouse_motion(&self) -> bool

Wrapper for glfwGetInputMode called with RAW_MOUSE_MOTION

source

pub fn set_raw_mouse_motion(&mut self, value: bool)

Wrapper for glfwSetInputMode called with RAW_MOUSE_MOTION

source

pub fn get_key(&self, key: Key) -> Action

Wrapper for glfwGetKey.

source

pub fn get_mouse_button(&self, button: MouseButton) -> Action

Wrapper for glfwGetMouseButton.

source

pub fn get_cursor_pos(&self) -> (f64, f64)

Wrapper for glfwGetCursorPos.

source

pub fn set_cursor_pos(&mut self, xpos: f64, ypos: f64)

Wrapper for glfwSetCursorPos.

source

pub fn set_key_polling(&mut self, should_poll: bool)

Wrapper for glfwSetKeyCallback.

source

pub fn set_char_polling(&mut self, should_poll: bool)

Wrapper for glfwSetCharCallback.

source

pub fn set_char_mods_polling(&mut self, should_poll: bool)

Wrapper for glfwSetCharModsCallback

source

pub fn set_mouse_button_polling(&mut self, should_poll: bool)

Wrapper for glfwSetMouseButtonCallback.

source

pub fn set_cursor_pos_polling(&mut self, should_poll: bool)

Wrapper for glfwSetCursorPosCallback.

source

pub fn set_cursor_enter_polling(&mut self, should_poll: bool)

Wrapper for glfwSetCursorEnterCallback.

source

pub fn set_scroll_polling(&mut self, should_poll: bool)

Wrapper for glfwSetScrollCallback.

source

pub fn set_clipboard_string(&mut self, string: &str)

Wrapper for glfwGetClipboardString.

source

pub fn get_clipboard_string(&self) -> Option<String>

Wrapper for glfwGetClipboardString.

source

pub fn get_opacity(&self) -> f32

Wrapper for ‘glfwGetWindowOpacity’.

source

pub fn set_opacity(&mut self, opacity: f32)

Wrapper for ‘glfwSetWindowOpacity’.

source

pub fn request_attention(&mut self)

Wrapper for glfwRequestWindowAttention.

source

pub fn get_content_scale(&self) -> (f32, f32)

Wrapper for glfwGetWindowContentScale.

source

pub fn get_x11_window(&self) -> *mut c_void

Wrapper for glfwGetX11Window

source

pub fn get_glx_context(&self) -> *mut c_void

Wrapper for glfwGetGLXContext

Trait Implementations§

source§

impl Deref for GlfwWindow

§

type Target = Window

The resulting type after dereferencing.
source§

fn deref(&self) -> &Self::Target

Dereferences the value.
source§

impl DerefMut for GlfwWindow

source§

fn deref_mut(&mut self) -> &mut Self::Target

Mutably dereferences the value.

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

const: unstable · source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere U: From<T>,

const: unstable · source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> Pointable for T

source§

const ALIGN: usize = mem::align_of::<T>()

The alignment of pointer.
§

type Init = T

The type for initializers.
source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T> Same<T> for T

§

type Output = T

Should always be Self
source§

impl<SS, SP> SupersetOf<SS> for SPwhere SS: SubsetOf<SP>,

source§

fn to_subset(&self) -> Option<SS>

The inverse inclusion map: attempts to construct self from the equivalent element of its superset. Read more
source§

fn is_in_subset(&self) -> bool

Checks if self is actually part of its subset T (and can be converted to it).
source§

fn to_subset_unchecked(&self) -> SS

Use with care! Same as self.to_subset but without any property checks. Always succeeds.
source§

fn from_subset(element: &SS) -> SP

The inclusion map: converts self to the equivalent element of its superset.
source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
const: unstable · source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.