examples: fix/improve custom-renderer example
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
This commit is contained in:
parent
2c8ba82aa3
commit
136c86e929
2 changed files with 19 additions and 15 deletions
|
|
@ -51,6 +51,8 @@ fn init(
|
||||||
renderer: *Renderer.Mod,
|
renderer: *Renderer.Mod,
|
||||||
game: *Mod,
|
game: *Mod,
|
||||||
) !void {
|
) !void {
|
||||||
|
renderer.send(.init, .{});
|
||||||
|
|
||||||
// Create our player entity.
|
// Create our player entity.
|
||||||
const player = try core.newEntity();
|
const player = try core.newEntity();
|
||||||
|
|
||||||
|
|
@ -198,4 +200,6 @@ fn tick(
|
||||||
try renderer.set(id, .position, new_position);
|
try renderer.set(id, .position, new_position);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
renderer.send(.render_frame, .{});
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@ pub const components = .{
|
||||||
pub const local_events = .{
|
pub const local_events = .{
|
||||||
.init = .{ .handler = init },
|
.init = .{ .handler = init },
|
||||||
.deinit = .{ .handler = deinit },
|
.deinit = .{ .handler = deinit },
|
||||||
.tick = .{ .handler = tick },
|
.render_frame = .{ .handler = renderFrame },
|
||||||
};
|
};
|
||||||
|
|
||||||
const UniformBufferObject = extern struct {
|
const UniformBufferObject = extern struct {
|
||||||
|
|
@ -118,7 +118,7 @@ fn deinit(
|
||||||
renderer.state().uniform_buffer.release();
|
renderer.state().uniform_buffer.release();
|
||||||
}
|
}
|
||||||
|
|
||||||
fn tick(
|
fn renderFrame(
|
||||||
core: *mach.Core.Mod,
|
core: *mach.Core.Mod,
|
||||||
renderer: *Mod,
|
renderer: *Mod,
|
||||||
) !void {
|
) !void {
|
||||||
|
|
@ -132,19 +132,6 @@ fn tick(
|
||||||
const encoder = core.state().device.createCommandEncoder(&.{ .label = label });
|
const encoder = core.state().device.createCommandEncoder(&.{ .label = label });
|
||||||
defer encoder.release();
|
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
|
// Update uniform buffer
|
||||||
var archetypes_iter = core.entities.query(.{ .all = &.{
|
var archetypes_iter = core.entities.query(.{ .all = &.{
|
||||||
.{ .renderer = &.{ .position, .scale } },
|
.{ .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
|
// Draw
|
||||||
for (renderer.state().bind_groups[0..num_entities]) |bind_group| {
|
for (renderer.state().bind_groups[0..num_entities]) |bind_group| {
|
||||||
render_pass.setPipeline(renderer.state().pipeline);
|
render_pass.setPipeline(renderer.state().pipeline);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue