gKit2 light
Loading...
Searching...
No Matches
PipelineCache Class Reference

ensemble de shader programs compiles. singleton. More...

#include <program.h>

Public Member Functions

PipelineProgramfind (const char *filename, const char *definitions="")
 renvoie un shader program compile. et l'ajoute dans le cache...
PipelinePrograminsert (const char *filename, const char *definitions="")
 ajoute un shader dans le cache
PipelinePrograminsert (const GLuint program, const char *filename, const char *definitions="")
 ajoute un shader dans le cache
PipelineProgramreload (const GLuint program)
 recharge et recompile un programme du cache.
void reload ()
 recompile tous les shaders. du cache.

Static Public Member Functions

static PipelineCachemanager ()
 acces au singleton.

Protected Member Functions

 PipelineCache ()
 constructeur prive.

Protected Attributes

std::vector< PipelineProgram * > m_programs

Detailed Description

ensemble de shader programs compiles. singleton.

Definition at line 58 of file program.h.

Constructor & Destructor Documentation

◆ ~PipelineCache()

PipelineCache::~PipelineCache ( )
inline

Definition at line 61 of file program.h.

62 {
63 printf("[pipeline cache] %d programs.\n", int(m_programs.size()));
64 // le contexte est deja detruit lorsque ce destructeur est appele...
65 // trop tard pour detruire les programs et les shaders...
66 }
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().
Definition text.cpp:140

◆ PipelineCache()

PipelineCache::PipelineCache ( )
inlineprotected

constructeur prive.

Definition at line 138 of file program.h.

138: m_programs() {}

Member Function Documentation

◆ find()

PipelineProgram * PipelineCache::find ( const char * filename,
const char * definitions = "" )
inline

renvoie un shader program compile. et l'ajoute dans le cache...

Definition at line 69 of file program.h.

70 {
71 // todo unordered_map sans doute plus rapide ? mais il y a peu de shaders utilises...
72 for(auto cache : m_programs)
73 {
74 if(cache->filename == filename && cache->definitions == definitions)
75 return cache;
76 }
77
78 return insert(filename, definitions);
79 }
PipelineProgram * insert(const char *filename, const char *definitions="")
ajoute un shader dans le cache
Definition program.h:82

◆ insert() [1/2]

PipelineProgram * PipelineCache::insert ( const char * filename,
const char * definitions = "" )
inline

ajoute un shader dans le cache

Definition at line 82 of file program.h.

83 {
84 int update_program( const GLuint program, const char *filename, const char *definitions );
85
86 // cree le programme s'il n'existe pas deja...
87 GLuint program= glCreateProgram();
88 update_program(program, filename, definitions);
89 program_print_errors(program);
90
91 return insert(program, filename, definitions);
92 }
int program_print_errors(const GLuint program, const char *filename="")
affiche les erreurs de compilation.
Definition program.cpp:461

◆ insert() [2/2]

PipelineProgram * PipelineCache::insert ( const GLuint program,
const char * filename,
const char * definitions = "" )
inline

ajoute un shader dans le cache

Definition at line 95 of file program.h.

96 {
97 PipelineProgram *cache= new PipelineProgram { filename, definitions, program };
98 m_programs.push_back(cache);
99
100 return cache;
101 }

◆ reload() [1/2]

PipelineProgram * PipelineCache::reload ( const GLuint program)
inline

recharge et recompile un programme du cache.

Definition at line 104 of file program.h.

105 {
106 for(auto cache : m_programs)
107 {
108 if(cache->program == program)
109 {
110 reload_program(program, cache->filename.c_str(), cache->definitions.c_str());
111 program_print_errors(program);
112 return cache;
113 }
114 }
115
116 return nullptr;
117 }
int reload_program(const GLuint program, const char *filename, const char *definitions="")
Definition program.cpp:228

◆ reload() [2/2]

void PipelineCache::reload ( )
inline

recompile tous les shaders. du cache.

Definition at line 120 of file program.h.

121 {
122 for(auto cache : m_programs)
123 {
124 reload_program(cache->program, cache->filename.c_str(), cache->definitions.c_str());
125 program_print_errors(cache->program);
126 }
127 }

◆ manager()

PipelineCache & PipelineCache::manager ( )
inlinestatic

acces au singleton.

Definition at line 130 of file program.h.

131 {
132 static PipelineCache cache;
133 return cache;
134 }
PipelineCache()
constructeur prive.
Definition program.h:138

Member Data Documentation

◆ m_programs

std::vector<PipelineProgram *> PipelineCache::m_programs
protected

Definition at line 140 of file program.h.


The documentation for this class was generated from the following file: