Struct cogl::MatrixStack[][src]

pub struct MatrixStack(_, _);

Implementations

impl MatrixStack[src]

pub fn new(ctx: &Context) -> MatrixStack[src]

Allocates a new MatrixStack that can be used to build up transformations relating to objects in a scenegraph like hierarchy. (See the description of MatrixStack and MatrixEntry for more details of what a matrix stack is best suited for)

When a MatrixStack is first allocated it is conceptually positioned at the root of your scenegraph hierarchy. As you traverse your scenegraph then you should call MatrixStack::push whenever you move down a level and MatrixStack::pop whenever you move back up a level towards the root.

Once you have allocated a MatrixStack you can get a reference to the current transformation for the current position in the hierarchy by calling MatrixStack::get_entry.

Once you have allocated a MatrixStack you can apply operations such as rotate, scale and translate to modify the current transform for the current position in the hierarchy by calling MatrixStack::rotate, MatrixStack::scale and MatrixStack::translate.

ctx

A Context

Returns

A newly allocated MatrixStack

pub fn frustum(
    &self,
    left: f32,
    right: f32,
    bottom: f32,
    top: f32,
    z_near: f32,
    z_far: f32
)
[src]

Replaces the current matrix with a perspective matrix for a given viewing frustum defined by 4 side clip planes that all cross through the origin and 2 near and far clip planes.

left

X position of the left clipping plane where it intersects the near clipping plane

X position of the right clipping plane where it intersects the near clipping plane

bottom

Y position of the bottom clipping plane where it intersects the near clipping plane

top

Y position of the top clipping plane where it intersects the near clipping plane

z_near

The distance to the near clipping plane (Must be positive)

z_far

The distance to the far clipping plane (Must be positive)

pub fn get_entry(&self) -> Option<MatrixEntry>[src]

Gets a reference to the current transform represented by a MatrixEntry pointer.

<note>The transform represented by a MatrixEntry is immutable.</note>

<note>``MatrixEntrys are reference counted using MatrixEntry::ref and MatrixEntry::unref and you should call MatrixEntry::unref when you are finished with and entry you get via MatrixStack::get_entry.</note>

Returns

A pointer to the MatrixEntry representing the current matrix stack transform.

pub fn load_identity(&self)[src]

Resets the current matrix to the identity matrix.

pub fn multiply(&self, matrix: &Matrix)[src]

Multiplies the current matrix by the given matrix.

matrix

the matrix to multiply with the current model-view

pub fn orthographic(
    &self,
    x_1: f32,
    y_1: f32,
    x_2: f32,
    y_2: f32,
    near: f32,
    far: f32
)
[src]

Replaces the current matrix with an orthographic projection matrix.

x_1

The x coordinate for the first vertical clipping plane

y_1

The y coordinate for the first horizontal clipping plane

x_2

The x coordinate for the second vertical clipping plane

y_2

The y coordinate for the second horizontal clipping plane

near

The <emphasis>distance</emphasis> to the near clipping plane (will be <emphasis>negative</emphasis> if the plane is behind the viewer)

far

The <emphasis>distance</emphasis> to the far clipping plane (will be <emphasis>negative</emphasis> if the plane is behind the viewer)

pub fn perspective(&self, fov_y: f32, aspect: f32, z_near: f32, z_far: f32)[src]

Replaces the current matrix with a perspective matrix based on the provided values.

<note>You should be careful not to have too great a z_far / z_near ratio since that will reduce the effectiveness of depth testing since there wont be enough precision to identify the depth of objects near to each other.</note>

fov_y

Vertical field of view angle in degrees.

aspect

The (width over height) aspect ratio for display

z_near

The distance to the near clipping plane (Must be positive, and must not be 0)

z_far

The distance to the far clipping plane (Must be positive)

pub fn pop(&self)[src]

Restores the previous transform that was last saved by calling MatrixStack::push.

This is usually called while traversing a scenegraph whenever you return up one level in the graph towards the root node.

pub fn push(&self)[src]

Saves the current transform and starts a new transform that derives from the current transform.

This is usually called while traversing a scenegraph whenever you traverse one level deeper. MatrixStack::pop can then be called when going back up one layer to restore the previous transform of an ancestor.

pub fn rotate(&self, angle: f32, x: f32, y: f32, z: f32)[src]

Multiplies the current matrix by one that rotates the around the axis-vector specified by 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.

angle

Angle in degrees to rotate.

x

X-component of vertex to rotate around.

y

Y-component of vertex to rotate around.

z

Z-component of vertex to rotate around.

pub fn rotate_euler(&self, euler: &Euler)[src]

Multiplies the current matrix by one that rotates according to the rotation described by euler.

euler

A Euler

pub fn rotate_quaternion(&self, quaternion: &Quaternion)[src]

Multiplies the current matrix by one that rotates according to the rotation described by quaternion.

quaternion

A Quaternion

pub fn scale(&self, x: f32, y: f32, z: f32)[src]

Multiplies the current matrix by one that scales the x, y and z axes by the given values.

x

Amount to scale along the x-axis

y

Amount to scale along the y-axis

z

Amount to scale along the z-axis

pub fn set(&self, matrix: &Matrix)[src]

Replaces the current self matrix value with the value of matrix. This effectively discards any other operations that were applied since the last time MatrixStack::push was called or since the stack was initialized.

matrix

A Matrix replace the current matrix value with

pub fn translate(&self, x: f32, y: f32, z: f32)[src]

Multiplies the current matrix by one that translates along all three axes according to the given values.

x

Distance to translate along the x-axis

y

Distance to translate along the y-axis

z

Distance to translate along the z-axis

Trait Implementations

impl Clone for MatrixStack[src]

impl Debug for MatrixStack[src]

impl Display for MatrixStack[src]

impl Eq for MatrixStack[src]

impl Hash for MatrixStack[src]

impl IsA<Object> for MatrixStack[src]

impl Ord for MatrixStack[src]

impl<T: ObjectType> PartialEq<T> for MatrixStack[src]

impl<T: ObjectType> PartialOrd<T> for MatrixStack[src]

impl StaticType for MatrixStack[src]

Auto Trait Implementations

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<Super, Sub> CanDowncast<Sub> for Super where
    Sub: IsA<Super>,
    Super: IsA<Super>, 
[src]

impl<T> Cast for T where
    T: ObjectType
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ObjectExt for T where
    T: ObjectType
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T> ToSendValue for T where
    T: SetValue + Send + ToValue + ?Sized
[src]

impl<T> ToString for T where
    T: Display + ?Sized
[src]

impl<T> ToValue for T where
    T: SetValue + ?Sized
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.