pub struct Onscreen(/* private fields */);
Implementations§
Source§impl Onscreen
impl Onscreen
Sourcepub fn new(context: &Context, width: i32, height: i32) -> Onscreen
pub fn new(context: &Context, width: i32, height: i32) -> Onscreen
Instantiates an “unallocated” Onscreen
framebuffer that may be
configured before later being allocated, either implicitly when
it is first used or explicitly via Framebuffer::allocate
.
§context
A Context
§width
The desired framebuffer width
§height
The desired framebuffer height
§Returns
A newly instantiated Onscreen
framebuffer
Sourcepub fn add_dirty_callback<P: Fn(&Onscreen, &OnscreenDirtyInfo) + 'static>(
&self,
callback: P,
) -> Option<OnscreenDirtyClosure>
pub fn add_dirty_callback<P: Fn(&Onscreen, &OnscreenDirtyInfo) + 'static>( &self, callback: P, ) -> Option<OnscreenDirtyClosure>
Installs a callback
function that will be called whenever the
window system has lost the contents of a region of the onscreen
buffer and the application should redraw it to repair the buffer.
For example this may happen in a window system without a compositor
if a window that was previously covering up the onscreen window has
been moved causing a region of the onscreen to be exposed.
The callback
will be passed a OnscreenDirtyInfo
struct which
decribes a rectangle containing the newly dirtied region. Note that
this may be called multiple times to describe a non-rectangular
region composed of multiple smaller rectangles.
The dirty events are separate from FrameEvent::Sync
events so
the application should also listen for this event before rendering
the dirty region to ensure that the framebuffer is actually ready
for rendering.
§callback
A callback function to call for dirty events
§user_data
A private pointer to be passed to callback
§Returns
a OnscreenDirtyClosure
pointer that can be used to
remove the callback and associated user_data
later.
Sourcepub fn add_frame_callback<P: Fn(&Onscreen, &FrameEvent, &FrameInfo) + 'static>(
&self,
callback: P,
) -> Option<FrameClosure>
pub fn add_frame_callback<P: Fn(&Onscreen, &FrameEvent, &FrameInfo) + 'static>( &self, callback: P, ) -> Option<FrameClosure>
Installs a callback
function that will be called for significant
events relating to the given self
framebuffer.
The callback
will be used to notify when the system compositor is
ready for this application to render a new frame. In this case
FrameEvent::Sync
will be passed as the event argument to the
given callback
in addition to the FrameInfo
corresponding to
the frame beeing acknowledged by the compositor.
The callback
will also be called to notify when the frame has
ended. In this case FrameEvent::Complete
will be passed as
the event argument to the given callback
in addition to the
FrameInfo
corresponding to the newly presented frame. The
meaning of “ended” here simply means that no more timing
information will be collected within the corresponding
FrameInfo
and so this is a good opportunity to analyse the
given info. It does not necessarily mean that the GPU has finished
rendering the corresponding frame.
We highly recommend throttling your application according to
FrameEvent::Sync
events so that your application can avoid
wasting resources, drawing more frames than your system compositor
can display.
§callback
A callback function to call for frame events
§user_data
A private pointer to be passed to callback
§Returns
a FrameClosure
pointer that can be used to
remove the callback and associated user_data
later.
Sourcepub fn add_resize_callback<P: Fn(&Onscreen, i32, i32) + 'static>(
&self,
callback: P,
) -> Option<OnscreenResizeClosure>
pub fn add_resize_callback<P: Fn(&Onscreen, i32, i32) + 'static>( &self, callback: P, ) -> Option<OnscreenResizeClosure>
Registers a callback
with self
that will be called whenever
the self
framebuffer changes size.
The callback
can be removed using
Onscreen::remove_resize_callback
passing the returned closure
pointer.
<note>
Since Cogl automatically updates the viewport of an self
framebuffer that is resized, a resize callback can also be used to
track when the viewport has been changed automatically by Cogl in
case your application needs more specialized control over the
viewport.</note>
<note>
A resize callback will only ever be called while dispatching
Cogl events from the system mainloop; so for example during
cogl_poll_renderer_dispatch
. This is so that callbacks shouldn’t
occur while an application might have arbitrary locks held for
example.</note>
§callback
A CoglOnscreenResizeCallback
to call when
the self
changes size.
§user_data
Private data to be passed to callback
.
§destroy
§Returns
a OnscreenResizeClosure
pointer that can be used to
remove the callback and associated user_data
later.
Sourcepub fn get_buffer_age(&self) -> i32
pub fn get_buffer_age(&self) -> i32
Gets the current age of the buffer contents.
This function allows applications to query the age of the current
back buffer contents for a Onscreen
as the number of frames
elapsed since the contents were most recently defined.
These age values exposes enough information to applications about how Cogl internally manages back buffers to allow applications to re-use the contents of old frames and minimize how much must be redrawn for the next frame.
The back buffer contents can either be reported as invalid (has an age of 0) or it may be reported to be the same contents as from n frames prior to the current frame.
The queried value remains valid until the next buffer swap.
<note>
One caveat is that under X11 the buffer age does not reflect
changes to buffer contents caused by the window systems. X11
applications must track Expose events to determine what buffer
regions need to additionally be repaired each frame.</note>
The recommended way to take advantage of this buffer age api is to
build up a circular buffer of length 3 for tracking damage regions
over the last 3 frames and when starting a new frame look at the
age of the buffer and combine the damage regions for the current
frame with the damage regions of previous age
frames so you know
everything that must be redrawn to update the old contents for the
new frame.
<note>
If the system doesn’t not support being able to track the age
of back buffers then this function will always return 0 which
implies that the contents are undefined.</note>
<note>
The FeatureID::OglFeatureIdBufferAge
feature can optionally be
explicitly checked to determine if Cogl is currently tracking the
age of Onscreen
back buffer contents. If this feature is
missing then this function will always return 0.</note>
§Returns
The age of the buffer contents or 0 when the buffer contents are undefined.
Sourcepub fn get_frame_counter(&self) -> i64
pub fn get_frame_counter(&self) -> i64
Gets the value of the framebuffers frame counter. This is
a counter that increases by one each time
Onscreen::swap_buffers
or Onscreen::swap_region
is called.
§Returns
the current frame counter value
Sourcepub fn get_resizable(&self) -> bool
pub fn get_resizable(&self) -> bool
Lets you query whether self
has been marked as resizable via
the Onscreen::set_resizable
api.
By default, if possible, a self
will be created by Cogl
as non resizable, but it is not guaranteed that this is always
possible for all window systems.
<note>
If cogl_onscreen_set_resizable(self
, true
) has been
previously called then this function will return true
, but it’s
possible that the current windowing system being used does not
support window resizing (consider fullscreen windows on a phone or
a TV). This function is not aware of whether resizing is truly
meaningful with your window system, only whether the self
has
been marked as resizable.</note>
§Returns
Returns whether self
has been marked as
resizable or not.
Sourcepub fn hide(&self)
pub fn hide(&self)
This requests to make self
invisible to the user.
Actually the precise semantics of this function depend on the window system currently in use, and if you don’t have a multi-windowining system this function may in-fact do nothing.
This function does not implicitly allocate the given self
framebuffer before hiding it.
<note>
Since Cogl doesn’t explicitly track the visibility status of
onscreen framebuffers it wont try to avoid redundant window system
requests e.g. to show an already visible window. This also means
that it’s acceptable to alternatively use native APIs to show and
hide windows without confusing Cogl.</note>
Sourcepub fn remove_dirty_callback(&self, closure: &mut OnscreenDirtyClosure)
pub fn remove_dirty_callback(&self, closure: &mut OnscreenDirtyClosure)
Removes a callback and associated user data that were previously
registered using Onscreen::add_dirty_callback
.
If a destroy callback was passed to
Onscreen::add_dirty_callback
to destroy the user data then
this will also get called.
§closure
A OnscreenDirtyClosure
returned from
Onscreen::add_dirty_callback
Sourcepub fn remove_frame_callback(&self, closure: &mut FrameClosure)
pub fn remove_frame_callback(&self, closure: &mut FrameClosure)
Removes a callback and associated user data that were previously
registered using Onscreen::add_frame_callback
.
If a destroy callback was passed to
Onscreen::add_frame_callback
to destroy the user data then
this will get called.
§closure
A FrameClosure
returned from
Onscreen::add_frame_callback
Sourcepub fn remove_resize_callback(&self, closure: &mut OnscreenResizeClosure)
pub fn remove_resize_callback(&self, closure: &mut OnscreenResizeClosure)
Removes a resize callback
and user_data
pair that were previously
associated with self
via Onscreen::add_resize_callback
.
§closure
An identifier returned from Onscreen::add_resize_callback
Sourcepub fn set_resizable(&self, resizable: bool)
pub fn set_resizable(&self, resizable: bool)
Lets you request Cogl to mark an self
framebuffer as
resizable or not.
By default, if possible, a self
will be created by Cogl
as non resizable, but it is not guaranteed that this is always
possible for all window systems.
<note>
Cogl does not know whether marking the self
framebuffer
is truly meaningful for your current window system (consider
applications being run fullscreen on a phone or TV) so this
function may not have any useful effect. If you are running on a
multi windowing system such as X11 or Win32 or OSX then Cogl will
request to the window system that users be allowed to resize the
self
, although it’s still possible that some other window
management policy will block this possibility.</note>
<note>
Whenever an self
framebuffer is resized the viewport
will be automatically updated to match the new size of the
framebuffer with an origin of (0,0). If your application needs more
specialized control of the viewport it will need to register a
resize handler using Onscreen::add_resize_callback
so that it
can track when the viewport has been changed automatically.</note>
Sourcepub fn set_swap_throttled(&self, throttled: bool)
pub fn set_swap_throttled(&self, throttled: bool)
Requests that the given self
framebuffer should have swap buffer
requests (made using Onscreen::swap_buffers
) throttled either by a
displays vblank period or perhaps some other mechanism in a composited
environment.
§throttled
Whether swap throttling is wanted or not.
Sourcepub fn show(&self)
pub fn show(&self)
This requests to make self
visible to the user.
Actually the precise semantics of this function depend on the window system currently in use, and if you don’t have a multi-windowining system this function may in-fact do nothing.
This function will implicitly allocate the given self
framebuffer before showing it if it hasn’t already been allocated.
When using the Wayland winsys calling this will set the surface to
a toplevel type which will make it appear. If the application wants
to set a different type for the surface, it can avoid calling
Onscreen::show
and set its own type directly with the Wayland
client API via cogl_wayland_onscreen_get_surface
.
<note>
Since Cogl doesn’t explicitly track the visibility status of
onscreen framebuffers it wont try to avoid redundant window system
requests e.g. to show an already visible window. This also means
that it’s acceptable to alternatively use native APIs to show and
hide windows without confusing Cogl.</note>
Sourcepub fn swap_buffers(&self)
pub fn swap_buffers(&self)
Swaps the current back buffer being rendered too, to the front for display.
This function also implicitly discards the contents of the color, depth and
stencil buffers as if Framebuffer::discard_buffers
were used. The
significance of the discard is that you should not expect to be able to
start a new frame that incrementally builds on the contents of the previous
frame.
<note>
It is highly recommended that applications use
Onscreen::swap_buffers_with_damage
instead whenever possible
and also use the Onscreen::get_buffer_age
api so they can
perform incremental updates to older buffers instead of having to
render a full buffer for every frame.</note>
Sourcepub fn swap_buffers_with_damage(&self, rectangles: &[i32], n_rectangles: i32)
pub fn swap_buffers_with_damage(&self, rectangles: &[i32], n_rectangles: i32)
Swaps the current back buffer being rendered too, to the front for display and provides information to any system compositor about what regions of the buffer have changed (damage) with respect to the last swapped buffer.
This function has the same semantics as
cogl_framebuffer_swap_buffers
except that it additionally allows
applications to pass a list of damaged rectangles which may be
passed on to a compositor so that it can minimize how much of the
screen is redrawn in response to this applications newly swapped
front buffer.
For example if your application is only animating a small object in the corner of the screen and everything else is remaining static then it can help the compositor to know that only the bottom right corner of your newly swapped buffer has really changed with respect to your previously swapped front buffer.
If n_rectangles
is 0 then the whole buffer will implicitly be
reported as damaged as if Onscreen::swap_buffers
had been
called.
This function also implicitly discards the contents of the color,
depth and stencil buffers as if Framebuffer::discard_buffers
were used. The significance of the discard is that you should not
expect to be able to start a new frame that incrementally builds on
the contents of the previous frame. If you want to perform
incremental updates to older back buffers then please refer to the
Onscreen::get_buffer_age
api.
Whenever possible it is recommended that applications use this
function instead of Onscreen::swap_buffers
to improve
performance when running under a compositor.
<note>
It is highly recommended to use this API in conjunction with
the Onscreen::get_buffer_age
api so that your application can
perform incremental rendering based on old back buffers.</note>
§rectangles
An array of integer 4-tuples representing damaged rectangles as (x, y, width, height) tuples.
§n_rectangles
The number of 4-tuples to be read from rectangles
Sourcepub fn swap_region(&self, rectangles: &[i32], n_rectangles: i32)
pub fn swap_region(&self, rectangles: &[i32], n_rectangles: i32)
Swaps a region of the back buffer being rendered too, to the front for
display. rectangles
represents the region as array of n_rectangles
each
defined by 4 sequential (x, y, width, height) integers.
This function also implicitly discards the contents of the color, depth and
stencil buffers as if Framebuffer::discard_buffers
were used. The
significance of the discard is that you should not expect to be able to
start a new frame that incrementally builds on the contents of the previous
frame.
§rectangles
An array of integer 4-tuples representing rectangles as (x, y, width, height) tuples.
§n_rectangles
The number of 4-tuples to be read from rectangles
Trait Implementations§
Source§impl Ord for Onscreen
impl Ord for Onscreen
Source§impl<T: ObjectType> PartialEq<T> for Onscreen
impl<T: ObjectType> PartialEq<T> for Onscreen
Source§impl<T: ObjectType> PartialOrd<T> for Onscreen
impl<T: ObjectType> PartialOrd<T> for Onscreen
Source§impl StaticType for Onscreen
impl StaticType for Onscreen
Source§fn static_type() -> Type
fn static_type() -> Type
Self
.impl Eq for Onscreen
impl IsA<Framebuffer> for Onscreen
impl IsA<Object> for Onscreen
Auto Trait Implementations§
impl Freeze for Onscreen
impl RefUnwindSafe for Onscreen
impl !Send for Onscreen
impl !Sync for Onscreen
impl Unpin for Onscreen
impl UnwindSafe for Onscreen
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Cast for Twhere
T: ObjectType,
impl<T> Cast for Twhere
T: ObjectType,
Source§fn upcast<T>(self) -> Twhere
T: ObjectType,
Self: IsA<T>,
fn upcast<T>(self) -> Twhere
T: ObjectType,
Self: IsA<T>,
T
. Read moreSource§fn upcast_ref<T>(&self) -> &Twhere
T: ObjectType,
Self: IsA<T>,
fn upcast_ref<T>(&self) -> &Twhere
T: ObjectType,
Self: IsA<T>,
T
. Read moreSource§fn downcast<T>(self) -> Result<T, Self>where
T: ObjectType,
Self: CanDowncast<T>,
fn downcast<T>(self) -> Result<T, Self>where
T: ObjectType,
Self: CanDowncast<T>,
T
. Read moreSource§fn downcast_ref<T>(&self) -> Option<&T>where
T: ObjectType,
Self: CanDowncast<T>,
fn downcast_ref<T>(&self) -> Option<&T>where
T: ObjectType,
Self: CanDowncast<T>,
T
. Read moreSource§fn dynamic_cast<T>(self) -> Result<T, Self>where
T: ObjectType,
fn dynamic_cast<T>(self) -> Result<T, Self>where
T: ObjectType,
T
. This handles upcasting, downcasting
and casting between interface and interface implementors. All checks are performed at
runtime, while downcast
and upcast
will do many checks at compile-time already. Read moreSource§fn dynamic_cast_ref<T>(&self) -> Option<&T>where
T: ObjectType,
fn dynamic_cast_ref<T>(&self) -> Option<&T>where
T: ObjectType,
T
. This handles upcasting, downcasting
and casting between interface and interface implementors. All checks are performed at
runtime, while downcast
and upcast
will do many checks at compile-time already. Read moreSource§unsafe fn unsafe_cast<T>(self) -> Twhere
T: ObjectType,
unsafe fn unsafe_cast<T>(self) -> Twhere
T: ObjectType,
T
unconditionally. Read moreSource§unsafe fn unsafe_cast_ref<T>(&self) -> &Twhere
T: ObjectType,
unsafe fn unsafe_cast_ref<T>(&self) -> &Twhere
T: ObjectType,
&T
unconditionally. Read moreSource§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<O> FramebufferExt for Owhere
O: IsA<Framebuffer>,
impl<O> FramebufferExt for Owhere
O: IsA<Framebuffer>,
Source§fn add_fence_callback<P>(&self, callback: P) -> Option<FenceClosure>
fn add_fence_callback<P>(&self, callback: P) -> Option<FenceClosure>
Source§fn allocate(&self) -> Result<bool, Error>
fn allocate(&self) -> Result<bool, Error>
Framebuffer
allowing developers to
check and handle any errors that might arise from an unsupported
configuration so that fallback configurations may be tried. Read moreSource§fn cancel_fence_callback(&self, closure: &mut FenceClosure)
fn cancel_fence_callback(&self, closure: &mut FenceClosure)
Framebuffer::add_fence_callback
; the callback will not be
called. Read moreSource§fn clear(&self, buffers: u32, color: &Color)
fn clear(&self, buffers: u32, color: &Color)
buffers
mask, and if
that includes the color buffer then the specified color
is used. Read moreSource§fn clear4f(&self, buffers: u32, red: f32, green: f32, blue: f32, alpha: f32)
fn clear4f(&self, buffers: u32, red: f32, green: f32, blue: f32, alpha: f32)
buffers
mask, and if
that includes the color buffer then the specified color
is used. Read moreSource§fn discard_buffers(&self, buffers: u32)
fn discard_buffers(&self, buffers: u32)
buffers
no longer need to be referenced
by any further rendering commands. This can be an important
optimization to avoid subsequent frames of rendering depending on
the results of a previous frame. Read moreSource§fn draw_multitextured_rectangle(
&self,
pipeline: &Pipeline,
x_1: f32,
y_1: f32,
x_2: f32,
y_2: f32,
tex_coords: &[f32],
)
fn draw_multitextured_rectangle( &self, pipeline: &Pipeline, x_1: f32, y_1: f32, x_2: f32, y_2: f32, tex_coords: &[f32], )
self
with the given pipeline
state with the top left corner positioned at (x_1
, y_1
) and the
bottom right corner positioned at (x_2
, y_2
). As a pipeline may
contain multiple texture layers this interface lets you supply
texture coordinates for each layer of the pipeline. Read moreSource§fn draw_rectangle(
&self,
pipeline: &Pipeline,
x_1: f32,
y_1: f32,
x_2: f32,
y_2: f32,
)
fn draw_rectangle( &self, pipeline: &Pipeline, x_1: f32, y_1: f32, x_2: f32, y_2: f32, )
self
with the given pipeline
state
and with the top left corner positioned at (x_1
, y_1
) and the
bottom right corner positioned at (x_2
, y_2
). Read moreSource§fn draw_textured_rectangle(
&self,
pipeline: &Pipeline,
x_1: f32,
y_1: f32,
x_2: f32,
y_2: f32,
s_1: f32,
t_1: f32,
s_2: f32,
t_2: f32,
)
fn draw_textured_rectangle( &self, pipeline: &Pipeline, x_1: f32, y_1: f32, x_2: f32, y_2: f32, s_1: f32, t_1: f32, s_2: f32, t_2: f32, )
self
using the given
pipeline
state with the top left corner positioned at (x_1
, y_1
)
and the bottom right corner positioned at (x_2
, y_2
). The top
left corner will have texture coordinates of (s_1
, t_1
) and the
bottom right corner will have texture coordinates of (s_2
, t_2
). Read moreSource§fn finish(&self)
fn finish(&self)
Source§fn frustum(
&self,
left: f32,
right: f32,
bottom: f32,
top: f32,
z_near: f32,
z_far: f32,
)
fn frustum( &self, left: f32, right: f32, bottom: f32, top: f32, z_near: f32, z_far: f32, )
Source§fn get_alpha_bits(&self) -> i32
fn get_alpha_bits(&self) -> i32
self
Read moreSource§fn get_blue_bits(&self) -> i32
fn get_blue_bits(&self) -> i32
self
Read moreSource§fn get_color_mask(&self) -> ColorMask
fn get_color_mask(&self) -> ColorMask
ColorMask
of which channels would be written to the
current framebuffer. Each bit set in the mask means that the
corresponding color would be written. Read moreSource§fn get_context(&self) -> Option<Context>
fn get_context(&self) -> Option<Context>
Context
a given self
was
instantiated within. This is the Context
that was passed to
Onscreen::new
for example. Read moreSource§fn get_depth_bits(&self) -> i32
fn get_depth_bits(&self) -> i32
self
Read moreSource§fn get_depth_texture(&self) -> Option<Texture>
fn get_depth_texture(&self) -> Option<Texture>
self
as a Texture
. You need to
call cogl_framebuffer_get_depth_texture(fb, TRUE); before using this
function. Read moreSource§fn get_depth_texture_enabled(&self) -> bool
fn get_depth_texture_enabled(&self) -> bool
Framebuffer::set_depth_texture_enabled
. Read moreSource§fn get_depth_write_enabled(&self) -> bool
fn get_depth_write_enabled(&self) -> bool
self
. This
can be controlled via Framebuffer::set_depth_write_enabled
. Read moreSource§fn get_dither_enabled(&self) -> bool
fn get_dither_enabled(&self) -> bool
self
.
See Framebuffer::set_dither_enabled
for more details about dithering. Read moreSource§fn get_green_bits(&self) -> i32
fn get_green_bits(&self) -> i32
self
Read moreSource§fn get_height(&self) -> i32
fn get_height(&self) -> i32
self
. Read morefn get_is_stereo(&self) -> bool
Source§fn get_modelview_matrix(&self) -> Matrix
fn get_modelview_matrix(&self) -> Matrix
matrix
. Read moreSource§fn get_projection_matrix(&self) -> Matrix
fn get_projection_matrix(&self) -> Matrix
matrix
. Read moreSource§fn get_red_bits(&self) -> i32
fn get_red_bits(&self) -> i32
self
Read moreSource§fn get_samples_per_pixel(&self) -> i32
fn get_samples_per_pixel(&self) -> i32
Framebuffer::set_samples_per_pixel
. Read moreSource§fn get_stereo_mode(&self) -> StereoMode
fn get_stereo_mode(&self) -> StereoMode
StereoMode
, which defines which stereo buffers
should be drawn to. See Framebuffer::set_stereo_mode
. Read moreSource§fn get_viewport_height(&self) -> f32
fn get_viewport_height(&self) -> f32
Framebuffer::set_viewport
or the default value which is the height of the framebuffer. Read moreSource§fn get_viewport_width(&self) -> f32
fn get_viewport_width(&self) -> f32
Framebuffer::set_viewport
or the default value which is the width of the framebuffer. Read moreSource§fn get_viewport_x(&self) -> f32
fn get_viewport_x(&self) -> f32
Framebuffer::set_viewport
or the default value which is 0. Read moreSource§fn get_viewport_y(&self) -> f32
fn get_viewport_y(&self) -> f32
Framebuffer::set_viewport
or the default value which is 0. Read moreSource§fn identity_matrix(&self)
fn identity_matrix(&self)
Source§fn orthographic(
&self,
x_1: f32,
y_1: f32,
x_2: f32,
y_2: f32,
near: f32,
far: f32,
)
fn orthographic( &self, x_1: f32, y_1: f32, x_2: f32, y_2: f32, near: f32, far: f32, )
Source§fn perspective(&self, fov_y: f32, aspect: f32, z_near: f32, z_far: f32)
fn perspective(&self, fov_y: f32, aspect: f32, z_near: f32, z_far: f32)
Source§fn pop_clip(&self)
fn pop_clip(&self)
Framebuffer::push_scissor_clip
, Framebuffer::push_rectangle_clip
cogl_framebuffer_push_path_clip
, or Framebuffer::push_primitive_clip
.Source§fn pop_matrix(&self)
fn pop_matrix(&self)
Source§fn push_matrix(&self)
fn push_matrix(&self)
Framebuffer::pop_matrix
.Source§fn push_primitive_clip(
&self,
primitive: &Primitive,
bounds_x1: f32,
bounds_y1: f32,
bounds_x2: f32,
bounds_y2: f32,
)
fn push_primitive_clip( &self, primitive: &Primitive, bounds_x1: f32, bounds_y1: f32, bounds_x2: f32, bounds_y2: f32, )
Primitive
. The shape must not contain self overlapping
geometry and must lie on a single 2D plane. A bounding box of the
2D shape in local coordinates (the same coordinates used to
describe the shape) must be given. It is acceptable for the bounds
to be larger than the true bounds but behaviour is undefined if the
bounds are smaller than the true bounds. Read moreSource§fn push_rectangle_clip(&self, x_1: f32, y_1: f32, x_2: f32, y_2: f32)
fn push_rectangle_clip(&self, x_1: f32, y_1: f32, x_2: f32, y_2: f32)
Source§fn push_scissor_clip(&self, x: i32, y: i32, width: i32, height: i32)
fn push_scissor_clip(&self, x: i32, y: i32, width: i32, height: i32)
Source§fn read_pixels(
&self,
x: i32,
y: i32,
width: i32,
height: i32,
format: PixelFormat,
pixels: &[u8],
) -> bool
fn read_pixels( &self, x: i32, y: i32, width: i32, height: i32, format: PixelFormat, pixels: &[u8], ) -> bool
Framebuffer::read_pixels_into_bitmap
which allocates a
temporary Bitmap
to read pixel data directly into the given
buffer. The rowstride of the buffer is assumed to be the width of
the region times the bytes per pixel of the format. The source for
the data is always taken from the color buffer. If you want to use
any other rowstride or source, please use the
Framebuffer::read_pixels_into_bitmap
function directly. Read moreSource§fn read_pixels_into_bitmap(
&self,
x: i32,
y: i32,
source: ReadPixelsFlags,
bitmap: &Bitmap,
) -> bool
fn read_pixels_into_bitmap( &self, x: i32, y: i32, source: ReadPixelsFlags, bitmap: &Bitmap, ) -> bool
Source§fn resolve_samples(&self)
fn resolve_samples(&self)
Framebuffer::set_samples_per_pixel
then you can optionally call this function (or
Framebuffer::resolve_samples_region
) to explicitly resolve
the point samples into values for the final color buffer. Read moreSource§fn resolve_samples_region(&self, x: i32, y: i32, width: i32, height: i32)
fn resolve_samples_region(&self, x: i32, y: i32, width: i32, height: i32)
Framebuffer::set_samples_per_pixel
then you can optionally call this function (or
Framebuffer::resolve_samples
) to explicitly resolve the point
samples into values for the final color buffer. Read moreSource§fn rotate(&self, angle: f32, x: f32, y: f32, z: f32)
fn rotate(&self, angle: f32, x: f32, y: f32, z: f32)
x
, y
and z
. The
rotation follows the right-hand thumb rule so for example rotating
by 10 degrees about the axis-vector (0, 0, 1) causes a small
counter-clockwise rotation. Read moreSource§fn rotate_euler(&self, euler: &Euler)
fn rotate_euler(&self, euler: &Euler)
euler
. Read moreSource§fn rotate_quaternion(&self, quaternion: &Quaternion)
fn rotate_quaternion(&self, quaternion: &Quaternion)
quaternion
. Read moreSource§fn scale(&self, x: f32, y: f32, z: f32)
fn scale(&self, x: f32, y: f32, z: f32)
Source§fn set_color_mask(&self, color_mask: ColorMask)
fn set_color_mask(&self, color_mask: ColorMask)
self
. If a bit is set in color_mask
that means that
color will be written. Read moreSource§fn set_depth_texture_enabled(&self, enabled: bool)
fn set_depth_texture_enabled(&self, enabled: bool)
enabled
is true
, the depth buffer used when rendering to self
is available as a texture. You can retrieve the texture with
Framebuffer::get_depth_texture
. Read moreSource§fn set_depth_write_enabled(&self, depth_write_enabled: bool)
fn set_depth_write_enabled(&self, depth_write_enabled: bool)
self
.
If depth writing is enabled for both the framebuffer and the rendering
pipeline, and the framebuffer has an associated depth buffer, depth
information will be written to this buffer during rendering. Read moreSource§fn set_dither_enabled(&self, dither_enabled: bool)
fn set_dither_enabled(&self, dither_enabled: bool)
Source§fn set_modelview_matrix(&self, matrix: &Matrix)
fn set_modelview_matrix(&self, matrix: &Matrix)
matrix
as the new model-view matrix. Read moreSource§fn set_projection_matrix(&self, matrix: &Matrix)
fn set_projection_matrix(&self, matrix: &Matrix)
matrix
as the new projection matrix. Read moreSource§fn set_samples_per_pixel(&self, samples_per_pixel: i32)
fn set_samples_per_pixel(&self, samples_per_pixel: i32)
self
then n
point samples
should be made per pixel which will all contribute to the final
resolved color for that pixel. The idea is that the hardware aims
to get quality similar to what you would get if you rendered
everything twice as big (for 4 samples per pixel) and then scaled
that image back down with filtering. It can effectively remove the
jagged edges of polygons and should be more efficient than if you
were to manually render at a higher resolution and downscale
because the hardware is often able to take some shortcuts. For
example the GPU may only calculate a single texture sample for all
points of a single pixel, and for tile based architectures all the
extra sample data (such as depth and stencil samples) may be
handled on-chip and so avoid increased demand on system memory
bandwidth. Read moreSource§fn set_stereo_mode(&self, stereo_mode: StereoMode)
fn set_stereo_mode(&self, stereo_mode: StereoMode)
StereoMode::Both
, which means that both the left and
right buffers will be affected by drawing. For this to have
an effect, the display system must support stereo drawables,
and the framebuffer must have been created with stereo
enabled. (See OnscreenTemplate::set_stereo_enabled
,
Framebuffer::get_is_stereo
.) Read moreSource§fn set_viewport(&self, x: f32, y: f32, width: f32, height: f32)
fn set_viewport(&self, x: f32, y: f32, width: f32, height: f32)
Source§impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GList> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GList> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
Source§impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GPtrArray> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GPtrArray> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
Source§impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GSList> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GSList> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
Source§impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GList> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GList> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
Source§impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GPtrArray> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GPtrArray> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
Source§impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GSList> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GSList> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
Source§impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GList> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GList> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
Source§impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GPtrArray> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GPtrArray> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
Source§impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GSList> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GSList> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
Source§impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GList> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GList> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
Source§impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GPtrArray> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GPtrArray> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
Source§impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GSList> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GSList> for Twhere
T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,
Source§impl<T> ObjectExt for Twhere
T: ObjectType,
impl<T> ObjectExt for Twhere
T: ObjectType,
Source§fn is<U>(&self) -> boolwhere
U: StaticType,
fn is<U>(&self) -> boolwhere
U: StaticType,
true
if the object is an instance of (can be cast to) T
.