Hello I am loading set of textures and create texture array from them in compressed format. This works fine because I see my shaders are working.
But later I decided to use compressed data from the beginning, so I want to read my texture array back and write it to hdd, so I can later load it as compressed data.
I was trying to use glGetCompressedTexImage, but there is no GL_TEXTURE_2D_ARRAY allowed as “target” for this function (I do not see it in documentation), so I am not sure if I can use it at all?
Or should I create separate 2d textures and save them instead?
Just to try out something I did like this:
glBindTexture(GL_TEXTURE_2D_ARRAY, tex );
GLint csize, is_comp;
GLint lod = 0;
glGetTexLevelParameteriv( ptex->m_Type, lod, GL_TEXTURE_COMPRESSED_IMAGE_SIZE, &csize);
glGetTexLevelParameteriv( ptex->m_Type, lod, GL_TEXTURE_COMPRESSED, &is_comp);
assert(is_comp);
GLvoid* pdata = new unsigned char[csize];
glGetCompressedTexImage(GL_TEXTURE_2D_ARRAY, lod, pdata);
glBindTexture(GL_TEXTURE_2D_ARRAY, 0 );
But I have error “Invalid operation” after glGetCompressedTexImage.
Passing GL_TEXTURE_3D instead of GL_TEXTURE_2D_ARRAY to glGetCompressedTexImage also did not help
Any suggestions how that could be done?
Thanks
UPDATE: problem solved, it was me, who forgot to glBindTexture(GL_TEXTURE_2D_ARRAY, tex ) in actual code, but put it in this test code
However I still cannot understand how it works, because there is no GL_TEXTURE_2D_ARRAY present in documentation for “target” of glGetCompressedTexImage