diff --git a/examples/custom-renderer/App.zig b/examples/custom-renderer/App.zig index c735304c..e9dab44b 100644 --- a/examples/custom-renderer/App.zig +++ b/examples/custom-renderer/App.zig @@ -51,6 +51,8 @@ fn init( renderer: *Renderer.Mod, game: *Mod, ) !void { + renderer.send(.init, .{}); + // Create our player entity. const player = try core.newEntity(); @@ -198,4 +200,6 @@ fn tick( try renderer.set(id, .position, new_position); } } + + renderer.send(.render_frame, .{}); } diff --git a/examples/custom-renderer/Renderer.zig b/examples/custom-renderer/Renderer.zig index 65c53d57..5c2476e2 100644 --- a/examples/custom-renderer/Renderer.zig +++ b/examples/custom-renderer/Renderer.zig @@ -30,7 +30,7 @@ pub const components = .{ pub const local_events = .{ .init = .{ .handler = init }, .deinit = .{ .handler = deinit }, - .tick = .{ .handler = tick }, + .render_frame = .{ .handler = renderFrame }, }; const UniformBufferObject = extern struct { @@ -118,7 +118,7 @@ fn deinit( renderer.state().uniform_buffer.release(); } -fn tick( +fn renderFrame( core: *mach.Core.Mod, renderer: *Mod, ) !void { @@ -132,19 +132,6 @@ fn tick( const encoder = core.state().device.createCommandEncoder(&.{ .label = label }); defer encoder.release(); - // Begin render pass - const sky_blue_background = gpu.Color{ .r = 0.776, .g = 0.988, .b = 1, .a = 1 }; - const color_attachments = [_]gpu.RenderPassColorAttachment{.{ - .view = back_buffer_view, - .clear_value = sky_blue_background, - .load_op = .clear, - .store_op = .store, - }}; - const render_pass = encoder.beginRenderPass(&gpu.RenderPassDescriptor.init(.{ - .label = label, - .color_attachments = &color_attachments, - })); - // Update uniform buffer var archetypes_iter = core.entities.query(.{ .all = &.{ .{ .renderer = &.{ .position, .scale } }, @@ -166,6 +153,19 @@ fn tick( } } + // Begin render pass + const sky_blue_background = gpu.Color{ .r = 0.776, .g = 0.988, .b = 1, .a = 1 }; + const color_attachments = [_]gpu.RenderPassColorAttachment{.{ + .view = back_buffer_view, + .clear_value = sky_blue_background, + .load_op = .clear, + .store_op = .store, + }}; + const render_pass = encoder.beginRenderPass(&gpu.RenderPassDescriptor.init(.{ + .label = label, + .color_attachments = &color_attachments, + })); + // Draw for (renderer.state().bind_groups[0..num_entities]) |bind_group| { render_pass.setPipeline(renderer.state().pipeline);