35class FGE_API TextureImage :
public ContextAware
38 explicit TextureImage(
Context const& context);
39 TextureImage(TextureImage
const& r);
40 TextureImage(TextureImage&& r)
noexcept;
41 ~TextureImage()
override;
43 TextureImage& operator=(TextureImage
const& r) =
delete;
44 TextureImage& operator=(TextureImage&& r)
noexcept;
46 bool create(glm::vec<2, int>
const& size, uint32_t levels = 1);
47 bool create(SDL_Surface* surface, uint32_t levels = 1);
48 bool create(TextureImage
const& texture, uint32_t levels = FGE_TEXTURE_IMAGE_MIPMAPS_LEVELS_AUTO);
50 [[nodiscard]]
bool isCreated()
const;
52 [[nodiscard]] SDL_Surface* copyToSurface()
const;
54 void update(SDL_Surface* surface, glm::vec<2, int>
const& offset);
55 void update(TextureImage
const& textureImage, glm::vec<2, int>
const& offset);
56 void update(
void* buffer, std::size_t bufferSize, glm::vec<2, int>
const& size, glm::vec<2, int>
const& offset);
58 void generateMipmaps(uint32_t levels = FGE_TEXTURE_IMAGE_MIPMAPS_LEVELS_AUTO);
59 [[nodiscard]] uint32_t getMipLevels()
const;
60 void forceMipLod(
float mipLodBias,
float mipLodMin,
float mipLodMax);
62 [[nodiscard]] glm::vec<2, int>
const& getSize()
const;
63 [[nodiscard]] VkExtent2D getExtent()
const;
64 [[nodiscard]]
int getBytesPerPixel()
const;
66 [[nodiscard]] VkImage getTextureImage()
const;
67 [[nodiscard]] VmaAllocation getTextureImageAllocation()
const;
69 [[nodiscard]] VkImageView getTextureImageView()
const;
70 [[nodiscard]] VkSampler getTextureSampler()
const;
72 void setNormalizedCoordinates(
bool normalized);
73 [[nodiscard]]
bool getNormalizedCoordinates()
const;
75 void setFilter(VkFilter filter);
76 [[nodiscard]] VkFilter getFilter()
const;
80 [[nodiscard]] fge::Vector2f normalizeTextureCoords(fge::Vector2i
const& coords)
const;
81 [[nodiscard]] fge::RectFloat normalizeTextureRect(fge::RectInt
const& rect)
const;
83 [[nodiscard]] uint32_t getModificationCount()
const;
85 [[nodiscard]]
static uint32_t computeMipLevels(glm::vec<2, int> size);
88 void createTextureSampler(
float mipLodBias,
float mipLodMin,
float mipLodMax);
92 VkImageView g_textureImageView;
93 VkSampler g_textureSampler;
95 glm::vec<2, int> g_textureSize;
96 int g_textureBytesPerPixel;
99 bool g_normalizedCoordinates;
103 uint32_t g_mipLevels;
104 uint32_t g_modificationCount;
Vulkan context.
Definition C_context.hpp:70