18 #ifndef PIC_UTIL_GL_BUFFER_ALLOCATION_HPP 19 #define PIC_UTIL_GL_BUFFER_ALLOCATION_HPP 21 #include "../../base.hpp" 23 #include "../../util/string.hpp" 24 #include "../../util/gl/quad.hpp" 39 if(width < 1 || height < 1 || channels < 1) {
45 glGenTextures(1, &texture);
46 glBindTexture(GL_TEXTURE_2D, texture);
48 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
51 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
53 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
56 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
57 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
59 glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
61 int mode, modeInternalFormat;
62 getModesGL(channels, mode, modeInternalFormat);
63 glTexImage2D(GL_TEXTURE_2D, 0, modeInternalFormat, width, height, 0,
64 mode, GL_FLOAT, data);
67 glGenerateMipmap(GL_TEXTURE_2D);
70 glBindTexture(GL_TEXTURE_2D, 0);
86 if(width < 1 || height < 1 || channels < 1 || frames < 6) {
92 int mode, modeInternalFormat;
93 getModesGL(channels, mode, modeInternalFormat);
95 glGenTextures(1, &texture);
96 glBindTexture(GL_TEXTURE_CUBE_MAP, texture);
97 glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
98 glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
99 glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_EDGE);
100 glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
101 glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
104 int tstride = width * height * channels;
106 for(
int i = 0; i < 6; i++) {
107 glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, modeInternalFormat, width,
108 height, 0, mode, GL_FLOAT, &data[tstride * i]);
111 glBindTexture(GL_TEXTURE_CUBE_MAP, 0);
127 if(width <1 || height < 1 || channels < 1 || frames < 1) {
133 int mode, modeInternalFormat;
134 getModesGL(channels, mode, modeInternalFormat);
136 glGenTextures(1, &texture);
137 glBindTexture(GL_TEXTURE_3D, texture);
138 glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
139 glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
140 glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_EDGE);
141 glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
142 glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
144 glTexImage3D(GL_TEXTURE_3D, 0, modeInternalFormat, width, height, frames, 0,
145 mode, GL_FLOAT, data);
147 glBindTexture(GL_TEXTURE_3D, 0);
166 if(width < 1 || height < 1 || channels < 1 || frames < 1) {
170 int mode, modeInternalFormat;
171 getModesGL(channels, mode, modeInternalFormat);
175 glGenTextures(1, &texture);
176 glBindTexture(GL_TEXTURE_2D_ARRAY, texture);
177 glTexParameteri(GL_TEXTURE_2D_ARRAY, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
178 glTexParameteri(GL_TEXTURE_2D_ARRAY, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
179 glTexParameteri(GL_TEXTURE_2D_ARRAY, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
180 glTexParameteri(GL_TEXTURE_2D_ARRAY, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
182 glTexImage3D(GL_TEXTURE_2D_ARRAY, 0, modeInternalFormat, width, height, frames,
183 0, mode, GL_FLOAT, data);
185 glBindTexture(GL_TEXTURE_2D_ARRAY, 0);
199 if(width < 1 || height < 1 || channels < 1) {
205 glGenTextures(1, &texture);
206 glBindTexture(GL_TEXTURE_2D, texture);
208 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
209 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
211 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
212 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
214 glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
216 int mode, modeInternalFormat;
219 glTexImage2D(GL_TEXTURE_2D, 0, modeInternalFormat, width, height, 0,
222 glBindTexture(GL_TEXTURE_2D, 0);
void getModesIntegerGL(int channels, int &mode, int &modeInternalFormat)
getModesIntegerGL
Definition: formats.hpp:97
PIC_INLINE GLuint generateTexture2DU32GL(int width, int height, int channels, int *data=NULL)
generateTexture2DU32GL
Definition: buffer_allocation.hpp:197
PIC_INLINE GLuint generateTexture2DGL(int width, int height, int channels, float *data=NULL, bool mipmap=false)
generateTexture2DGL
Definition: buffer_allocation.hpp:37
PIC_INLINE GLuint generateTextureCubeMapGL(int width, int height, int channels, int frames, float *data=NULL)
generateTextureCubeMapGL
Definition: buffer_allocation.hpp:84
void getModesGL(int channels, int &mode, int &modeInternalFormat)
getModesGL
Definition: formats.hpp:33
PIC_INLINE GLuint generateTexture3DGL(int width, int height, int channels, int frames, float *data=NULL)
generateTexture3DGL
Definition: buffer_allocation.hpp:125
#define PIC_INLINE
Definition: base.hpp:33
Definition: bilateral_separation.hpp:25
PIC_INLINE GLuint generateTexture2DArrayGL(int width, int height, int channels, int frames, float *data=NULL)
generateTexture2DArrayGL
Definition: buffer_allocation.hpp:164