2021-06-29 11:01:11 +04:30
|
|
|
#pragma once
|
|
|
|
|
2025-07-10 21:51:17 +03:30
|
|
|
namespace Assets {
|
2025-07-10 13:29:03 +03:30
|
|
|
|
2025-07-10 21:51:17 +03:30
|
|
|
class TextureAsset;
|
|
|
|
|
|
|
|
}
|
2021-06-29 11:01:11 +04:30
|
|
|
|
2025-07-11 00:05:48 +03:30
|
|
|
namespace lt {
|
2021-06-29 11:01:11 +04:30
|
|
|
|
2022-03-07 20:01:44 +03:30
|
|
|
class SharedContext;
|
2021-06-29 11:01:11 +04:30
|
|
|
|
2022-03-07 20:01:44 +03:30
|
|
|
class Texture
|
|
|
|
{
|
|
|
|
public:
|
2025-07-05 16:07:51 +03:30
|
|
|
static Ref<Texture> create(
|
2025-07-15 16:31:46 +03:30
|
|
|
const Ref<Assets::TextureAsset> &asset,
|
2025-07-10 21:51:17 +03:30
|
|
|
const Ref<SharedContext> &shared_context
|
2025-07-05 16:07:51 +03:30
|
|
|
);
|
2021-06-29 11:01:11 +04:30
|
|
|
|
2025-07-10 21:51:17 +03:30
|
|
|
virtual ~Texture() = default;
|
|
|
|
|
|
|
|
Texture(Texture &&) = default;
|
|
|
|
|
|
|
|
auto operator=(Texture &&) -> Texture & = default;
|
|
|
|
|
2025-07-05 16:07:51 +03:30
|
|
|
Texture(const Texture &) = delete;
|
|
|
|
|
2025-07-06 14:02:50 +03:30
|
|
|
auto operator=(const Texture &) -> Texture & = delete;
|
2021-06-29 11:01:11 +04:30
|
|
|
|
2025-07-05 15:36:53 +03:30
|
|
|
virtual void bind(unsigned int slot = 0) = 0;
|
2021-06-29 11:01:11 +04:30
|
|
|
|
2025-07-06 14:02:50 +03:30
|
|
|
virtual auto get_texture() -> void * = 0;
|
2021-10-05 13:44:32 +03:30
|
|
|
|
2022-03-07 20:01:44 +03:30
|
|
|
protected:
|
2025-07-10 21:51:17 +03:30
|
|
|
Texture() = default;
|
2022-03-07 20:01:44 +03:30
|
|
|
};
|
|
|
|
|
2025-07-11 00:05:48 +03:30
|
|
|
} // namespace lt
|