Ciao.
Sto realizzando un piccolo engine 3d per opengl.
Ogni elemento opengl ha una procedura per essere creato.
per es:
per creare una texture:
codice:
GLuint texture;
// alloco un identificativo
glGenTextures( 1, &texture );
//seleziono la texture corrente
glBindTexture( GL_TEXTURE_2D, texture );
glTexEnvf( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE );
glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,
GL_LINEAR_MIPMAP_NEAREST );
glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT );
glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT );
//e disegno qualcosa con la texture applicata
questa è la creazione molto semplice di una texture , chiaramente ci sono un enormità di parametri e combinazioni da gestire,ma alla fine per quel che devo fare sono un numero accettabile e comunque sul libro "templates the complete guide" sono spiegati i vari metodi di parametrizzazione dei template che sembrano funzionare ad hoc.
ho pensato infatti che delle classi template possono fare il lavoro di creazione e link della texture. per esempio con i vari parametri genero del codice che potrebbe essere in modo semplificato quello scritto sopra e questo a compile time.
Quello che non capisco è alla base : ho letto che i template agiscono solo a compile time e quindi : come una calsse template si comporta a runtime
se ho creato la texture con tutti i comandi c++ a compile time che potrebbe essere ad es:
codice:
CTexture<parametri>text;
text.create();//qui mi genera il codice a compile time
se aspetto ad es un risultato di un espressione runtime che non posso conoscere a compile time es:
codice:
if(f(x))//risorsa runtime{
CTexture<parametri>text;
text.create();//qui mi genera il codice a compile time
}
non viene generato tutto il codice di cui sopra?E quindi il senso dei template svanisce?
non riesco a capire.
Nella mia testa vedo il codice dei template espandersi quando viene chiamata la funzione template che crea la texture a compile time, ma non riesco a visualizzare il comportamento anche per un solo parametro runtime che non posso conoscere a compile time e quindi non riesco a capire quando avviene l'espansione del codice a runtime.
scusate se mi sono spiegato male , ma sono cose per me un po difficili , e non avendo ancora un modello mentale del soggetto abbastanza buono posso dire fesserie.
ciao.