update vertex data each frame

This commit is contained in:
David Allemang
2024-07-05 17:22:31 -04:00
parent a89ee99fd4
commit 03c099d1bb

View File

@@ -270,10 +270,9 @@ pub fn main() !void {
defer vkalloc.free(vertex_memory); defer vkalloc.free(vertex_memory);
try au.D.bindBufferMemory(vertex_buffer, vertex_memory, 0); 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); defer au.D.unmapMemory(vertex_memory);
vertex_data.* = vertices;
@memcpy(vertex_data[0..vertices.len], &vertices);
const index_buffer = try au.D.createBuffer(&vk.BufferCreateInfo{ const index_buffer = try au.D.createBuffer(&vk.BufferCreateInfo{
.size = @sizeOf(@TypeOf(indices)), .size = @sizeOf(@TypeOf(indices)),
@@ -287,11 +286,9 @@ pub fn main() !void {
); );
defer vkalloc.free(index_memory); defer vkalloc.free(index_memory);
try au.D.bindBufferMemory(index_buffer, index_memory, 0); try au.D.bindBufferMemory(index_buffer, index_memory, 0);
const index_data: *align(1) @TypeOf(indices) = @ptrCast(try au.D.mapMemory(index_memory, 0, vk.WHOLE_SIZE, .{}));
const index_data: [*]Index = @ptrCast(@alignCast(try au.D.mapMemory(index_memory, 0, vk.WHOLE_SIZE, .{})));
defer au.D.unmapMemory(index_memory); defer au.D.unmapMemory(index_memory);
index_data.* = indices;
@memcpy(index_data[0..indices.len], &indices);
try au.D.deviceWaitIdle(); try au.D.deviceWaitIdle();
@@ -386,6 +383,9 @@ pub fn main() !void {
); );
defer au.D.destroyPipeline(pipeline, null); 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()) { while (!au.W.should_close()) {
im.c.ImGui_ImplGlfw_NewFrame(); im.c.ImGui_ImplGlfw_NewFrame();
im.c.ImGui_ImplVulkan_NewFrame(); im.c.ImGui_ImplVulkan_NewFrame();
@@ -438,6 +438,12 @@ pub fn main() !void {
index_buffer, index_buffer,
); );
for (vertex_data) |*v| {
for (v.pos[0..2]) |*f| {
f.* += (rand.float(f32) - 0.5) * 0.01;
}
}
try cmd.endCommandBuffer(); try cmd.endCommandBuffer();
au.Q.submit( au.Q.submit(