1#ifndef VULKANINSTANCE_H
2#define VULKANINSTANCE_H
5#define GLFW_INCLUDE_VULKAN
50 std::string characters,
54 glm::bvec2 centre = glm::bvec2(
false,
false)
57 textRenderer->renderText
82 viewport.width = view.z;
83 viewport.height = view.w;
88 return std::static_pointer_cast<Particles>(std::make_shared<vkParticles>(sizeHint));
92 return std::static_pointer_cast<Texture>
94 std::make_shared<vkTexture>
105 TODO(
"VulkanInstance::createTexture from bytes undefined");
106 return std::static_pointer_cast<Texture>
108 std::make_shared<vkTexture>
117 return std::static_pointer_cast<SpriteRenderer>
119 std::make_shared<vkSpriteRenderer>
128 return std::static_pointer_cast<ShapeRenderer>
130 std::make_shared<vkShapeRenderer>
151 const unsigned concurrentFrames = 2;
153 unsigned currentFrame = 0;
155 bool midFrame =
false;
157 glm::vec4 clearColour = glm::vec4(1.0,1.0,1.0,1.0);
159 std::vector<VkSemaphore> imageAvailableSemaphores, renderFinsihedSemaphores;
160 std::vector<VkFence> framesFinished;
164 VkDebugUtilsMessengerEXT debugMessenger;
166 std::vector<VkLayerProperties> availableLayers;
170 uint32_t swapchainImageIndex = 0;
174 VkCommandBuffer commandBuffer;
175 std::vector<std::unique_ptr<Framebuffer>> framebuffers;
177 std::unique_ptr<TextRenderer> textRenderer;
182 VkImage framebufferImage;
183 VkImageView framebufferImageView;
184 VkDeviceMemory framebufferDeviceMemory;
186 void supportedValidationLayers(
bool print =
false);
187 bool checkValidationLayerSupport();
Definition desktopDisplay.h:61
Type
Definition texture.h:21
const VkDevice & getVkDevice() const
Definition device.h:24
Definition renderPass.h:11
Definition swapchain.h:15
Definition vulkanInstance.h:34
void setMSAA(uint8_t samples)
Definition vulkanInstance.h:73
void text(std::string characters, glm::vec2 position, float scale, glm::vec4 colour, glm::bvec2 centre=glm::bvec2(false, false))
Definition vulkanInstance.h:49
std::shared_ptr< Texture > createTexture(std::vector< std::byte > data, Texture::Type type)
Definition vulkanInstance.h:103
void setClear(glm::vec4 colour)
Definition vulkanInstance.h:75
void setViewport(glm::vec4 view)
Definition vulkanInstance.h:78
const VkInstance & getVkInstance() const
Definition vulkanInstance.h:139
void createSyncObjects()
Definition vulkanInstance.cpp:395
void setTextProjection(glm::mat4 p)
Definition vulkanInstance.h:77
~VulkanInstance()
Definition vulkanInstance.cpp:196
const unsigned getConcurrentFrames() const
Definition vulkanInstance.h:142
const Device & getDevice() const
Definition vulkanInstance.h:137
void clear()
Definition vulkanInstance.h:71
const Swapchain & getSwapchain() const
Definition vulkanInstance.h:140
std::shared_ptr< SpriteRenderer > createSpriteRenderer(size_t sizeHint)
Definition vulkanInstance.h:115
void setProjection(glm::mat4 proj)
Definition vulkanInstance.h:76
void finish()
Definition vulkanInstance.h:42
std::shared_ptr< Texture > createTexture(std::filesystem::path imageFile, Texture::Type type)
Definition vulkanInstance.h:90
void endFrame()
Definition vulkanInstance.cpp:337
const RenderPass & getRenderPass() const
Definition vulkanInstance.h:141
const Command & getCommand() const
Definition vulkanInstance.h:138
std::shared_ptr< Particles > createParticles(size_t sizeHint)
Definition vulkanInstance.h:86
void beginFrame()
Definition vulkanInstance.cpp:268
std::shared_ptr< ShapeRenderer > createShapeRenderer(size_t sizeHint)
Definition vulkanInstance.h:126
bool closing
Definition jGL.h:65
void TODO(std::string context)
Definition warning.cpp:3