pawengine/glfw.c
2025-02-09 18:48:25 +01:00

44 lines
1.1 KiB
C

#include "log.h"
#include "vulkan.h"
#include <GLFW/glfw3.h>
#include <stdbool.h>
#include <stdlib.h>
struct cat_GLFW {
GLFWwindow *window;
struct Vk *vk;
};
VkSurfaceKHR create_glfw_surface(void *data, VkInstance instance) {
struct cat_GLFW *state = data;
VkSurfaceKHR surface;
meow("%d", glfwCreateWindowSurface(instance, state->window, NULL, &surface));
meow("created a surface at %p", surface);
return surface;
}
struct cat_GLFW *cat_init_glfw(const char *name, int width, int heigh,
struct Vk **vk) {
glfwInit();
glfwWindowHint(GLFW_CLIENT_API, GLFW_NO_API);
glfwWindowHint(GLFW_RESIZABLE, GLFW_FALSE);
struct cat_GLFW *state = malloc(sizeof(struct cat_GLFW));
state->window = glfwCreateWindow(width, heigh, "meooow", NULL, NULL);
state->vk = init_vk(state, 500, 500, create_glfw_surface);
*vk = state->vk;
return state;
}
void cat_glfw_draw(struct cat_GLFW *state) {
glfwPollEvents();
vk_draw(state->vk);
}
void cat_uninit_glfw(struct cat_GLFW *state) {
glfwDestroyWindow(state->window);
glfwTerminate();
}
bool cat_glfw_should_close(struct cat_GLFW *state) { return false; }