Struct luminance::framebuffer::Framebuffer [−][src]
pub struct Framebuffer<B: ?Sized, D, CS, DS> where
B: FramebufferBackend<D>,
D: Dimensionable,
CS: ColorSlot<B, D>,
DS: DepthSlot<B, D>, { /* fields omitted */ }
Expand description
Typed framebuffers.
Parametricity
B
is the backend type. It must implement backend::framebuffer::Framebuffer.D
is the dimension type. It must implementDimensionable
.CS
is the color slot type. It must implementColorSlot
.DS
is the depth slot type. It must implementDepthSlot
.
Implementations
impl<B: ?Sized, D, CS, DS> Framebuffer<B, D, CS, DS> where
B: FramebufferBackend<D>,
D: Dimensionable,
CS: ColorSlot<B, D>,
DS: DepthSlot<B, D>,
impl<B: ?Sized, D, CS, DS> Framebuffer<B, D, CS, DS> where
B: FramebufferBackend<D>,
D: Dimensionable,
CS: ColorSlot<B, D>,
DS: DepthSlot<B, D>,
pub fn new<C>(
ctx: &mut C,
size: D::Size,
mipmaps: usize,
sampler: Sampler
) -> Result<Self, FramebufferError> where
C: GraphicsContext<Backend = B>,
pub fn new<C>(
ctx: &mut C,
size: D::Size,
mipmaps: usize,
sampler: Sampler
) -> Result<Self, FramebufferError> where
C: GraphicsContext<Backend = B>,
Create a new Framebuffer
.
The mipmaps
argument allows to pass the number of extra precision layers the texture will
be created with. A precision layer contains the same image as the base layer but in a lower
resolution. Currently, the way the resolution is computed depends on the backend, but it is
safe to assume that it’s logarithmic in base 2 — i.e. at each layer depth, the resolution
is divided by 2 on each axis.
Errors
It is possible that the Framebuffer
cannot be created. The FramebufferError
provides
the reason why.
Notes
You might be interested in the GraphicsContext::new_framebuffer
function instead, which
is the exact same function, but benefits from more type inference (based on &mut C
).
Access the carried ColorSlot
.
Access the carried DepthSlot
.
Consume this framebuffer and return the carried slots.
Consume this framebuffer and return the carried ColorSlot
.
Consume this framebuffer and return the carried DepthSlot
.
impl<B: ?Sized> Framebuffer<B, Dim2, (), ()> where
B: FramebufferBackend<Dim2> + FramebufferBackBuffer,
impl<B: ?Sized> Framebuffer<B, Dim2, (), ()> where
B: FramebufferBackend<Dim2> + FramebufferBackBuffer,
pub fn back_buffer<C>(
ctx: &mut C,
size: <Dim2 as Dimensionable>::Size
) -> Result<Self, FramebufferError> where
C: GraphicsContext<Backend = B>,
pub fn back_buffer<C>(
ctx: &mut C,
size: <Dim2 as Dimensionable>::Size
) -> Result<Self, FramebufferError> where
C: GraphicsContext<Backend = B>,
Get the back buffer from the input context and the required resolution.
Auto Trait Implementations
impl<B: ?Sized, D, CS, DS> RefUnwindSafe for Framebuffer<B, D, CS, DS> where
<CS as ColorSlot<B, D>>::ColorTextures: RefUnwindSafe,
<DS as DepthSlot<B, D>>::DepthTexture: RefUnwindSafe,
<B as Framebuffer<D>>::FramebufferRepr: RefUnwindSafe,
impl<B: ?Sized, D, CS, DS> Send for Framebuffer<B, D, CS, DS> where
<CS as ColorSlot<B, D>>::ColorTextures: Send,
<DS as DepthSlot<B, D>>::DepthTexture: Send,
<B as Framebuffer<D>>::FramebufferRepr: Send,
impl<B: ?Sized, D, CS, DS> Sync for Framebuffer<B, D, CS, DS> where
<CS as ColorSlot<B, D>>::ColorTextures: Sync,
<DS as DepthSlot<B, D>>::DepthTexture: Sync,
<B as Framebuffer<D>>::FramebufferRepr: Sync,
impl<B: ?Sized, D, CS, DS> Unpin for Framebuffer<B, D, CS, DS> where
<CS as ColorSlot<B, D>>::ColorTextures: Unpin,
<DS as DepthSlot<B, D>>::DepthTexture: Unpin,
<B as Framebuffer<D>>::FramebufferRepr: Unpin,
impl<B: ?Sized, D, CS, DS> UnwindSafe for Framebuffer<B, D, CS, DS> where
<CS as ColorSlot<B, D>>::ColorTextures: UnwindSafe,
<DS as DepthSlot<B, D>>::DepthTexture: UnwindSafe,
<B as Framebuffer<D>>::FramebufferRepr: UnwindSafe,