diff --git a/src/graphics_context.zig b/src/graphics_context.zig index a77e00f..45e3b75 100644 --- a/src/graphics_context.zig +++ b/src/graphics_context.zig @@ -109,7 +109,7 @@ pub const GraphicsContext = struct { .application_version = vk.makeApiVersion(0, 0, 0, 0), .p_engine_name = app_name, .engine_version = vk.makeApiVersion(0, 0, 0, 0), - .api_version = vk.API_VERSION_1_2, + .api_version = vk.API_VERSION_1_3, }; self.instance = try self.vkb.createInstance(&.{ diff --git a/src/main.zig b/src/main.zig index ac48b66..cef4a9d 100644 --- a/src/main.zig +++ b/src/main.zig @@ -19,7 +19,7 @@ const Vertex = extern struct { .{ .binding = 0, .location = 0, - .format = .r32g32_sfloat, + .format = .r32g32b32a32_sfloat, .offset = @offsetOf(Vertex, "pos"), }, .{ @@ -30,20 +30,25 @@ const Vertex = extern struct { }, }; - pos: [2]f32, + pos: [4]f32, color: [3]f32, }; -const vertices = [_]Vertex{ - .{ .pos = .{ -0.5, -0.5 }, .color = .{ 1, 0, 0 } }, - .{ .pos = .{ -0.5, 0.5 }, .color = .{ 0, 1, 0 } }, - .{ .pos = .{ 0.5, -0.5 }, .color = .{ 0, 0, 1 } }, - .{ .pos = .{ 0.5, 0.5 }, .color = .{ 1, 1, 0 } }, -}; - const Index = u16; -const indices = [_]Index{ 0, 2, 1, 1, 2, 3 }; +const vertices = [_]Vertex{ + // Vulkan depth range is 0, 1 instead of OpenGL -1, 1 + .{ .pos = .{ -0.5, -0.5, -0.5, 1.0 }, .color = .{ 1, 0, 0 } }, + .{ .pos = .{ -0.5, 0.5, -0.5, 1.0 }, .color = .{ 0, 1, 0 } }, + .{ .pos = .{ 0.5, -0.5, -0.5, 1.0 }, .color = .{ 0, 0, 1 } }, + .{ .pos = .{ 0.5, 0.5, -0.5, 1.0 }, .color = .{ 1, 1, 0 } }, + .{ .pos = .{ -0.5, -0.5, 0.5, 1.0 }, .color = .{ 1, 0, 0 } }, + .{ .pos = .{ -0.5, 0.5, 0.5, 1.0 }, .color = .{ 0, 1, 0 } }, + .{ .pos = .{ 0.5, -0.5, 0.5, 1.0 }, .color = .{ 0, 0, 1 } }, + .{ .pos = .{ 0.5, 0.5, 0.5, 1.0 }, .color = .{ 1, 1, 0 } }, +}; + +const indices = [_]Index{ 4, 5, 6, 6, 5, 7 }; pub fn main() !void { if (c.glfwInit() != c.GLFW_TRUE) return error.GlfwInitFailed; @@ -56,6 +61,8 @@ pub fn main() !void { var extent = vk.Extent2D{ .width = 800, .height = 600 }; + c.glfwWindowHintString(c.GLFW_X11_CLASS_NAME, "floating_window"); + c.glfwWindowHintString(c.GLFW_X11_INSTANCE_NAME, "floating_window"); c.glfwWindowHint(c.GLFW_CLIENT_API, c.GLFW_NO_API); const window = c.glfwCreateWindow( @intCast(extent.width), @@ -377,7 +384,7 @@ fn createPipeline(gc: *const GraphicsContext, layout: vk.PipelineLayout, swapcha .rasterizer_discard_enable = vk.FALSE, .polygon_mode = .fill, .cull_mode = .{ .back_bit = true }, - .front_face = .clockwise, + .front_face = .counter_clockwise, .depth_bias_enable = vk.FALSE, .depth_bias_constant_factor = 0, .depth_bias_clamp = 0, diff --git a/src/shaders/triangle.vert b/src/shaders/triangle.vert index 2b8dfa5..f820750 100644 --- a/src/shaders/triangle.vert +++ b/src/shaders/triangle.vert @@ -1,11 +1,11 @@ #version 450 -layout(location = 0) in vec2 a_pos; +layout(location = 0) in vec4 a_pos; layout(location = 1) in vec3 a_color; layout(location = 0) out vec3 v_color; void main() { - gl_Position = vec4(a_pos, 0.0, 1.0); + gl_Position = a_pos; v_color = a_color; }