#ifndef PKE_WINDOW_HPP #define PKE_WINDOW_HPP #include "asset-manager.hpp" #include "backends/imgui_impl_glfw.h" #include "backends/imgui_impl_vulkan.h" #include "event.hpp" #include "imgui.h" #include "memory.hpp" #include "ecs.hpp" #include "glm/mat4x4.hpp" #include #include #include #include #include #include // TODO replace me with something more elegant const unsigned int MAX_FRAMES_IN_FLIGHT = 3; extern GLFWwindow *window; extern VkInstance vkInstance; extern VkPhysicalDevice vkPhysicalDevice; extern VkPhysicalDeviceProperties vkPhysicalDeviceProperties; extern VkSurfaceKHR vkSurfaceKHR; extern VkFormat depthFormat; extern VkDevice vkDevice; extern VkAllocationCallbacks *vkAllocator; extern VkQueue graphicsQueue; extern VkCommandPool graphicsCommandPool; extern VkCommandBuffer graphicsCommandBuffer; extern VkQueue transferQueue; extern VkCommandPool transferCommandPool; extern VkCommandBuffer transferCommandBuffer; extern unsigned int graphicsFamilyIndex; extern unsigned int presentFamilyIndex; extern unsigned int transferFamilyIndex; extern VkRenderPass presentRenderPass; extern VkRenderPass renderRenderPass; extern VkSampleCountFlagBits renderSampleCount; struct PKEWindowProperties { unsigned int width = 1280; unsigned int height = 720; }; struct UniformBufferObject { glm::mat4 model; glm::mat4 view; glm::mat4 proj; }; extern UniformBufferObject UBO; void CreateWindow(PKEWindowProperties *wp); void DestroyWindow(); VkShaderModule UploadShader(AssetHandle handle); void Render(); unsigned int FindMemoryTypeIndex(uint32_t typeFilter, VkMemoryPropertyFlags memPropertyFlags); void BeginTransferBuffer(VkDeviceSize requestedMemorySize, VkBuffer &buffer, VkDeviceMemory &deviceMemory, void *&deviceData); void EndTransferBuffer(VkBuffer &buffer, VkDeviceMemory &deviceMemory); #endif /* PKE_WINDOW_HPP */