From 03c099d1bb036b3076b3ab499d0d7f5ee28dc938 Mon Sep 17 00:00:00 2001 From: David Allemang Date: Fri, 5 Jul 2024 17:22:31 -0400 Subject: [PATCH] update vertex data each frame --- src/main.zig | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/src/main.zig b/src/main.zig index 38e6ab9..d43f809 100644 --- a/src/main.zig +++ b/src/main.zig @@ -270,10 +270,9 @@ pub fn main() !void { defer vkalloc.free(vertex_memory); try au.D.bindBufferMemory(vertex_buffer, vertex_memory, 0); - const vertex_data: [*]Vertex = @ptrCast(@alignCast(try au.D.mapMemory(vertex_memory, 0, vk.WHOLE_SIZE, .{}))); + const vertex_data: *align(1) @TypeOf(vertices) = @ptrCast(try au.D.mapMemory(vertex_memory, 0, vk.WHOLE_SIZE, .{})); defer au.D.unmapMemory(vertex_memory); - - @memcpy(vertex_data[0..vertices.len], &vertices); + vertex_data.* = vertices; const index_buffer = try au.D.createBuffer(&vk.BufferCreateInfo{ .size = @sizeOf(@TypeOf(indices)), @@ -287,11 +286,9 @@ pub fn main() !void { ); defer vkalloc.free(index_memory); try au.D.bindBufferMemory(index_buffer, index_memory, 0); - - const index_data: [*]Index = @ptrCast(@alignCast(try au.D.mapMemory(index_memory, 0, vk.WHOLE_SIZE, .{}))); + const index_data: *align(1) @TypeOf(indices) = @ptrCast(try au.D.mapMemory(index_memory, 0, vk.WHOLE_SIZE, .{})); defer au.D.unmapMemory(index_memory); - - @memcpy(index_data[0..indices.len], &indices); + index_data.* = indices; try au.D.deviceWaitIdle(); @@ -386,6 +383,9 @@ pub fn main() !void { ); defer au.D.destroyPipeline(pipeline, null); + var prng = std.Random.Sfc64.init(std.crypto.random.int(u64)); + const rand = prng.random(); + while (!au.W.should_close()) { im.c.ImGui_ImplGlfw_NewFrame(); im.c.ImGui_ImplVulkan_NewFrame(); @@ -438,6 +438,12 @@ pub fn main() !void { index_buffer, ); + for (vertex_data) |*v| { + for (v.pos[0..2]) |*f| { + f.* += (rand.float(f32) - 0.5) * 0.01; + } + } + try cmd.endCommandBuffer(); au.Q.submit(