#[non_exhaustive]pub struct Instance { /* private fields */ }
Expand description
The single instance for using citro3d
. This is the base type that an application
should instantiate to use this library.
Implementations§
source§impl Instance
impl Instance
sourcepub fn with_cmdbuf_size(size: usize) -> Result<Self>
pub fn with_cmdbuf_size(size: usize) -> Result<Self>
Initialize the instance with a specified command buffer size.
§Errors
Fails if citro3d
cannot be initialized.
sourcepub fn render_target<'screen>(
&self,
width: usize,
height: usize,
screen: RefMut<'screen, dyn Screen>,
depth_format: Option<DepthFormat>
) -> Result<Target<'screen>>
pub fn render_target<'screen>( &self, width: usize, height: usize, screen: RefMut<'screen, dyn Screen>, depth_format: Option<DepthFormat> ) -> Result<Target<'screen>>
Create a new render target with the specified size, color format, and depth format.
§Errors
Fails if the target could not be created with the given parameters.
sourcepub fn select_render_target(&mut self, target: &Target<'_>) -> Result<()>
pub fn select_render_target(&mut self, target: &Target<'_>) -> Result<()>
Select the given render target for drawing the frame. This must be called
as pare of a render call (i.e. within the call to
render_frame_with
).
§Errors
Fails if the given target cannot be used for drawing, or called outside the context of a frame render.
sourcepub fn render_frame_with(&mut self, f: impl FnOnce(&mut Self))
pub fn render_frame_with(&mut self, f: impl FnOnce(&mut Self))
Render a frame. The passed in function/closure can mutate the instance, such as to select a render target or bind a new shader program.
sourcepub fn buffer_info(&self) -> Option<Info>
pub fn buffer_info(&self) -> Option<Info>
Get the buffer info being used, if it exists. Note that the resulting
buffer::Info
is copied from the one currently in use.
sourcepub fn set_buffer_info(&mut self, buffer_info: &Info)
pub fn set_buffer_info(&mut self, buffer_info: &Info)
Set the buffer info to use for any following draw calls.
sourcepub fn attr_info(&self) -> Option<Info>
pub fn attr_info(&self) -> Option<Info>
Get the attribute info being used, if it exists. Note that the resulting
attrib::Info
is copied from the one currently in use.
sourcepub fn set_attr_info(&mut self, attr_info: &Info)
pub fn set_attr_info(&mut self, attr_info: &Info)
Set the attribute info to use for any following draw calls.
sourcepub fn draw_arrays(&mut self, primitive: Primitive, vbo_data: Slice<'_>)
pub fn draw_arrays(&mut self, primitive: Primitive, vbo_data: Slice<'_>)
Render primitives from the current vertex array buffer.
sourcepub fn bind_program(&mut self, program: &Program)
pub fn bind_program(&mut self, program: &Program)
Use the given shader::Program
for subsequent draw calls.
sourcepub fn bind_vertex_uniform(&mut self, index: Index, uniform: impl Into<Uniform>)
pub fn bind_vertex_uniform(&mut self, index: Index, uniform: impl Into<Uniform>)
Bind a uniform to the given index
in the vertex shader for the next draw call.
§Example
let idx = uniform::Index::from(0);
let mtx = Matrix4::identity();
instance.bind_vertex_uniform(idx, &mtx);
sourcepub fn bind_geometry_uniform(
&mut self,
index: Index,
uniform: impl Into<Uniform>
)
pub fn bind_geometry_uniform( &mut self, index: Index, uniform: impl Into<Uniform> )
Bind a uniform to the given index
in the geometry shader for the next draw call.
§Example
let idx = uniform::Index::from(0);
let mtx = Matrix4::identity();
instance.bind_geometry_uniform(idx, &mtx);