Struct DrapingRenderer

Source
pub struct DrapingRenderer<R: Resources> { /* private fields */ }
Expand description

Drives graphics operations.

This struct contains the shaders and stencil operations necessary to render draped polygons onto a terrain.

Implementations§

Source§

impl<R: Resources> DrapingRenderer<R>

Source

pub fn new<F: Factory<R>>(factory: &mut F) -> DrapingRenderer<R>

Set up the pipeline state objects needed for rendering draped polygons.

Source

pub fn render<C: CommandBuffer<R>>( &self, encoder: &mut Encoder<R, C>, render_target: RenderTargetView<R, Srgba8>, depth_stencil_target: DepthStencilView<R, DepthStencil>, mvp: [[f32; 4]; 4], color: [f32; 4], buffer: &RenderablePolygonBuffer<R>, indices: &RenderablePolygonIndices<R>, )

Render polygons in buffer using indices to choose the polygons.

The depth buffer in depth_stencil_target should contain the depth values of your terrain – in other words, draw your terrain just before you call this function, and make sure you don’t clear the buffer until after rendering all the polygons you wish to draw.

In addition, the stencil buffer should be cleared to zero before calling this function. The stencil buffer is guaranteed to remain zero after each call, so there is no need to clear the stencil buffer between calls to this function.

mvp should be a model-view-projection matrix. You probably want to use a different mvp than what you’re normally using. The polygons will only render onto terrain with z-values between 0 and 1; you should apply a transformation to alter these z-bounds. For example, if your terrain is bounded in height between z_min and z_max, your mvp use you from this library might be constructed as:

// With the relevant imports, this is working code when using the `cgmath` crate.

let translate_z = Matrix4::from_translation([0.0, 0.0, min_z].into());
let stretch_z = Matrix4::from_nonuniform_scale(1.0, 1.0, max_z - min_z);
let draping_mvp = usual_mvp * translate_z * stretch_z;

Trait Implementations§

Source§

impl<R: Clone + Resources> Clone for DrapingRenderer<R>

Source§

fn clone(&self) -> DrapingRenderer<R>

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<R: Debug + Resources> Debug for DrapingRenderer<R>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

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

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

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

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

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

Source§

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

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

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

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> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<SS, SP> SupersetOf<SS> for SP
where 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§

unsafe 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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

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

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

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

Performs the conversion.
Source§

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

Source§

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

The type returned in the event of a conversion error.
Source§

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

Performs the conversion.