RendererData

Struct RendererData 

Source
pub struct RendererData<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> RendererData<VertexShaderId, FragmentShaderId, ProgramId, UniformId, BufferId, AttributeId, TextureId, FramebufferId, TransformFeedbackId, VertexArrayObjectId, UserCtx>

Public API

Source

pub fn builder() -> RendererDataBuilder<VertexShaderId, FragmentShaderId, ProgramId, UniformId, BufferId, AttributeId, TextureId, FramebufferId, TransformFeedbackId, VertexArrayObjectId, UserCtx>

Source

pub fn canvas(&self) -> &HtmlCanvasElement

Source

pub fn gl(&self) -> &WebGl2RenderingContext

Source

pub fn fragment_shader( &self, fragment_shader_id: &FragmentShaderId, ) -> Option<&WebGlShader>

Source

pub fn fragment_shaders(&self) -> &HashMap<FragmentShaderId, WebGlShader>

Source

pub fn vertex_shader( &self, vertex_shader_id: &VertexShaderId, ) -> Option<&WebGlShader>

Source

pub fn vertex_shaders(&self) -> &HashMap<VertexShaderId, WebGlShader>

Source

pub fn program(&self, program_id: &ProgramId) -> Option<&WebGlProgram>

Source

pub fn programs(&self) -> &HashMap<ProgramId, WebGlProgram>

Source

pub fn uniform( &self, uniform_id: &UniformId, ) -> Option<&Uniform<ProgramId, UniformId>>

Source

pub fn uniforms(&self) -> &HashMap<UniformId, Uniform<ProgramId, UniformId>>

Source

pub fn buffer(&self, buffer_id: &BufferId) -> Option<&Buffer<BufferId>>

Source

pub fn buffers(&self) -> &HashMap<BufferId, Buffer<BufferId>>

Source

pub fn attribute( &self, attribute_id: &AttributeId, ) -> Option<&Attribute<VertexArrayObjectId, BufferId, AttributeId>>

Source

pub fn attributes( &self, ) -> &HashMap<AttributeId, Attribute<VertexArrayObjectId, BufferId, AttributeId>>

Source

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

Source

pub fn textures(&self) -> &HashMap<TextureId, Texture<TextureId>>

Source

pub fn textures_by_id( &self, texture_ids: impl Into<Bridge<TextureId>>, ) -> Vec<&Texture<TextureId>>

Source

pub fn framebuffer( &self, framebuffer_id: &FramebufferId, ) -> Option<&Framebuffer<FramebufferId>>

Source

pub fn transform_feedback( &self, transform_feedback_id: &TransformFeedbackId, ) -> Option<&WebGlTransformFeedback>

Source

pub fn vao( &self, vao_id: &VertexArrayObjectId, ) -> Option<&WebGlVertexArrayObject>

Source

pub fn user_ctx(&self) -> Option<&UserCtx>

Source

pub fn use_program(&self, program_id: &ProgramId) -> &Self

Switches to using new program and its associated VAO

Source

pub fn use_vao(&self, vao_id: &VertexArrayObjectId) -> &Self

Source

pub fn update_uniform(&self, uniform_id: &UniformId) -> &Self

Updates a single uniform using the previously given update function. If no function was supplied, then this is a no-op.

Calls “use_program” on the appropriate program before each uniform’s update function (so this is not necessary to do within the callback itself, unless you need to change programs, for whatever reason).

Source

pub fn update_uniforms(&self) -> &Self

Iterates through all saved uniforms and updates them using their associated update callbacks.

Source

pub fn render(&self) -> &Self

Note: if a JavaScript render callback has been supplied, then this function will NOT call try to call it with RendererData passed in, because doing so would require copying all internal data in order to pass that data into JavaScript, which would be very slow for large RenderData objects.

If you want to render using a JavaScript render callback, instead consider using the RendererJs struct (exported to JavaScript as Renderer) OR the RendererDataJs struct (exported to JavaScript as RendererData), since these two functions automatically pass in RendererData if the types are compatible with JavaScript.

Source

pub fn save_image(&self)

Source

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

Moves Renderer into a Renderer struct, providing additional functionality like managed animations and recording.

Source

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

Trait 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> AsRef<HtmlCanvasElement> for RendererData<VertexShaderId, FragmentShaderId, ProgramId, UniformId, BufferId, AttributeId, TextureId, FramebufferId, TransformFeedbackId, VertexArrayObjectId, UserCtx>

Source§

fn as_ref(&self) -> &HtmlCanvasElement

Converts this type into a shared reference of the (usually inferred) input type.
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 RendererData<VertexShaderId, FragmentShaderId, ProgramId, UniformId, BufferId, AttributeId, TextureId, FramebufferId, TransformFeedbackId, VertexArrayObjectId, UserCtx>

Source§

fn clone( &self, ) -> RendererData<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 RendererData<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 From<RendererData<String, String, String, String, String, String, String, String, String, String, Object>> for JsValue

Source§

fn from(renderer_data: RendererDataJsInner) -> Self

Converts to this type from the input type.
Source§

impl From<RendererData<String, String, String, String, String, String, String, String, String, String, Object>> for RendererDataJs

Source§

fn from(renderer_data_js_inner: RendererDataJsInner) -> Self

Converts to this type from the input type.
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> From<RendererData<VertexShaderId, FragmentShaderId, ProgramId, UniformId, BufferId, AttributeId, TextureId, FramebufferId, TransformFeedbackId, VertexArrayObjectId, UserCtx>> for Renderer<VertexShaderId, FragmentShaderId, ProgramId, UniformId, BufferId, AttributeId, TextureId, FramebufferId, TransformFeedbackId, VertexArrayObjectId, UserCtx>

Source§

fn from( renderer_data: RendererData<VertexShaderId, FragmentShaderId, ProgramId, UniformId, BufferId, AttributeId, TextureId, FramebufferId, TransformFeedbackId, VertexArrayObjectId, UserCtx>, ) -> Self

Converts to this type from the input type.
Source§

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

Source§

fn eq( &self, other: &RendererData<VertexShaderId, FragmentShaderId, ProgramId, UniformId, BufferId, AttributeId, TextureId, FramebufferId, TransformFeedbackId, VertexArrayObjectId, UserCtx>, ) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

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

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> StructuralPartialEq for RendererData<VertexShaderId, FragmentShaderId, ProgramId, UniformId, BufferId, AttributeId, TextureId, FramebufferId, TransformFeedbackId, VertexArrayObjectId, UserCtx>

Auto Trait Implementations§

§

impl<VertexShaderId, FragmentShaderId, ProgramId, UniformId, BufferId, AttributeId, TextureId, FramebufferId, TransformFeedbackId, VertexArrayObjectId, UserCtx> Freeze for RendererData<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 RendererData<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 RendererData<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 RendererData<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 RendererData<VertexShaderId, FragmentShaderId, ProgramId, UniformId, BufferId, AttributeId, TextureId, FramebufferId, TransformFeedbackId, VertexArrayObjectId, UserCtx>
where UserCtx: Unpin, FragmentShaderId: Unpin, VertexShaderId: Unpin, ProgramId: Unpin, UniformId: Unpin, AttributeId: Unpin, BufferId: Unpin, TextureId: Unpin, VertexArrayObjectId: Unpin, FramebufferId: 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 RendererData<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.