18 #ifndef PIC_UTIL_GL_FORMATS_HPP 19 #define PIC_UTIL_GL_FORMATS_HPP 21 #include "../../base.hpp" 23 #include "../../gl.hpp" 33 inline void getModesGL(
int channels,
int &mode,
int &modeInternalFormat)
36 modeInternalFormat = 0;
41 modeInternalFormat = GL_R32F;
47 modeInternalFormat = GL_RGB32F;
53 modeInternalFormat = GL_RGBA32F;
68 modeInternalFormat = 0;
73 modeInternalFormat = GL_R16F;
79 modeInternalFormat = GL_RGB16F;
85 modeInternalFormat = GL_RGBA16F;
100 modeInternalFormat = 0;
104 mode = GL_RED_INTEGER;
105 modeInternalFormat = GL_R32I;
110 mode = GL_RGB_INTEGER;
111 modeInternalFormat = GL_RGB32I;
116 mode = GL_RGBA_INTEGER;
117 modeInternalFormat = GL_RGBA32I;
132 switch(internalFormat) {
174 int &frames,
int &channels)
178 printf(
"getTextureInformationGL: texture is not valid.\n");
183 GLint internalFormat;
186 case GL_TEXTURE_2D: {
187 glBindTexture(GL_TEXTURE_2D, texture);
188 glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_WIDTH, &width);
189 glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_HEIGHT, &height);
190 glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_INTERNAL_FORMAT,
197 glBindTexture(GL_TEXTURE_2D, 0);
201 case GL_TEXTURE_CUBE_MAP: {
202 glBindTexture(GL_TEXTURE_CUBE_MAP, texture);
203 glGetTexLevelParameteriv(GL_TEXTURE_CUBE_MAP, 0, GL_TEXTURE_WIDTH, &width);
204 glGetTexLevelParameteriv(GL_TEXTURE_CUBE_MAP, 0, GL_TEXTURE_HEIGHT, &height);
205 glGetTexLevelParameteriv(GL_TEXTURE_CUBE_MAP, 0, GL_TEXTURE_INTERNAL_FORMAT,
212 glBindTexture(GL_TEXTURE_2D, 0);
216 case GL_TEXTURE_2D_ARRAY: {
217 glBindTexture(GL_TEXTURE_2D_ARRAY, texture);
218 glGetTexLevelParameteriv(GL_TEXTURE_2D_ARRAY, 0, GL_TEXTURE_WIDTH, &width);
219 glGetTexLevelParameteriv(GL_TEXTURE_2D_ARRAY, 0, GL_TEXTURE_HEIGHT, &height);
220 glGetTexLevelParameteriv(GL_TEXTURE_2D_ARRAY, 0, GL_TEXTURE_DEPTH, &frames);
221 glGetTexLevelParameteriv(GL_TEXTURE_2D_ARRAY, 0, GL_TEXTURE_INTERNAL_FORMAT,
226 glBindTexture(GL_TEXTURE_2D_ARRAY, 0);
230 case GL_TEXTURE_3D: {
231 glBindTexture(GL_TEXTURE_3D, texture);
232 glGetTexLevelParameteriv(GL_TEXTURE_3D, 0, GL_TEXTURE_WIDTH, &width);
233 glGetTexLevelParameteriv(GL_TEXTURE_3D, 0, GL_TEXTURE_HEIGHT, &height);
234 glGetTexLevelParameteriv(GL_TEXTURE_3D, 0, GL_TEXTURE_DEPTH, &frames);
235 glGetTexLevelParameteriv(GL_TEXTURE_3D, 0, GL_TEXTURE_INTERNAL_FORMAT,
240 glBindTexture(GL_TEXTURE_3D, 0);
void getModesIntegerGL(int channels, int &mode, int &modeInternalFormat)
getModesIntegerGL
Definition: formats.hpp:97
void getModesHalfGL(int channels, int &mode, int &modeInternalFormat)
getModesHalfGL
Definition: formats.hpp:65
int getChannelsFromInternalFormatGL(int internalFormat)
getChannelsFromInternalFormatGL returns the number of channels given an internal format.
Definition: formats.hpp:128
PIC_INLINE void getTextureInformationGL(GLuint texture, GLuint target, int &width, int &height, int &frames, int &channels)
getTextureInformationGL returns width, height and frames values from a texture with target...
Definition: formats.hpp:173
void getModesGL(int channels, int &mode, int &modeInternalFormat)
getModesGL
Definition: formats.hpp:33
#define PIC_INLINE
Definition: base.hpp:33
Definition: bilateral_separation.hpp:25