GlistEngine
Loading...
Searching...
No Matches
gTexture.h
Go to the documentation of this file.
1/*
2* gTexture.h
3*
4* Created on: May 10, 2020
5* Author: noyan
6*/
7
8#pragma once
9
10#ifndef ENGINE_GRAPHICS_GTEXTURE_H_
11#define ENGINE_GRAPHICS_GTEXTURE_H_
12
13#include <string>
14#include "gRenderObject.h"
15#include "gRect.h"
16
17class gTexture : public gRenderObject {
18public:
31
38
45
47 gTexture(int w, int h, int format = GL_RGBA, bool isFbo = false);
48 gTexture(const gTexture& other);
49 gTexture(gTexture&& other) noexcept;
50 gTexture& operator=(const gTexture& other);
51 gTexture& operator=(gTexture&& other) noexcept;
52 virtual ~gTexture();
53
54 virtual unsigned int load(const std::string& fullPath);
55 unsigned int loadTexture(const std::string& texturePath);
56
70 unsigned int loadMask(const std::string& fullPath);
71
86 unsigned int loadMaskTexture(const std::string& maskTexturePath);
87
88 void bind() const;
89 void bind(int textureSlotNo) const;
90 void unbind() const;
91
92 unsigned int getId() const;
93 bool isHDR() const;
94 unsigned int getInternalFormat() const;
95 unsigned int getFormat() const;
96 void setType(TextureType textureType);
98 void setWrapping(int wrapS, int wrapT);
99 void setFiltering(int minFilter, int magFilter);
100 int getWrapS() const;
101 int getWrapT() const;
102 int getFilterMin() const;
103 int getFilterMag() const;
104 const std::string& getTypeName() const;
105 const std::string& getFilename() const;
106 const std::string& getDir() const;
107 const std::string& getFullPath() const;
108
109 int getWidth() const;
110 int getHeight() const;
111 int getComponentNum() const;
112
113 void draw(int x, int y);
114 void draw(int x, int y, int w, int h);
115 void draw(int x, int y, int w, int h, float rotate);
116 void draw(int x, int y, int w, int h, int pivotx, int pivoty, float rotate);
117 void draw(glm::vec2 position, glm::vec2 size, float rotate = 0.0f);
118 void draw(glm::vec2 position, glm::vec2 size, glm::vec2 pivot, float rotate = 0.0f);
119
120 void drawSub(int x, int y, int sx, int sy, int sw, int sh);
121 void drawSub(int x, int y, int w, int h, int sx, int sy, int sw, int sh);
122 void drawSub(int x, int y, int w, int h, int sx, int sy, int sw, int sh, float rotate);
123 void drawSub(int x, int y, int w, int h, int sx, int sy, int sw, int sh, int pivotx, int pivoty, float rotate);
124 void drawSub(glm::vec2 pos, glm::vec2 size, glm::vec2 subpos, glm::vec2 subsize, float rotate = 0.0f);
125 void drawSub(glm::vec2 pos, glm::vec2 size, glm::vec2 subpos, glm::vec2 subsize, glm::vec2 pivot, float rotate = 0.0f);
126 void drawSub(const gRect& src, const gRect& dst, float rotate = 0.f);
127 void drawSub(const gRect& src, const gRect& dst, int pivotx, int pivoty, float rotate = 0.f);
128 void drawSub(const gRect& src, const gRect& dst, glm::vec2 pivot, float rotate = 0.f);
129
130 unsigned int setData(unsigned char* textureData, int width, int height, int componentNum, bool isMutable = false, bool isStbImage = false);
131 unsigned int setDataHDR(float* textureData, int width, int height, int componentNum, bool isMutable = false, bool isStbImage = false);
132
134
137
138 void save(std::string fullpath);
139 void saveTexture(std::string fileName);
140
141 unsigned char* getData();
142
143 static const std::string& getTypeName(TextureType textureType);
144
145protected:
146 std::string fullpath, directory;
147 unsigned int id, internalformat, format;
149 std::string path;
151 unsigned char* data;
155
156 void setDataInternal(unsigned char* textureData, bool isMutable = false, bool isStbImage = false, bool clean = true);
157 void setDataInternalHDR(float* textureData, bool isMutable = false, bool isStbImage = false, bool clean = true);
158 bool isMutable();
159
160 void swap(gTexture& other) noexcept;
161 void copyFrom(const gTexture& other) noexcept;
162
163 std::string getDirName(const std::string& fname);
164 std::string getFileName(const std::string& fname);
165
166 bool ishdr;
167 float* datahdr;
171
172private:
173
174 unsigned int quadVAO, quadVBO;
175 glm::mat4 imagematrix;
176 void setupRenderData(int sx, int sy, int sw, int sh);
177 void beginDraw();
178 void endDraw();
179 bool isfbo;
180 bool isloaded;
181 bool issubpart;
182 glm::vec2 subpos;
183 glm::vec2 subscale;
184};
185
186#endif /* ENGINE_GRAPHICS_GTEXTURE_H_ */
Definition gRect.h:27
Definition gRenderObject.h:25
Definition gTexture.h:17
gTexture & operator=(const gTexture &other)
bool isMutable()
int wrapt
Definition gTexture.h:154
void setDataInternalHDR(float *textureData, bool isMutable=false, bool isStbImage=false, bool clean=true)
int componentnum
Definition gTexture.h:150
void drawSub(glm::vec2 pos, glm::vec2 size, glm::vec2 subpos, glm::vec2 subsize, float rotate=0.0f)
int filtermag
Definition gTexture.h:154
int wraps
Definition gTexture.h:154
bool isstbimage
Definition gTexture.h:153
int getWidth() const
void copyFrom(const gTexture &other) noexcept
int getFilterMin() const
void drawSub(int x, int y, int w, int h, int sx, int sy, int sw, int sh, float rotate)
void setFiltering(int minFilter, int magFilter)
gTexture(const gTexture &other)
TextureType type
Definition gTexture.h:148
bool ismutable
Definition gTexture.h:152
void setWrapping(int wrapS, int wrapT)
const std::string & getFullPath() const
bool ishdr
Definition gTexture.h:166
void drawSub(const gRect &src, const gRect &dst, float rotate=0.f)
void draw(int x, int y, int w, int h, float rotate)
unsigned int loadTexture(const std::string &texturePath)
unsigned int setData(unsigned char *textureData, int width, int height, int componentNum, bool isMutable=false, bool isStbImage=false)
int getHeight() const
void draw(glm::vec2 position, glm::vec2 size, float rotate=0.0f)
TextureMagFilter
Definition gTexture.h:39
@ TEXTUREMINMAGFILTER_CLAMP
Definition gTexture.h:43
@ TEXTUREMINMAGFILTER_LINEAR
Definition gTexture.h:40
@ TEXTUREMINMAGFILTER_NEAREST
Definition gTexture.h:42
@ TEXTUREMINMAGFILTER_MIPMAPLINEAR
Definition gTexture.h:41
void swap(gTexture &other) noexcept
void draw(int x, int y, int w, int h, int pivotx, int pivoty, float rotate)
void setType(TextureType textureType)
unsigned int format
Definition gTexture.h:147
unsigned int internalformat
Definition gTexture.h:147
int filtermin
Definition gTexture.h:154
gTexture(gTexture &&other) noexcept
int getWrapS() const
void drawSub(const gRect &src, const gRect &dst, int pivotx, int pivoty, float rotate=0.f)
TextureType getType() const
int width
Definition gTexture.h:150
std::string path
Definition gTexture.h:149
int height
Definition gTexture.h:150
void draw(int x, int y, int w, int h)
unsigned int loadMaskTexture(const std::string &maskTexturePath)
void bind() const
int getFilterMag() const
const std::string & getTypeName() const
void cleanupData()
TextureWrap
Definition gTexture.h:32
@ TEXTUREWRAP_CLAMP
Definition gTexture.h:34
@ TEXTUREWRAP_CLAMPTOEDGE
Definition gTexture.h:35
@ TEXTUREWRAP_NEAREST
Definition gTexture.h:36
@ TEXTUREWRAP_REPEAT
Definition gTexture.h:33
gTexture(int w, int h, int format=GL_RGBA, bool isFbo=false)
void saveTexture(std::string fileName)
void drawSub(int x, int y, int sx, int sy, int sw, int sh)
unsigned char * data
Definition gTexture.h:151
void unbind() const
virtual ~gTexture()
unsigned int setDataHDR(float *textureData, int width, int height, int componentNum, bool isMutable=false, bool isStbImage=false)
std::string directory
Definition gTexture.h:146
unsigned int getInternalFormat() const
void setDataInternal(unsigned char *textureData, bool isMutable=false, bool isStbImage=false, bool clean=true)
float * datahdr
Definition gTexture.h:167
const std::string & getDir() const
bool istextureallocated
Definition gTexture.h:170
const std::string & getFilename() const
unsigned int loadMask(const std::string &fullPath)
gTexture & operator=(gTexture &&other) noexcept
void draw(int x, int y)
bool isHDR() const
bool ismaskloaded
Definition gTexture.h:168
std::string getDirName(const std::string &fname)
std::string fullpath
Definition gTexture.h:146
unsigned int getId() const
unsigned int getFormat() const
int getComponentNum() const
static const std::string & getTypeName(TextureType textureType)
void drawSub(glm::vec2 pos, glm::vec2 size, glm::vec2 subpos, glm::vec2 subsize, glm::vec2 pivot, float rotate=0.0f)
unsigned char * getData()
TextureType
Definition gTexture.h:19
@ TEXTURETYPE_PBR_AO
Definition gTexture.h:28
@ TEXTURETYPE_COUNT
Definition gTexture.h:29
@ TEXTURETYPE_HEIGHT
Definition gTexture.h:23
@ TEXTURETYPE_NORMAL
Definition gTexture.h:22
@ TEXTURETYPE_PBR_ALBEDO
Definition gTexture.h:24
@ TEXTURETYPE_PBR_METALNESS
Definition gTexture.h:26
@ TEXTURETYPE_DIFFUSE
Definition gTexture.h:20
@ TEXTURETYPE_PBR_ROUGHNESS
Definition gTexture.h:25
@ TEXTURETYPE_PBR_NORMAL
Definition gTexture.h:27
@ TEXTURETYPE_SPECULAR
Definition gTexture.h:21
std::string getFileName(const std::string &fname)
void drawSub(int x, int y, int w, int h, int sx, int sy, int sw, int sh, int pivotx, int pivoty, float rotate)
void bind(int textureSlotNo) const
void drawSub(int x, int y, int w, int h, int sx, int sy, int sw, int sh)
void draw(glm::vec2 position, glm::vec2 size, glm::vec2 pivot, float rotate=0.0f)
gTexture * masktexture
Definition gTexture.h:169
void setupRenderData()
void save(std::string fullpath)
int getWrapT() const
void drawSub(const gRect &src, const gRect &dst, glm::vec2 pivot, float rotate=0.f)
virtual unsigned int load(const std::string &fullPath)
unsigned int id
Definition gTexture.h:147
void cleanupAll()