RendererDataBuilder

Struct RendererDataBuilder 

Source
pub struct RendererDataBuilder<VertexShaderId: Id = IdDefault, FragmentShaderId: Id = IdDefault, ProgramId: Id = IdDefault, UniformId: Id + IdName = IdDefault, BufferId: Id = IdDefault, AttributeId: Id + IdName = IdDefault, TextureId: Id = IdDefault, FramebufferId: Id = IdDefault, TransformFeedbackId: Id = IdDefault, VertexArrayObjectId: Id = IdDefault, UserCtx: Clone + 'static = ()> { /* private fields */ }

Implementations§

Source§

impl<VertexShaderId: Id, FragmentShaderId: Id, ProgramId: Id, UniformId: Id + IdName, BufferId: Id, AttributeId: Id + IdName, TextureId: Id, FramebufferId: Id, TransformFeedbackId: Id, VertexArrayObjectId: Id, UserCtx: Clone + 'static> RendererDataBuilder<VertexShaderId, FragmentShaderId, ProgramId, UniformId, BufferId, AttributeId, TextureId, FramebufferId, TransformFeedbackId, VertexArrayObjectId, UserCtx>

Public API

Source

pub fn texture(&self, texture_id: &TextureId) -> Option<&Texture<TextureId>>

This is the only internal storage available publicly from the builder, because it is necessary to use it during the build process for framebuffers.

Source

pub fn set_canvas(&mut self, canvas: HtmlCanvasElement) -> &mut Self

Save the canvas that will be rendered to and get its associated WebGL2 rendering context

Source

pub fn add_fragment_shader_src( &mut self, id: FragmentShaderId, fragment_shader_src: impl Into<String>, ) -> &mut Self

Saves a fragment shader source and its corresponding id

Source

pub fn add_vertex_shader_src( &mut self, id: VertexShaderId, vertex_shader_src: impl Into<String>, ) -> &mut Self

Saves a vertex shader source and its corresponding id

Saves a link between a vertex shader id and a fragment shader id.

During the RendererData build process, this program_link is used to link a new WebGL2 program together by associating the vertex shader id and the fragment shader id with their corresponding compiled shaders.

Source

pub fn set_render_callback( &mut self, render_callback: impl Into<RenderCallback<VertexShaderId, FragmentShaderId, ProgramId, UniformId, BufferId, AttributeId, TextureId, FramebufferId, TransformFeedbackId, VertexArrayObjectId, UserCtx>>, ) -> &mut Self

Save a callback that will be called each time it is time to render a new frame

Source

pub fn set_user_ctx(&mut self, ctx: impl Into<UserCtx>) -> &mut Self

Save as arbitrary user context that can be accessed from within the render callback

This can include stateful data and anything else that might be necessary to access while performing a render.

Saves a link that will be used to build a uniform at build time.

I.e. once all WebGL shaders are compiled and all programs are linked, all uniforms will be found within their associated programs, and will be saved with their associated update functions.

Saves a link that will be used to build a WebGL buffer at build time.

Saves a link that will be used to build a a WebGL attribute at build time.

Saves a link that will be used to build a buffer/attribute pair at build time.

Saves a link that will be used to build a framebuffer at build time

Saves a link that will be used to build a transformFeedback at build time

Saves an id that will be used to create a VAO at build time

This VAO can then be referenced by AttributeLinks

Source

pub fn set_get_context_callback( &mut self, get_context_callback: impl Into<GetContextCallback>, ) -> &mut Self

Source

pub fn build_renderer( self, ) -> Result<Renderer<VertexShaderId, FragmentShaderId, ProgramId, UniformId, BufferId, AttributeId, TextureId, FramebufferId, TransformFeedbackId, VertexArrayObjectId, UserCtx>, RendererBuilderError>

Compiles all vertex shaders and fragment shaders. Links together any programs that have been specified. Outputs the final RendererData, wrapped in a top-level Renderer.

Source

pub fn build_renderer_data( self, ) -> Result<RendererData<VertexShaderId, FragmentShaderId, ProgramId, UniformId, BufferId, AttributeId, TextureId, FramebufferId, TransformFeedbackId, VertexArrayObjectId, UserCtx>, RendererBuilderError>

Compiles all vertex shaders and fragment shaders. Links together any programs that have been specified. Outputs the final RendererData.

Trait Implementations§

Source§

impl<VertexShaderId: Clone + Id, FragmentShaderId: Clone + Id, ProgramId: Clone + Id, UniformId: Clone + Id + IdName, BufferId: Clone + Id, AttributeId: Clone + Id + IdName, TextureId: Clone + Id, FramebufferId: Clone + Id, TransformFeedbackId: Clone + Id, VertexArrayObjectId: Clone + Id, UserCtx: Clone + Clone + 'static> Clone for RendererDataBuilder<VertexShaderId, FragmentShaderId, ProgramId, UniformId, BufferId, AttributeId, TextureId, FramebufferId, TransformFeedbackId, VertexArrayObjectId, UserCtx>

Source§

fn clone( &self, ) -> RendererDataBuilder<VertexShaderId, FragmentShaderId, ProgramId, UniformId, BufferId, AttributeId, TextureId, FramebufferId, TransformFeedbackId, VertexArrayObjectId, UserCtx>

Returns a duplicate 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<VertexShaderId: Debug + Id, FragmentShaderId: Debug + Id, ProgramId: Debug + Id, UniformId: Debug + Id + IdName, BufferId: Debug + Id, AttributeId: Debug + Id + IdName, TextureId: Debug + Id, FramebufferId: Debug + Id, TransformFeedbackId: Debug + Id, VertexArrayObjectId: Debug + Id, UserCtx: Debug + Clone + 'static> Debug for RendererDataBuilder<VertexShaderId, FragmentShaderId, ProgramId, UniformId, BufferId, AttributeId, TextureId, FramebufferId, TransformFeedbackId, VertexArrayObjectId, UserCtx>

Source§

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

Formats the value using the given formatter. Read more
Source§

impl<VertexShaderId: Id, FragmentShaderId: Id, ProgramId: Id, UniformId: Id + IdName, BufferId: Id, AttributeId: Id + IdName, TextureId: Id, FramebufferId: Id, TransformFeedbackId: Id, VertexArrayObjectId: Id, UserCtx: Clone> Default for RendererDataBuilder<VertexShaderId, FragmentShaderId, ProgramId, UniformId, BufferId, AttributeId, TextureId, FramebufferId, TransformFeedbackId, VertexArrayObjectId, UserCtx>

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

§

impl<VertexShaderId, FragmentShaderId, ProgramId, UniformId, BufferId, AttributeId, TextureId, FramebufferId, TransformFeedbackId, VertexArrayObjectId, UserCtx> Freeze for RendererDataBuilder<VertexShaderId, FragmentShaderId, ProgramId, UniformId, BufferId, AttributeId, TextureId, FramebufferId, TransformFeedbackId, VertexArrayObjectId, UserCtx>
where UserCtx: Freeze,

§

impl<VertexShaderId = IdDefault, FragmentShaderId = IdDefault, ProgramId = IdDefault, UniformId = IdDefault, BufferId = IdDefault, AttributeId = IdDefault, TextureId = IdDefault, FramebufferId = IdDefault, TransformFeedbackId = IdDefault, VertexArrayObjectId = IdDefault, UserCtx = ()> !RefUnwindSafe for RendererDataBuilder<VertexShaderId, FragmentShaderId, ProgramId, UniformId, BufferId, AttributeId, TextureId, FramebufferId, TransformFeedbackId, VertexArrayObjectId, UserCtx>

§

impl<VertexShaderId = IdDefault, FragmentShaderId = IdDefault, ProgramId = IdDefault, UniformId = IdDefault, BufferId = IdDefault, AttributeId = IdDefault, TextureId = IdDefault, FramebufferId = IdDefault, TransformFeedbackId = IdDefault, VertexArrayObjectId = IdDefault, UserCtx = ()> !Send for RendererDataBuilder<VertexShaderId, FragmentShaderId, ProgramId, UniformId, BufferId, AttributeId, TextureId, FramebufferId, TransformFeedbackId, VertexArrayObjectId, UserCtx>

§

impl<VertexShaderId = IdDefault, FragmentShaderId = IdDefault, ProgramId = IdDefault, UniformId = IdDefault, BufferId = IdDefault, AttributeId = IdDefault, TextureId = IdDefault, FramebufferId = IdDefault, TransformFeedbackId = IdDefault, VertexArrayObjectId = IdDefault, UserCtx = ()> !Sync for RendererDataBuilder<VertexShaderId, FragmentShaderId, ProgramId, UniformId, BufferId, AttributeId, TextureId, FramebufferId, TransformFeedbackId, VertexArrayObjectId, UserCtx>

§

impl<VertexShaderId, FragmentShaderId, ProgramId, UniformId, BufferId, AttributeId, TextureId, FramebufferId, TransformFeedbackId, VertexArrayObjectId, UserCtx> Unpin for RendererDataBuilder<VertexShaderId, FragmentShaderId, ProgramId, UniformId, BufferId, AttributeId, TextureId, FramebufferId, TransformFeedbackId, VertexArrayObjectId, UserCtx>
where UserCtx: Unpin, VertexShaderId: Unpin, FragmentShaderId: Unpin, ProgramId: Unpin, UniformId: Unpin, BufferId: Unpin, AttributeId: Unpin, TextureId: Unpin, FramebufferId: Unpin, VertexArrayObjectId: Unpin, TransformFeedbackId: Unpin,

§

impl<VertexShaderId = IdDefault, FragmentShaderId = IdDefault, ProgramId = IdDefault, UniformId = IdDefault, BufferId = IdDefault, AttributeId = IdDefault, TextureId = IdDefault, FramebufferId = IdDefault, TransformFeedbackId = IdDefault, VertexArrayObjectId = IdDefault, UserCtx = ()> !UnwindSafe for RendererDataBuilder<VertexShaderId, FragmentShaderId, ProgramId, UniformId, BufferId, AttributeId, TextureId, FramebufferId, TransformFeedbackId, VertexArrayObjectId, UserCtx>

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> 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.