// By default, will only contain the program itself, but due to cloning
// (see use_glsl_program()), may grow. Programs are taken off this list
// while they are in use (by use_glsl_program()).
// By default, will only contain the program itself, but due to cloning
// (see use_glsl_program()), may grow. Programs are taken off this list
// while they are in use (by use_glsl_program()).
// For each program, the master program that created it
// (inverse of program_instances).
// For each program, the master program that created it
// (inverse of program_instances).
// the last element will be deleted.
//
// We store iterators directly into <fbo_format> for efficiency.
// the last element will be deleted.
//
// We store iterators directly into <fbo_format> for efficiency.
};
std::map<std::pair<void *, GLuint>, VAO> vao_formats;
typedef std::map<std::pair<void *, GLuint>, VAO>::iterator VAOFormatIterator;
};
std::map<std::pair<void *, GLuint>, VAO> vao_formats;
typedef std::map<std::pair<void *, GLuint>, VAO>::iterator VAOFormatIterator;
// See the caveats at the constructor.
static size_t estimate_texture_size(const Texture2D &texture_format);
// See the caveats at the constructor.
static size_t estimate_texture_size(const Texture2D &texture_format);