Created vulkan instance
This commit is contained in:
parent
f57582b960
commit
0fe38fdc54
1 changed files with 33 additions and 6 deletions
39
src/main.c
39
src/main.c
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue