@@ -37,6 +37,10 @@ pub enum RenderCommand {
3737 offset : u32 ,
3838 bytes : Vec < u32 > ,
3939 } ,
40+ BindVertexBuffer {
41+ pipeline : super :: ResourceId ,
42+ buffer : u32 ,
43+ } ,
4044 /// Draws a graphical primitive.
4145 Draw {
4246 vertices : Range < u32 > ,
@@ -47,15 +51,15 @@ impl RenderCommand {
4751 /// Converts the RenderCommand into a platform compatible render command.
4852 // TODO(vmarcella): implement this using Into<PlatformRenderCommand>
4953 pub fn into_platform_command (
50- self ,
54+ & self ,
5155 render_context : & mut RenderContext ,
5256 ) -> PlatformRenderCommand {
5357 return match self {
5458 RenderCommand :: SetViewports {
5559 start_at,
5660 viewports,
5761 } => PlatformRenderCommand :: SetViewports {
58- start_at,
62+ start_at : * start_at ,
5963 viewports : viewports
6064 . into_iter ( )
6165 . map ( |viewport| viewport. clone_gfx_viewport ( ) )
@@ -65,7 +69,7 @@ impl RenderCommand {
6569 start_at,
6670 viewports,
6771 } => PlatformRenderCommand :: SetScissors {
68- start_at,
72+ start_at : * start_at ,
6973 viewports : viewports
7074 . into_iter ( )
7175 . map ( |viewport| viewport. clone_gfx_viewport ( ) )
@@ -78,14 +82,14 @@ impl RenderCommand {
7882 let surface = surface_from_context ( render_context) ;
7983 let frame_buffer = render_context. allocate_and_get_frame_buffer (
8084 render_context
81- . get_render_pass ( render_pass)
85+ . get_render_pass ( * render_pass)
8286 . into_gfx_render_pass ( )
8387 . as_ref ( ) ,
8488 ) ;
8589
8690 PlatformRenderCommand :: BeginRenderPass {
8791 render_pass : render_context
88- . get_render_pass ( render_pass)
92+ . get_render_pass ( * render_pass)
8993 . into_gfx_render_pass ( ) ,
9094 surface : surface. clone ( ) ,
9195 frame_buffer : frame_buffer. clone ( ) ,
@@ -97,7 +101,7 @@ impl RenderCommand {
97101 PlatformRenderCommand :: AttachGraphicsPipeline {
98102 pipeline : render_context
99103 . render_pipelines
100- . get ( pipeline)
104+ . get ( * pipeline)
101105 . unwrap ( )
102106 . into_platform_render_pipeline ( ) ,
103107 }
@@ -110,13 +114,25 @@ impl RenderCommand {
110114 } => PlatformRenderCommand :: PushConstants {
111115 pipeline : render_context
112116 . render_pipelines
113- . get ( pipeline)
117+ . get ( * pipeline)
114118 . unwrap ( )
115119 . into_platform_render_pipeline ( ) ,
116- stage,
117- offset,
120+ stage : * stage ,
121+ offset : * offset ,
118122 bytes : bytes. clone ( ) ,
119123 } ,
124+ RenderCommand :: BindVertexBuffer { pipeline, buffer } => {
125+ PlatformRenderCommand :: BindVertexBuffer {
126+ buffer : render_context
127+ . render_pipelines
128+ . get ( * pipeline)
129+ . unwrap ( )
130+ . buffers ( )
131+ . get ( * buffer as usize )
132+ . unwrap ( )
133+ . internal_buffer_rc ( ) ,
134+ }
135+ }
120136 RenderCommand :: Draw { vertices } => PlatformRenderCommand :: Draw {
121137 vertices : vertices. clone ( ) ,
122138 } ,
0 commit comments