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 <stdbool.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
#include <vulkan/vulkan_core.h>
|
||||||
|
|
||||||
#define GLFW_INCLUDE_VULKAN
|
#define GLFW_INCLUDE_VULKAN
|
||||||
#include <GLFW/glfw3.h>
|
#include <GLFW/glfw3.h>
|
||||||
|
|
||||||
typedef struct Application {
|
typedef struct Application {
|
||||||
GLFWwindow *window;
|
GLFWwindow *window;
|
||||||
|
VkInstance instance;
|
||||||
} Application;
|
} Application;
|
||||||
|
|
||||||
void initWindow(Application *app);
|
void createInstance(Application *app) {
|
||||||
void initVulkan();
|
VkApplicationInfo appInfo;
|
||||||
void mainLoop(Application *app);
|
appInfo.sType = VK_STRUCTURE_TYPE_APPLICATION_INFO;
|
||||||
void cleanup(Application *app);
|
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) {
|
void initWindow(Application *app) {
|
||||||
glfwInit();
|
glfwInit();
|
||||||
|
|
@ -20,7 +47,7 @@ void initWindow(Application *app) {
|
||||||
glfwWindowHint(GLFW_RESIZABLE, GLFW_FALSE);
|
glfwWindowHint(GLFW_RESIZABLE, GLFW_FALSE);
|
||||||
app->window = glfwCreateWindow(800, 600, "Vulkan", NULL, NULL);
|
app->window = glfwCreateWindow(800, 600, "Vulkan", NULL, NULL);
|
||||||
}
|
}
|
||||||
void initVulkan() {}
|
void initVulkan(Application *app) { createInstance(app); }
|
||||||
void mainLoop(Application *app) {
|
void mainLoop(Application *app) {
|
||||||
while (!glfwWindowShouldClose(app->window)) {
|
while (!glfwWindowShouldClose(app->window)) {
|
||||||
glfwPollEvents();
|
glfwPollEvents();
|
||||||
|
|
@ -35,7 +62,7 @@ int main(void) {
|
||||||
Application app;
|
Application app;
|
||||||
|
|
||||||
initWindow(&app);
|
initWindow(&app);
|
||||||
initVulkan();
|
initVulkan(&app);
|
||||||
mainLoop(&app);
|
mainLoop(&app);
|
||||||
cleanup(&app);
|
cleanup(&app);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue