jGL
Loading...
Searching...
No Matches
vkTexture.h
Go to the documentation of this file.
1#ifndef VKTEXTURE_H
2#define VKTEXTURE_H
3
4#include <jGL/texture.h>
7#include <jGL/Vulkan/buffer.h>
8
9#include <glm/glm.hpp>
10
11#include <stdexcept>
12#include <filesystem>
13
14namespace jGL::Vulkan
15{
16
17 void createImage
18 (
19 const Device & device,
20 uint32_t width,
21 uint32_t height,
22 uint32_t mipLevels,
23 VkSampleCountFlagBits numSamples,
24 VkFormat format,
25 VkImageTiling tiling,
26 VkImageUsageFlags usage,
27 VkMemoryPropertyFlags properties,
28 VkImage & image,
29 VkDeviceMemory & memory
30 );
31
33 (
34 const Device & device,
35 VkFormat format,
36 VkImageAspectFlags aspectFlags,
37 uint32_t mipLevels,
38 VkImage & image,
39 VkImageView & imageView
40 );
41
42 class vkTexture : public Texture
43 {
44
45 public:
46
47 vkTexture(const Device & device);
48
50 (
51 const Device & device,
52 const Command & command,
53 std::filesystem::path imageFile,
54 Texture::Type type,
55 VkSampleCountFlagBits msaaSamples = VK_SAMPLE_COUNT_1_BIT
56 );
57
59 (
60 const Device & device,
61 const Command & command,
62 uint32_t width,
63 uint32_t height,
64 uint32_t channels,
65 VkFormat format,
66 VkSampleCountFlagBits msaaSamples = VK_SAMPLE_COUNT_1_BIT
67 );
68
70 (
71 const Device & device,
72 const Command & command,
73 uint32_t width,
74 uint32_t height,
75 uint32_t channels,
76 VkFormat format,
77 std::vector<std::byte> pixels,
78 VkSampleCountFlagBits msaaSamples = VK_SAMPLE_COUNT_1_BIT
79 );
80
81 const VkImageView & getVkImageView() const { return imageView; }
82
84 {
85 vkDestroyImageView(device.getVkDevice(), imageView, nullptr);
86 vkDestroyImage(device.getVkDevice(), image, nullptr);
87 vkFreeMemory(device.getVkDevice(), imageMemory, nullptr);
88 }
89
90 void bind(unsigned unit) {/*TODO*/}
91
92 void replace
93 (
94 const Command & command,
95 uint32_t width,
96 uint32_t height,
97 uint32_t channels,
98 VkFormat format,
99 std::vector<std::byte> pixels
100 );
101
102 protected:
103
104 const Device & device;
105
106 VkImage image;
107 VkImageView imageView;
108 VkDeviceMemory imageMemory;
109
110 VkFormat format;
112 VkSampleCountFlagBits msaaSamples;
113
115 (
116 const Command & command,
117 VkFormat format,
118 VkImageLayout oldLayout,
119 VkImageLayout newLayout
120 );
121
123 (
124 const Command & command,
125 Buffer & buffer,
126 uint32_t width,
127 uint32_t height
128 );
129
130 void uploadImage
131 (
132 const Command & command,
133 std::vector<std::byte> pixels,
134 VkFormat format,
135 uint32_t width,
136 uint32_t height,
137 uint32_t channels
138 );
139
140 };
141
142}
143
144#endif /* VKTEXTURE_H */
Definition texture.h:17
Type
Definition texture.h:21
Definition buffer.h:12
Definition command.h:12
Definition device.h:10
const VkDevice & getVkDevice() const
Definition device.h:24
Definition vkTexture.h:43
const Device & device
Definition vkTexture.h:104
void copyBufferToImage(const Command &command, Buffer &buffer, uint32_t width, uint32_t height)
Definition vkTexture.cpp:261
~vkTexture()
Definition vkTexture.h:83
void uploadImage(const Command &command, std::vector< std::byte > pixels, VkFormat format, uint32_t width, uint32_t height, uint32_t channels)
Definition vkTexture.cpp:303
VkFormat format
Definition vkTexture.h:110
void replace(const Command &command, uint32_t width, uint32_t height, uint32_t channels, VkFormat format, std::vector< std::byte > pixels)
Definition vkTexture.cpp:373
uint32_t width
Definition vkTexture.h:111
void transitionImageLayout(const Command &command, VkFormat format, VkImageLayout oldLayout, VkImageLayout newLayout)
Definition vkTexture.cpp:198
VkSampleCountFlagBits msaaSamples
Definition vkTexture.h:112
const VkImageView & getVkImageView() const
Definition vkTexture.h:81
VkImage image
Definition vkTexture.h:106
VkDeviceMemory imageMemory
Definition vkTexture.h:108
void bind(unsigned unit)
Definition vkTexture.h:90
uint32_t channels
Definition vkTexture.h:111
VkImageView imageView
Definition vkTexture.h:107
uint32_t height
Definition vkTexture.h:111
Definition buffer.h:10
void createImage(const Device &device, uint32_t width, uint32_t height, uint32_t mipLevels, VkSampleCountFlagBits numSamples, VkFormat format, VkImageTiling tiling, VkImageUsageFlags usage, VkMemoryPropertyFlags properties, VkImage &image, VkDeviceMemory &memory)
Definition vkTexture.cpp:115
void createImageView(const Device &device, VkFormat format, VkImageAspectFlags aspectFlags, uint32_t mipLevels, VkImage &image, VkImageView &imageView)
Definition vkTexture.cpp:171