X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=resource_pool.cpp;h=d322a1764f96ad43a8557f947127b8674262d8f6;hb=4a9f9844aec346c73a1e96d7164b3d993c619d06;hp=a83add2a7117ccfb99bea2cce3afcdb1ed062cdb;hpb=0cdd6e9e30a807056699ed9b3fa023a23ce83af9;p=movit diff --git a/resource_pool.cpp b/resource_pool.cpp index a83add2..d322a17 100644 --- a/resource_pool.cpp +++ b/resource_pool.cpp @@ -200,6 +200,12 @@ GLuint ResourcePool::create_2d_texture(GLint internal_format, GLsizei width, GLs case GL_SRGB8_ALPHA8: format = GL_RGBA; break; + case GL_RGB32F_ARB: + case GL_RGB16F_ARB: + case GL_RGB8: + case GL_SRGB8: + format = GL_RGB; + break; case GL_RG32F: case GL_RG16F: format = GL_RG; @@ -256,6 +262,7 @@ void ResourcePool::release_2d_texture(GLuint texture_num) map::const_iterator format_it = fbo_formats.find(fbo_num); assert(format_it != fbo_formats.end()); if (format_it->second.texture_num == free_texture_num) { + fbo_formats.erase(fbo_num); glDeleteFramebuffers(1, &fbo_num); fbo_freelist.erase(fbo_freelist_it++); } else { @@ -344,6 +351,16 @@ size_t ResourcePool::estimate_texture_size(const Texture2D &texture_format) case GL_SRGB8_ALPHA8: bytes_per_pixel = 4; break; + case GL_RGB32F_ARB: + bytes_per_pixel = 12; + break; + case GL_RGB16F_ARB: + bytes_per_pixel = 6; + break; + case GL_RGB8: + case GL_SRGB8: + bytes_per_pixel = 3; + break; case GL_RG32F: bytes_per_pixel = 8; break;