LkEngine 0.1.2
 
Loading...
Searching...
No Matches
OpenGLTexture.h
1#pragma once
2
3#include "LkEngine/Renderer/Texture.h"
4
5#include "OpenGLImage.h"
6#include "OpenGLUniformBuffer.h"
7
8#include "LkOpenGL.h"
9
10
11namespace LkEngine {
12
14 {
15 public:
16 LOpenGLTexture2D(const FTextureSpecification& InSpecification, FBuffer InBuffer);
17 LOpenGLTexture2D(const FTextureSpecification& InSpecification);
18 LOpenGLTexture2D() = delete;
20
21 virtual void SetData(void* InData, const uint32_t InSize) override;
22 virtual void Invalidate() override;
23
24 FORCEINLINE virtual TObjectPtr<LImage2D> GetImage() override { return Image; }
25 FORCEINLINE virtual const TObjectPtr<LImage2D>& GetImage() const override { return Image; }
26
27 virtual void Resize(const uint32_t InWidth, const uint32_t InHeight) override;
28
29 virtual FBuffer GetImageBuffer() override { return Image->GetBuffer(); }
30
31 virtual uint32_t GetMipLevelCount() const override;
32
33 virtual void Bind(const uint32_t Slot = 0) const override;
34 virtual void Unbind(const uint32_t Slot = 0) const;
35
36 FORCEINLINE virtual EImageFormat GetFormat() const override
37 {
38 LK_CORE_ASSERT(Image);
39 return Image->GetSpecification().Format;
40 }
41
42 virtual void Lock() override;
43 virtual void Unlock() override;
44 virtual void Load() override;
45 virtual void Unload() override;
46
47 virtual bool Loaded() const override { return bLoaded; }
48
49 FORCEINLINE virtual LRendererID GetRendererID() const override { return Image->GetRendererID(); }
50 FORCEINLINE virtual LRendererID& GetRendererID() override { return Image->GetRendererID(); }
51
52 FORCEINLINE virtual uint32_t GetWidth() const override { return m_Width; }
53 FORCEINLINE virtual uint32_t GetHeight() const override { return m_Height; }
54
55 FORCEINLINE virtual std::string_view GetName() const override { return Specification.Name; }
56 FORCEINLINE virtual std::string_view GetFilename() const override { return FileName; }
57 FORCEINLINE virtual const std::filesystem::path& GetPath() const override { return m_FilePath; }
58
59 FORCEINLINE virtual const FTextureSpecification& GetSpecification() const override
60 {
61 return Specification;
62 }
63
64 int GetArrayTextureIndex() const { return ArrayTextureIndex; }
65 void SetArrayIndex(const int ArrayIndex)
66 {
67 ArrayTextureIndex = ArrayIndex;
68 }
69
70 /* TODO: Remove */
71 uint64_t GetARBHandle() const;
72
73 private:
74 TObjectPtr<LImage2D> Image = nullptr;
75 uint32_t m_Width{};
76 uint32_t m_Height{};
77 FTextureSpecification Specification;
78
79 std::filesystem::path m_FilePath;
80 std::string FileName{};
81
82 bool bLoaded = false;
83 bool bLocked = false;
84
85 int ArrayTextureIndex = 0;
86 };
87
88
90 {
91 public:
92 LOpenGLTextureCube(const FTextureSpecification& InSpecification, std::vector<std::filesystem::path> InFacePaths);
93 LOpenGLTextureCube() = delete;
95
96 virtual void Bind(const uint32_t Slot = 0) const override;
97
98 FORCEINLINE virtual EImageFormat GetFormat() const override
99 {
100 return Specification.Format;
101 }
102
103 FORCEINLINE virtual uint32_t GetWidth() const override { return m_Width; }
104 FORCEINLINE virtual uint32_t GetHeight() const override { return m_Height; }
105
107 virtual uint32_t GetMipLevelCount() const override { return 0; }
108
109 FORCEINLINE virtual LRendererID GetRendererID() const override { return m_RendererID; }
110 FORCEINLINE virtual LRendererID& GetRendererID() override { return m_RendererID; }
111
112 FORCEINLINE virtual std::string_view GetName() const override { return Specification.Name; }
113 FORCEINLINE virtual std::string_view GetFilename() const override { return FileName; }
114 FORCEINLINE virtual const std::filesystem::path& GetPath() const override { return m_FilePath; }
115
116 FORCEINLINE virtual ETextureType GetType() const override { return ETextureType::TextureCube; }
117
118 FORCEINLINE virtual const FTextureSpecification& GetSpecification() const override
119 {
120 return Specification;
121 }
122
123 private:
124 LRendererID m_RendererID = 0;
125 FTextureSpecification Specification{};
126
127 FBuffer DataBuffer{};
128 uint32_t m_Width{};
129 uint32_t m_Height{};
130
131 std::filesystem::path m_FilePath{};
132 std::string FileName{};
133
134 bool m_MipsGenerated = false;
135 };
136
137
138}
Definition OpenGLTexture.h:14
Definition OpenGLTexture.h:90
virtual uint32_t GetMipLevelCount() const override
TODO: Needs implementation.
Definition OpenGLTexture.h:107
Definition Texture.h:54
Definition Texture.h:94
Definition ObjectPtr.h:102
uint32_t LRendererID
Definition CoreTypes.h:30
Definition Asset.h:11
Definition Buffer.h:9
Definition Image.h:21