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
7 class Image : public Grindstone::GraphicsAPI::Image {
8 public:
9 Image(VkImage image, VkFormat format, const char* debugName);
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 virtual void UploadDataRegions(void* buffer, size_t bufferSize, ImageRegion* regions, uint32_t regionCount) override;
30 virtual void* MapMemory(uint64_t dataSize = MAPPED_MEMORY_ENTIRE_BUFFER, uint64_t dataOffset = 0) override;
31 virtual void UnmapMemory() override;
32 virtual Grindstone::Buffer ReadbackMemory() override;
33 private:
34 void CreateImage();
35
36 std::string imageName;
37 VkImageAspectFlags aspect;
38 VkImageViewType imageViewType;
39 VkDeviceMemory imageMemory = nullptr;
40 VkImageView imageView = nullptr;
41 VkImage image = nullptr;
42 VkFormat vkFormat = VK_FORMAT_UNDEFINED;
43 };
44}
Definition Buffer.hpp:9
Definition Image.hpp:49
Definition ImguiRendererVulkan.hpp:11