CGVIS Utils
Loading...
Searching...
No Matches
GLTexture2D.h
Go to the documentation of this file.
1#pragma once
2
3#include <vector>
4
5#include "GLEnv.h"
6#include "Image.h"
7
20public:
29 GLTexture2D(GLint magFilter=GL_NEAREST, GLint minFilter=GL_NEAREST,
30 GLint wrapX=GL_REPEAT, GLint wrapY=GL_REPEAT);
31
34
43 GLTexture2D(const Image& image,
44 GLint magFilter=GL_NEAREST, GLint minFilter=GL_NEAREST,
45 GLint wrapX=GL_REPEAT, GLint wrapY=GL_REPEAT);
46
48 GLTexture2D(const GLTexture2D& other);
49
51 GLTexture2D& operator=(const GLTexture2D& other);
52
57 const GLuint getId() const;
58
60 void clear();
61
70 void setEmpty(uint32_t width, uint32_t height, uint8_t componentCount, GLDataType dataType=GLDataType::BYTE);
71
76 void setData(const Image& image);
77
86 void setData(const std::vector<GLubyte>& data, uint32_t width, uint32_t height, uint8_t componentCount=4);
87
92 void setData(const std::vector<GLubyte>& data);
93
102 void setData(const std::vector<GLfloat>& data, uint32_t width, uint32_t height, uint8_t componentCount=4);
103
108 void setData(const std::vector<GLfloat>& data);
109
118 void setData(const std::vector<GLhalf>& data, uint32_t width, uint32_t height, uint8_t componentCount=4);
119
124 void setData(const std::vector<GLhalf>& data);
125
131 void setFilter(GLint magFilter, GLint minFilter);
132
139 void setPixel(const std::vector<GLubyte>& data, uint32_t x, uint32_t y);
140
142 void generateMipmap();
143
146 uint32_t getHeight() const {return height;}
147 uint32_t getWidth() const {return width;}
148 uint32_t getComponentCount() const {return componentCount;}
149 uint32_t getSize() const {return height*width*componentCount;}
150 GLDataType getType() const {return dataType;}
152
153#ifndef __EMSCRIPTEN__
155 Image getImage();
157 const std::vector<GLubyte>& getDataByte();
159 const std::vector<GLhalf>& getDataHalf();
161 const std::vector<GLfloat>& getDataFloat();
162#endif
163
164private:
165 GLuint id;
166 GLint internalformat;
167 GLenum format;
168 GLenum type;
169
170 GLint magFilter;
171 GLint minFilter;
172 GLint wrapX;
173 GLint wrapY;
174
175 std::vector<GLubyte> data;
176 std::vector<GLhalf> hdata;
177 std::vector<GLfloat> fdata;
178 uint32_t width{0};
179 uint32_t height{0};
180 uint8_t componentCount{0};
181 GLDataType dataType{GLDataType::BYTE};
182
191 void setData(GLvoid* data, uint32_t width, uint32_t height,
192 uint8_t componentCount, GLDataType dataType);
193};
Cross‑platform OpenGL window/context helper for desktop and Emscripten.
GLDataType
Element type selector for texture uploads/allocations.
Definition GLEnv.h:43
@ BYTE
Definition GLEnv.h:43
Lightweight image container with basic processing utilities.
const std::vector< GLhalf > & getDataHalf()
Read back raw half floats via glGetTexImage.
Definition GLTexture2D.cpp:281
void setFilter(GLint magFilter, GLint minFilter)
Update filtering parameters on the bound texture.
Definition GLTexture2D.cpp:36
const GLuint getId() const
Retrieve the OpenGL texture object name.
Definition GLTexture2D.cpp:95
~GLTexture2D()
Destroy and delete the GL texture name.
Definition GLTexture2D.cpp:45
uint32_t getComponentCount() const
Definition GLTexture2D.h:148
uint32_t getSize() const
Definition GLTexture2D.h:149
uint32_t getHeight() const
Definition GLTexture2D.h:146
GLTexture2D & operator=(const GLTexture2D &other)
Copy-assign and duplicate texture contents and parameters.
Definition GLTexture2D.cpp:67
void setPixel(const std::vector< GLubyte > &data, uint32_t x, uint32_t y)
Replace a single pixel at (x,y) with unsigned-byte RGBA/RGB/etc.
Definition GLTexture2D.cpp:251
void generateMipmap()
Generate mipmaps for the texture.
Definition GLTexture2D.cpp:258
Image getImage()
Read back texture as an Image (BYTE).
Definition GLTexture2D.cpp:265
GLTexture2D(GLint magFilter=GL_NEAREST, GLint minFilter=GL_NEAREST, GLint wrapX=GL_REPEAT, GLint wrapY=GL_REPEAT)
Create an empty GL_TEXTURE_2D and set sampler parameters.
Definition GLTexture2D.cpp:6
void setData(const Image &image)
Upload from an Image (bytes).
Definition GLTexture2D.cpp:103
void setEmpty(uint32_t width, uint32_t height, uint8_t componentCount, GLDataType dataType=GLDataType::BYTE)
Allocate an empty texture of given size and format.
Definition GLTexture2D.cpp:116
uint32_t getWidth() const
Definition GLTexture2D.h:147
const std::vector< GLfloat > & getDataFloat()
Read back raw floats via glGetTexImage.
Definition GLTexture2D.cpp:293
const std::vector< GLubyte > & getDataByte()
Read back raw unsigned bytes via glGetTexImage.
Definition GLTexture2D.cpp:269
void clear()
Clear the texture to an empty image preserving dimensions/type.
Definition GLTexture2D.cpp:99
GLDataType getType() const
Definition GLTexture2D.h:150
void setData(const std::vector< GLhalf > &data)
Upload 16-bit half-float data using previously set dimensions.
Definition Image.h:22