22GLuint
read_program(
const char *filename,
const char *definitions=
"" );
35int reload_program(
const GLuint program,
const char *definitions );
54 std::string definitions;
64 printf(
"[pipeline cache] %d programs.\n",
int(m_programs.size()));
69 for(
auto& cache : m_programs)
77 for(
auto cache : m_programs)
79 if(cache->filename == filename && cache->definitions == definitions)
83 return insert(filename, definitions);
89 for(
auto cache : m_programs)
91 if(cache->program == program && cache->filename == filename && cache->definitions == definitions)
95 return insert(program, filename, definitions);
101 int update_program(
const GLuint program,
const char *filename,
const char *definitions );
103 for(
auto cache : m_programs)
105 if(cache->program == program)
107 if(definitions && definitions[0])
109 cache->definitions= definitions;
112 update_program(program, cache->filename.c_str(), cache->definitions.c_str());
125 int update_program(
const GLuint program,
const char *filename,
const char *definitions );
127 for(
auto cache : m_programs)
129 update_program(cache->program, cache->filename.c_str(), cache->definitions.c_str());
137 for(
unsigned i= 0; i < m_programs.size(); i++)
140 printf(
"[%d] '%s'\n", i, cache->filename.c_str());
141 if(!cache->definitions.empty())
142 printf(
" %s\n", cache->definitions.c_str());
160 int update_program(
const GLuint program,
const char *filename,
const char *definitions );
163 GLuint program= glCreateProgram();
164 update_program(program, filename, definitions);
167 return insert(program, filename, definitions);
174 m_programs.push_back(cache);
179 std::vector<PipelineProgram *> m_programs;
void reload()
recompile tous les shaders. du cache.
PipelineProgram * insert(const GLuint program, const char *filename, const char *definitions="")
ajoute un shader dans le cache.
PipelineCache()
constructeur prive.
PipelineProgram * reload(const GLuint program, const char *definitions="")
recharge et recompile un programme du cache.
PipelineProgram * insert(const char *filename, const char *definitions="")
compile un shader et l'ajoute au cache.
PipelineProgram * find(const char *filename, const char *definitions="")
renvoie un shader program compile. et l'ajoute dans le cache, si necessaire...
static PipelineCache & manager()
acces au singleton.
PipelineProgram * find(const GLuint program, const char *filename, const char *definitions="")
renvoie un shader program compile. et l'ajoute dans le cache, si necessaire...
void printf(Text &text, const int px, const int py, const char *format,...)
affiche un texte a la position x, y. meme utilisation que printf().
GLuint read_program(const char *filename, const char *definitions="")
int program_print_errors(const GLuint program, const char *filename="")
affiche les erreurs de compilation.
int release_program(const GLuint program)
bool program_errors(const GLuint program)
renvoie vrai si le programme n'est pas pret.
int reload_program(const GLuint program)
bool program_ready(const GLuint program)
renvoie vrai si le programme est pret. (pas d'erreurs de compilation des shaders, pas d'erreur de lin...
int program_format_errors(const GLuint program, std::string &errors)
renvoie les erreurs de compilation.
description d'un shader program compile.