Grindstone Game Engine v0.2.0
An open source game engine and toolkit.
Loading...
Searching...
No Matches
VulkanImage.hpp
1#pragma once
2
3#include <Common/Graphics/Image.hpp>
4#include <vulkan/vulkan.h>
5
6namespace Grindstone::GraphicsAPI::Vulkan {
7 class Image : public Grindstone::GraphicsAPI::Image {
8 public:
9 Image(VkImage image, VkFormat format, uint32_t swapchainIndex);
10 Image(const CreateInfo& createInfo);
11 void Create();
12 virtual ~Image();
13 public:
14 virtual VkImage GetImage() const;
15 virtual VkImageView GetImageView() const;
16 uint32_t GetWidth() const;
17 uint32_t GetHeight() const;
18 uint32_t GetDepth() const;
19 uint32_t GetMipLevels() const;
20 uint32_t GetArrayLayers() const;
21 VkImageAspectFlags GetAspect() const;
22 void UpdateNativeImage(VkImage image, VkImageView imageView, VkFormat format);
23 virtual void GenerateMipmaps(VkCommandBuffer cmd, VkImage image);
24 virtual void Resize(uint32_t width, uint32_t height) override;
25 virtual void UploadData(
26 const char* data,
27 uint64_t dataSize
28 ) override;
29 private:
30 void CreateImage();
31
32 std::string imageName;
33 uint32_t width;
34 uint32_t height;
35 uint32_t depth;
36 uint32_t mipLevels;
37 uint32_t arrayLayers;
38 GraphicsAPI::ImageDimension imageDimension;
39 uint64_t maxImageSize;
40 GraphicsAPI::Format format;
42 VkImageAspectFlags aspect;
43 VkImageViewType imageViewType;
44 VkDeviceMemory imageMemory = nullptr;
45 VkImageView imageView = nullptr;
46 VkImage image = nullptr;
47 VkFormat vkFormat = VK_FORMAT_UNDEFINED;
48 };
49}
Definition Bitset.hpp:331
Definition Image.hpp:48