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
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
pub fn builder() -> RendererDataBuilder<VertexShaderId, FragmentShaderId, ProgramId, UniformId, BufferId, AttributeId, TextureId, FramebufferId, TransformFeedbackId, VertexArrayObjectId, UserCtx>
pub fn canvas(&self) -> &HtmlCanvasElement
pub fn gl(&self) -> &WebGl2RenderingContext
pub fn fragment_shader( &self, fragment_shader_id: &FragmentShaderId, ) -> Option<&WebGlShader>
pub fn fragment_shaders(&self) -> &HashMap<FragmentShaderId, WebGlShader>
pub fn vertex_shader( &self, vertex_shader_id: &VertexShaderId, ) -> Option<&WebGlShader>
pub fn vertex_shaders(&self) -> &HashMap<VertexShaderId, WebGlShader>
pub fn program(&self, program_id: &ProgramId) -> Option<&WebGlProgram>
pub fn programs(&self) -> &HashMap<ProgramId, WebGlProgram>
pub fn uniform( &self, uniform_id: &UniformId, ) -> Option<&Uniform<ProgramId, UniformId>>
pub fn uniforms(&self) -> &HashMap<UniformId, Uniform<ProgramId, UniformId>>
pub fn buffer(&self, buffer_id: &BufferId) -> Option<&Buffer<BufferId>>
pub fn buffers(&self) -> &HashMap<BufferId, Buffer<BufferId>>
pub fn attribute( &self, attribute_id: &AttributeId, ) -> Option<&Attribute<VertexArrayObjectId, BufferId, AttributeId>>
pub fn attributes( &self, ) -> &HashMap<AttributeId, Attribute<VertexArrayObjectId, BufferId, AttributeId>>
pub fn texture(&self, texture_id: &TextureId) -> Option<&Texture<TextureId>>
pub fn textures(&self) -> &HashMap<TextureId, Texture<TextureId>>
pub fn textures_by_id( &self, texture_ids: impl Into<Bridge<TextureId>>, ) -> Vec<&Texture<TextureId>>
pub fn framebuffer( &self, framebuffer_id: &FramebufferId, ) -> Option<&Framebuffer<FramebufferId>>
pub fn transform_feedback( &self, transform_feedback_id: &TransformFeedbackId, ) -> Option<&WebGlTransformFeedback>
pub fn vao( &self, vao_id: &VertexArrayObjectId, ) -> Option<&WebGlVertexArrayObject>
pub fn user_ctx(&self) -> Option<&UserCtx>
Sourcepub fn use_program(&self, program_id: &ProgramId) -> &Self
pub fn use_program(&self, program_id: &ProgramId) -> &Self
Switches to using new program and its associated VAO
pub fn use_vao(&self, vao_id: &VertexArrayObjectId) -> &Self
Sourcepub fn update_uniform(&self, uniform_id: &UniformId) -> &Self
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).
Sourcepub fn update_uniforms(&self) -> &Self
pub fn update_uniforms(&self) -> &Self
Iterates through all saved uniforms and updates them using their associated update callbacks.
Sourcepub fn render(&self) -> &Self
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.
pub fn save_image(&self)
Sourcepub fn into_renderer(
self,
) -> Renderer<VertexShaderId, FragmentShaderId, ProgramId, UniformId, BufferId, AttributeId, TextureId, FramebufferId, TransformFeedbackId, VertexArrayObjectId, UserCtx>
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.
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>
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
fn as_ref(&self) -> &HtmlCanvasElement
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>
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>
fn clone( &self, ) -> RendererData<VertexShaderId, FragmentShaderId, ProgramId, UniformId, BufferId, AttributeId, TextureId, FramebufferId, TransformFeedbackId, VertexArrayObjectId, UserCtx>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§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>
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§impl From<RendererData<String, String, String, String, String, String, String, String, String, String, Object>> for JsValue
impl From<RendererData<String, String, String, String, String, String, String, String, String, String, Object>> for JsValue
Source§fn from(renderer_data: RendererDataJsInner) -> Self
fn from(renderer_data: RendererDataJsInner) -> Self
Source§impl From<RendererData<String, String, String, String, String, String, String, String, String, String, Object>> for RendererDataJs
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
fn from(renderer_data_js_inner: RendererDataJsInner) -> Self
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>
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
fn from( renderer_data: RendererData<VertexShaderId, FragmentShaderId, ProgramId, UniformId, BufferId, AttributeId, TextureId, FramebufferId, TransformFeedbackId, VertexArrayObjectId, UserCtx>, ) -> Self
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>
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
fn eq( &self, other: &RendererData<VertexShaderId, FragmentShaderId, ProgramId, UniformId, BufferId, AttributeId, TextureId, FramebufferId, TransformFeedbackId, VertexArrayObjectId, UserCtx>, ) -> bool
self and other values to be equal, and is used by ==.