Struct luminance_webgl::webgl2::WebGL2 [−][src]
pub struct WebGL2 { /* fields omitted */ }
Expand description
The WebGL2 backend.
Implementations
Trait Implementations
type BufferRepr = Buffer<T>
type BufferRepr = Buffer<T>
The inner representation of the buffer for this backend.
unsafe fn new_buffer(
&mut self,
len: usize
) -> Result<Self::BufferRepr, BufferError> where
T: Default,
unsafe fn new_buffer(
&mut self,
len: usize
) -> Result<Self::BufferRepr, BufferError> where
T: Default,
Create a new buffer with a given number of uninitialized elements.
type SliceRepr = BufferSlice<T>
type SliceMutRepr = BufferSliceMut<T>
unsafe fn slice_buffer_mut(
buffer: &mut Self::BufferRepr
) -> Result<Self::SliceMutRepr, BufferError>
type FramebufferRepr = Framebuffer<D>
unsafe fn new_framebuffer<CS, DS>(
&mut self,
size: D::Size,
_: usize,
_: &Sampler
) -> Result<Self::FramebufferRepr, FramebufferError> where
CS: ColorSlot<Self, D>,
DS: DepthSlot<Self, D>,
unsafe fn attach_color_texture(
framebuffer: &mut Self::FramebufferRepr,
texture: &Self::TextureRepr,
attachment_index: usize
) -> Result<(), FramebufferError>
unsafe fn attach_depth_texture(
framebuffer: &mut Self::FramebufferRepr,
texture: &Self::TextureRepr
) -> Result<(), FramebufferError>
unsafe fn validate_framebuffer(
framebuffer: Self::FramebufferRepr
) -> Result<Self::FramebufferRepr, FramebufferError>
unsafe fn back_buffer(
&mut self,
size: <Dim2 as Dimensionable>::Size
) -> Result<Self::FramebufferRepr, FramebufferError>
impl<V, I, W> IndexSlice<V, I, W, Deinterleaved> for WebGL2 where
V: TessVertexData<Deinterleaved, Data = Vec<DeinterleavedData>>,
I: TessIndex,
W: TessVertexData<Deinterleaved, Data = Vec<DeinterleavedData>>,
impl<V, I, W> IndexSlice<V, I, W, Deinterleaved> for WebGL2 where
V: TessVertexData<Deinterleaved, Data = Vec<DeinterleavedData>>,
I: TessIndex,
W: TessVertexData<Deinterleaved, Data = Vec<DeinterleavedData>>,
type IndexSliceRepr = BufferSlice<I>
type IndexSliceMutRepr = BufferSliceMut<I>
unsafe fn indices_mut(
tess: &mut Self::TessRepr
) -> Result<Self::IndexSliceMutRepr, TessMapError>
impl<V, I, W> IndexSlice<V, I, W, Interleaved> for WebGL2 where
V: TessVertexData<Interleaved, Data = Vec<V>>,
I: TessIndex,
W: TessVertexData<Interleaved, Data = Vec<W>>,
impl<V, I, W> IndexSlice<V, I, W, Interleaved> for WebGL2 where
V: TessVertexData<Interleaved, Data = Vec<V>>,
I: TessIndex,
W: TessVertexData<Interleaved, Data = Vec<W>>,
type IndexSliceRepr = BufferSlice<I>
type IndexSliceMutRepr = BufferSliceMut<I>
unsafe fn indices_mut(
tess: &mut Self::TessRepr
) -> Result<Self::IndexSliceMutRepr, TessMapError>
impl<V, I, W, T> InstanceSlice<V, I, W, Deinterleaved, T> for WebGL2 where
V: TessVertexData<Deinterleaved, Data = Vec<DeinterleavedData>>,
I: TessIndex,
W: TessVertexData<Deinterleaved, Data = Vec<DeinterleavedData>> + Deinterleave<T>,
impl<V, I, W, T> InstanceSlice<V, I, W, Deinterleaved, T> for WebGL2 where
V: TessVertexData<Deinterleaved, Data = Vec<DeinterleavedData>>,
I: TessIndex,
W: TessVertexData<Deinterleaved, Data = Vec<DeinterleavedData>> + Deinterleave<T>,
type InstanceSliceRepr = BufferSlice<T>
type InstanceSliceMutRepr = BufferSliceMut<T>
unsafe fn instances(
tess: &mut Self::TessRepr
) -> Result<Self::InstanceSliceRepr, TessMapError>
unsafe fn instances_mut(
tess: &mut Self::TessRepr
) -> Result<Self::InstanceSliceMutRepr, TessMapError>
impl<V, I, W> InstanceSlice<V, I, W, Interleaved, W> for WebGL2 where
V: TessVertexData<Interleaved, Data = Vec<V>>,
I: TessIndex,
W: TessVertexData<Interleaved, Data = Vec<W>>,
impl<V, I, W> InstanceSlice<V, I, W, Interleaved, W> for WebGL2 where
V: TessVertexData<Interleaved, Data = Vec<V>>,
I: TessIndex,
W: TessVertexData<Interleaved, Data = Vec<W>>,
type InstanceSliceRepr = BufferSlice<W>
type InstanceSliceMutRepr = BufferSliceMut<W>
unsafe fn instances(
tess: &mut Self::TessRepr
) -> Result<Self::InstanceSliceRepr, TessMapError>
unsafe fn instances_mut(
tess: &mut Self::TessRepr
) -> Result<Self::InstanceSliceMutRepr, TessMapError>
unsafe fn start_pipeline(
&mut self,
framebuffer: &Self::FramebufferRepr,
pipeline_state: &PipelineState
)
type PipelineRepr = Pipeline
type BoundBufferRepr = BoundBuffer
unsafe fn bind_buffer(
pipeline: &Self::PipelineRepr,
buffer: &Self::BufferRepr
) -> Result<Self::BoundBufferRepr, PipelineError>
impl<D, P> PipelineTexture<D, P> for WebGL2 where
D: Dimensionable,
P: Pixel,
P::Encoding: IntoArrayBuffer,
P::RawEncoding: IntoArrayBuffer,
impl<D, P> PipelineTexture<D, P> for WebGL2 where
D: Dimensionable,
P: Pixel,
P::Encoding: IntoArrayBuffer,
P::RawEncoding: IntoArrayBuffer,
type BoundTextureRepr = BoundTexture<D, P>
unsafe fn bind_texture(
pipeline: &Self::PipelineRepr,
texture: &Self::TextureRepr
) -> Result<Self::BoundTextureRepr, PipelineError> where
D: Dimensionable,
P: Pixel,
The implementation author, most of the time referred to as “vendor” or “compagny” responsible for the driver the implementation uses. Read more
The backend name.
The backend version.
The shading language version.
The maximum number of elements a texture array can hold.
type ProgramRepr = Program
type UniformBuilderRepr = UniformBuilder
unsafe fn new_program(
&mut self,
vertex: &Self::StageRepr,
tess: Option<TessellationStages<'_, Self::StageRepr>>,
geometry: Option<&Self::StageRepr>,
fragment: &Self::StageRepr
) -> Result<Self::ProgramRepr, ProgramError>
unsafe fn apply_semantics<Sem>(
program: &mut Self::ProgramRepr
) -> Result<Vec<VertexAttribWarning>, ProgramError> where
Sem: Semantics,
unsafe fn new_uniform_builder(
program: &mut Self::ProgramRepr
) -> Result<Self::UniformBuilderRepr, ProgramError>
unsafe fn ask_uniform<T>(
uniform_builder: &mut Self::UniformBuilderRepr,
name: &str
) -> Result<Uniform<T>, UniformWarning> where
T: Uniformable<Self>,
unsafe fn unbound<T>(_: &mut Self::UniformBuilderRepr) -> Uniform<T> where
T: Uniformable<Self>,
impl<V, I, W> Tess<V, I, W, Deinterleaved> for WebGL2 where
V: TessVertexData<Deinterleaved, Data = Vec<DeinterleavedData>>,
I: TessIndex,
W: TessVertexData<Deinterleaved, Data = Vec<DeinterleavedData>>,
impl<V, I, W> Tess<V, I, W, Deinterleaved> for WebGL2 where
V: TessVertexData<Deinterleaved, Data = Vec<DeinterleavedData>>,
I: TessIndex,
W: TessVertexData<Deinterleaved, Data = Vec<DeinterleavedData>>,
impl<V, I, W> Tess<V, I, W, Interleaved> for WebGL2 where
V: TessVertexData<Interleaved, Data = Vec<V>>,
I: TessIndex,
W: TessVertexData<Interleaved, Data = Vec<W>>,
impl<V, I, W> Tess<V, I, W, Interleaved> for WebGL2 where
V: TessVertexData<Interleaved, Data = Vec<V>>,
I: TessIndex,
W: TessVertexData<Interleaved, Data = Vec<W>>,
impl<V, I, W> TessGate<V, I, W, Deinterleaved> for WebGL2 where
V: TessVertexData<Deinterleaved, Data = Vec<DeinterleavedData>>,
I: TessIndex,
W: TessVertexData<Deinterleaved, Data = Vec<DeinterleavedData>>,
impl<V, I, W> TessGate<V, I, W, Deinterleaved> for WebGL2 where
V: TessVertexData<Deinterleaved, Data = Vec<DeinterleavedData>>,
I: TessIndex,
W: TessVertexData<Deinterleaved, Data = Vec<DeinterleavedData>>,
impl<V, I, W> TessGate<V, I, W, Interleaved> for WebGL2 where
V: TessVertexData<Interleaved, Data = Vec<V>>,
I: TessIndex,
W: TessVertexData<Interleaved, Data = Vec<W>>,
impl<V, I, W> TessGate<V, I, W, Interleaved> for WebGL2 where
V: TessVertexData<Interleaved, Data = Vec<V>>,
I: TessIndex,
W: TessVertexData<Interleaved, Data = Vec<W>>,
impl<D, P> Texture<D, P> for WebGL2 where
D: Dimensionable,
P: Pixel,
P::Encoding: IntoArrayBuffer,
P::RawEncoding: IntoArrayBuffer,
impl<D, P> Texture<D, P> for WebGL2 where
D: Dimensionable,
P: Pixel,
P::Encoding: IntoArrayBuffer,
P::RawEncoding: IntoArrayBuffer,
unsafe fn new_texture(
&mut self,
size: D::Size,
mipmaps: usize,
sampler: Sampler
) -> Result<Self::TextureRepr, TextureError>
unsafe fn clear_part(
texture: &mut Self::TextureRepr,
gen_mipmaps: GenMipmaps,
offset: D::Offset,
size: D::Size,
pixel: P::Encoding
) -> Result<(), TextureError>
unsafe fn clear(
texture: &mut Self::TextureRepr,
gen_mipmaps: GenMipmaps,
size: D::Size,
pixel: P::Encoding
) -> Result<(), TextureError>
unsafe fn upload_part(
texture: &mut Self::TextureRepr,
gen_mipmaps: GenMipmaps,
offset: D::Offset,
size: D::Size,
texels: &[P::Encoding]
) -> Result<(), TextureError>
unsafe fn upload(
texture: &mut Self::TextureRepr,
gen_mipmaps: GenMipmaps,
size: D::Size,
texels: &[P::Encoding]
) -> Result<(), TextureError>
unsafe fn upload_part_raw(
texture: &mut Self::TextureRepr,
gen_mipmaps: GenMipmaps,
offset: D::Offset,
size: D::Size,
texels: &[P::RawEncoding]
) -> Result<(), TextureError>
unsafe fn upload_raw(
texture: &mut Self::TextureRepr,
gen_mipmaps: GenMipmaps,
size: D::Size,
texels: &[P::RawEncoding]
) -> Result<(), TextureError>
unsafe fn get_raw_texels(
texture: &Self::TextureRepr,
size: D::Size
) -> Result<Vec<P::RawEncoding>, TextureError> where
P::RawEncoding: Copy + Default,
unsafe fn resize(
texture: &mut Self::TextureRepr,
size: D::Size,
mipmaps: usize
) -> Result<(), TextureError>
type TextureRepr = Texture
impl<D, S> Uniformable<WebGL2> for TextureBinding<D, S> where
D: Dimensionable,
S: SamplerType,
impl<D, S> Uniformable<WebGL2> for TextureBinding<D, S> where
D: Dimensionable,
S: SamplerType,
impl<V, I, W, T> VertexSlice<V, I, W, Deinterleaved, T> for WebGL2 where
V: TessVertexData<Deinterleaved, Data = Vec<DeinterleavedData>> + Deinterleave<T>,
I: TessIndex,
W: TessVertexData<Deinterleaved, Data = Vec<DeinterleavedData>>,
impl<V, I, W, T> VertexSlice<V, I, W, Deinterleaved, T> for WebGL2 where
V: TessVertexData<Deinterleaved, Data = Vec<DeinterleavedData>> + Deinterleave<T>,
I: TessIndex,
W: TessVertexData<Deinterleaved, Data = Vec<DeinterleavedData>>,
type VertexSliceRepr = BufferSlice<T>
type VertexSliceMutRepr = BufferSliceMut<T>
unsafe fn vertices_mut(
tess: &mut Self::TessRepr
) -> Result<Self::VertexSliceMutRepr, TessMapError>
impl<V, I, W> VertexSlice<V, I, W, Interleaved, V> for WebGL2 where
V: TessVertexData<Interleaved, Data = Vec<V>>,
I: TessIndex,
W: TessVertexData<Interleaved, Data = Vec<W>>,
impl<V, I, W> VertexSlice<V, I, W, Interleaved, V> for WebGL2 where
V: TessVertexData<Interleaved, Data = Vec<V>>,
I: TessIndex,
W: TessVertexData<Interleaved, Data = Vec<W>>,
type VertexSliceRepr = BufferSlice<V>
type VertexSliceMutRepr = BufferSliceMut<V>
unsafe fn vertices_mut(
tess: &mut Self::TessRepr
) -> Result<Self::VertexSliceMutRepr, TessMapError>
Auto Trait Implementations
impl !RefUnwindSafe for WebGL2
impl !UnwindSafe for WebGL2