31 #include "Utilities/STL/MxString.h" 32 #include "Utilities/STL/MxVector.h" 33 #include "Utilities/Math/Math.h" 34 #include "Utilities/Image/Image.h" 38 enum class TextureFormat : uint8_t
51 enum class TextureWrap : uint8_t
59 const char* EnumToString(TextureFormat format);
60 const char* EnumToString(TextureWrap wrap);
69 using BindableId =
unsigned int;
72 size_t width = 0, height = 0, channels = 0;
74 mutable BindableId activeId = 0;
75 unsigned int textureType = 0;
76 TextureFormat format = TextureFormat::RGB;
77 TextureWrap wrapType = TextureWrap::REPEAT;
82 using RawData = uint8_t;
83 using RawDataPointer = RawData*;
84 using TextureBindId = BindableId;
91 Texture(
const MxString& filepath, TextureWrap wrap = TextureWrap::REPEAT,
bool genMipmaps =
true,
bool flipImage =
true);
96 BindableId GetNativeHandle()
const;
97 void Load(
const MxString& filepath, TextureWrap wrap = TextureWrap::REPEAT,
bool genMipmaps =
true,
bool flipImage =
true);
98 void Load(RawDataPointer data,
int width,
int height, TextureFormat format = TextureFormat::RGB, TextureWrap wrap = TextureWrap::REPEAT,
bool genMipmaps =
true);
99 void LoadMipmaps(RawDataPointer* data,
size_t mipmaps,
int biggestWidth,
int biggestHeight, TextureWrap wrap = TextureWrap::REPEAT);
100 void LoadDepth(
int width,
int height, TextureWrap wrap = TextureWrap::CLAMP_TO_BORDER);
101 void LoadMultisample(
int width,
int height, TextureFormat format,
int samples, TextureWrap wrap = TextureWrap::REPEAT);
102 Image GetRawTextureData()
const;
103 void GenerateMipmaps();
104 void SetBorderColor(
const Vector3& color);
105 bool IsMultisampled()
const;
106 bool IsFloatingPoint()
const;
107 bool IsDepthOnly()
const;
108 int GetSampleCount()
const;
109 size_t GetPixelSize()
const;
110 TextureFormat GetFormat()
const;
111 TextureWrap GetWrapType()
const;
112 void Bind(TextureBindId
id)
const;
113 const MxString& GetPath()
const;
114 unsigned int GetTextureType()
const;
115 size_t GetWidth()
const;
116 size_t GetHeight()
const;
117 size_t GetChannelCount()
const;
Definition: Application.cpp:49