Created vulkan instance

This commit is contained in:
Warwick 2024-06-18 16:31:06 +01:00
parent f57582b960
commit 0fe38fdc54

View file

@ -1,18 +1,45 @@
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include <vulkan/vulkan_core.h>
#define GLFW_INCLUDE_VULKAN
#include <GLFW/glfw3.h>
typedef struct Application {
GLFWwindow *window;
VkInstance instance;
} Application;
void initWindow(Application *app);
void initVulkan();
void mainLoop(Application *app);
void cleanup(Application *app);
void createInstance(Application *app) {
VkApplicationInfo appInfo;
appInfo.sType = VK_STRUCTURE_TYPE_APPLICATION_INFO;
appInfo.pApplicationName = "Hello Triangle";
appInfo.applicationVersion = VK_MAKE_VERSION(1, 0, 0);
appInfo.pEngineName = "No Engine";
appInfo.engineVersion = VK_MAKE_VERSION(1, 0, 0);
appInfo.apiVersion = VK_API_VERSION_1_0;
VkInstanceCreateInfo createInfo;
createInfo.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO;
createInfo.pApplicationInfo = &appInfo;
uint32_t glfwExtensionCount = 0;
const char **glfwExtensions;
glfwExtensions = glfwGetRequiredInstanceExtensions(&glfwExtensionCount);
createInfo.enabledExtensionCount = glfwExtensionCount;
createInfo.ppEnabledExtensionNames = glfwExtensions;
createInfo.enabledLayerCount = 0;
VkResult result = vkCreateInstance(&createInfo, NULL, &app->instance);
if (result != VK_SUCCESS){
fprintf(stderr, "Failed to create vulkan instance");
exit(EXIT_FAILURE);
}
}
void initWindow(Application *app) {
glfwInit();
@ -20,7 +47,7 @@ void initWindow(Application *app) {
glfwWindowHint(GLFW_RESIZABLE, GLFW_FALSE);
app->window = glfwCreateWindow(800, 600, "Vulkan", NULL, NULL);
}
void initVulkan() {}
void initVulkan(Application *app) { createInstance(app); }
void mainLoop(Application *app) {
while (!glfwWindowShouldClose(app->window)) {
glfwPollEvents();
@ -35,7 +62,7 @@ int main(void) {
Application app;
initWindow(&app);
initVulkan();
initVulkan(&app);
mainLoop(&app);
cleanup(&app);