update vertex data each frame
This commit is contained in:
20
src/main.zig
20
src/main.zig
@@ -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(
|
||||||
|
Reference in New Issue
Block a user