adding texture atlas class

This commit is contained in:
Kbz-8
2023-04-07 17:27:23 +02:00
parent f6c6b5e018
commit 5f16a98d08
9 changed files with 5230 additions and 22643 deletions

46
src/renderer/images/texture_atlas.h git.filemode.normal_file
View File

@@ -0,0 +1,46 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* texture_atlas.h :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: maldavid <kbz_8.dev@akel-engine.com> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2023/04/07 16:36:33 by maldavid #+# #+# */
/* Updated: 2023/04/07 16:44:43 by maldavid ### ########.fr */
/* */
/* ************************************************************************** */
#ifndef __MLX_TEXTURE_ATLAS__
#define __MLX_TEXTURE_ATLAS__
#include <renderer/images/texture.h>
#include <array>
#include <glm/glm.hpp>
namespace mlx
{
class TextureAtlas : public Image
{
public:
TextureAtlas() = default;
void create(uint8_t* pixels, uint32_t width, uint32_t height, VkFormat format, uint32_t render_width, uint32_t rendre_height);
void render(class Renderer& renderer, int x, int y, std::array<glm::vec2, 4> uv);
void destroy() noexcept override;
inline void setDescriptor(DescriptorSet set) noexcept { _set = std::move(set); }
inline VkDescriptorSet getSet() noexcept { return _set.isInit() ? _set.get() : VK_NULL_HANDLE; }
inline void updateSet(int binding) noexcept { _set.writeDescriptor(binding, getImageView(), getSampler()); }
~TextureAtlas() = default;
private:
VBO _vbo;
C_IBO _ibo;
DescriptorSet _set;
uint32_t _render_width;
uint32_t _render_height;
};
}
#endif