Start implementing the graphics pipeline

This commit is contained in:
Przemysław Gasiǹski 2024-06-28 22:35:32 +02:00
parent 5bc8af66ef
commit 34ca91f6f7
4 changed files with 83 additions and 0 deletions

View file

@ -2,6 +2,7 @@ const std = @import("std");
const sdl = @import("sdl2");
const vk = @import("vulkan");
const builtin = @import("builtin");
const shaders = @import("shaders");
const Utilities = @import("utilities.zig");
const QueueFamilyIndices = Utilities.QueueFamilyIndices;
@ -71,6 +72,7 @@ pub const VulkanRenderer = struct {
try self.getPhysicalDevice();
try self.createLogicalDevice();
try self.createSwapchain();
try self.createGraphicsPipeline();
return self;
}
@ -248,6 +250,43 @@ pub const VulkanRenderer = struct {
}
}
fn createGraphicsPipeline(self: *Self) !void {
// Create shader modules
const vert = try self.device.createShaderModule(&.{
.code_size = shaders.shader_vert.len,
.p_code = @ptrCast(&shaders.shader_vert),
}, null);
defer self.device.destroyShaderModule(vert, null);
const frag = try self.device.createShaderModule(&.{
.code_size = shaders.shader_frag.len,
.p_code = @ptrCast(&shaders.shader_frag),
}, null);
defer self.device.destroyShaderModule(frag, null);
// -- Shader stage creation information
// Vertex stage creation information
const vertex_shader_create_info: vk.PipelineShaderStageCreateInfo = .{
.stage = .{ .vertex_bit = true },
.module = vert,
.p_name = "main",
};
// Fragment stage creation information
const fragment_shader_create_info: vk.PipelineShaderStageCreateInfo = .{
.stage = .{ .fragment_bit = true },
.module = frag,
.p_name = "main",
};
const shader_create_infos = [_]vk.PipelineShaderStageCreateInfo{
vertex_shader_create_info,
fragment_shader_create_info,
};
_ = shader_create_infos;
}
fn getPhysicalDevice(self: *Self) !void {
var pdev_count: u32 = 0;
_ = try self.instance.enumeratePhysicalDevices(&pdev_count, null);