LkEngine
0.1.2
Loading...
Searching...
No Matches
Texture.h
1
#pragma once
2
3
#include "
LkEngine/Core/Core.h
"
4
5
#include "LkEngine/Asset/Asset.h"
6
7
#include "Image.h"
8
9
10
namespace
LkEngine
{
11
15
class
LTexture
:
public
LAsset
16
{
17
public
:
18
virtual
~LTexture
() =
default
;
19
20
virtual
void
Bind(
const
uint32_t Slot = 0)
const
= 0;
21
22
virtual
EImageFormat GetFormat()
const
= 0;
23
virtual
uint32_t GetWidth()
const
= 0;
24
virtual
uint32_t GetHeight()
const
= 0;
25
virtual
uint32_t GetMipLevelCount()
const
= 0;
26
27
virtual
ETextureType GetType()
const
= 0;
28
29
virtual
LRendererID
GetRendererID()
const
= 0;
30
virtual
LRendererID
& GetRendererID() = 0;
31
32
virtual
const
FTextureSpecification
& GetSpecification()
const
= 0;
33
34
virtual
std::string_view GetName()
const
= 0;
35
virtual
const
std::filesystem::path& GetPath()
const
= 0;
36
virtual
std::string_view GetFilename()
const
= 0;
37
38
virtual
bool
IsValid()
const override
39
{
40
return
((GetRendererID() > 0) && (GetWidth() > 0) && (GetHeight() > 0));
41
}
42
44
static
TObjectPtr<LTexture>
Create
(
const
FTextureSpecification
& Specification);
45
46
private
:
47
LCLASS
(
LTexture
)
48
};
49
53
class
LTexture2D
:
public
LTexture
54
{
55
public
:
56
virtual
~LTexture2D
() =
default
;
57
58
virtual
void
SetData(
void
* InData,
const
uint32_t InSize) = 0;
59
virtual
void
Invalidate() = 0;
60
virtual
void
Resize(
const
uint32_t NewWidth,
const
uint32_t NewWeight) = 0;
61
62
virtual
TObjectPtr<LImage2D>
GetImage() = 0;
63
virtual
const
TObjectPtr<LImage2D>
& GetImage()
const
= 0;
64
virtual
FBuffer
GetImageBuffer() = 0;
65
66
virtual
void
Bind(
const
uint32_t Slot = 0)
const
= 0;
67
virtual
void
Unbind(
const
uint32_t Slot = 0)
const
= 0;
68
69
virtual
void
Lock() = 0;
70
virtual
void
Unlock() = 0;
71
virtual
void
Load() = 0;
72
virtual
void
Unload() = 0;
73
virtual
bool
Loaded()
const
= 0;
74
75
FORCEINLINE
virtual
ETextureType GetType()
const override
{
return
ETextureType::Texture2D; }
76
FORCEINLINE
static
EAssetType
GetStaticType() {
return
EAssetType::Texture; }
77
78
virtual
bool
IsValid()
const override
79
{
80
return
((GetRendererID() > 0) && (GetImage() !=
nullptr
));
81
}
82
83
static
TObjectPtr<LTexture2D>
Create(
const
FTextureSpecification
& Specification);
84
static
TObjectPtr<LTexture2D>
Create(
const
FTextureSpecification
& Specification,
FBuffer
ImageData);
85
86
private
:
87
LASSET
(
LTexture2D
)
88
};
89
93
class
LTextureCube
:
public
LTexture
94
{
95
public
:
96
static
TObjectPtr<LTextureCube>
Create(
const
FTextureSpecification
& Specification,
97
const
std::vector<std::filesystem::path>& InFacePaths);
98
99
FORCEINLINE
virtual
ETextureType GetType()
const override
100
{
101
return
ETextureType::TextureCube;
102
}
103
104
FORCEINLINE
static
EAssetType
GetStaticType() {
return
EAssetType::EnvMap; }
105
106
private
:
107
LASSET
(
LTextureCube
)
108
};
109
110
}
Core.h
Core header.
LkEngine::LAsset
Definition
Asset.h:21
LkEngine::LTexture2D
Definition
Texture.h:54
LkEngine::LTextureCube
Definition
Texture.h:94
LkEngine::LTexture
Definition
Texture.h:16
LkEngine::LTexture::Create
static TObjectPtr< LTexture > Create(const FTextureSpecification &Specification)
Definition
Texture.cpp:10
LkEngine::TObjectPtr
Definition
ObjectPtr.h:102
LASSET
#define LASSET(Class)
Definition
CoreMacros.h:316
LCLASS
#define LCLASS(Class)
Definition
CoreMacros.h:226
LkEngine::LRendererID
uint32_t LRendererID
Definition
CoreTypes.h:30
LkEngine
Definition
Asset.h:11
LkEngine::EAssetType
EAssetType
Definition
AssetTypes.h:24
LkEngine::FBuffer
Definition
Buffer.h:9
LkEngine::FTextureSpecification
Definition
Image.h:21
LkEngine
Source
LkEngine
Renderer
Texture.h
Generated by
1.12.0