ciao.
Ho finalmente capito documentandomi su google l'uso dei container coi template , adesso ho un altro dubbio:
L'espansione di codice dei template avviene in modo statico in compile time.
Il mio problema è questo:
Ho una serie di oggetti beam,column,shell ecc.... che hanno tutti un metodo DrawGl da richiamare , questo metodo contiene del codice tipo:
codice:
glBindVertexArray(m_vaoID[0]);
glGenBuffers(2, m_vboID);
glBindBuffer(GL_ARRAY_BUFFER, m_vboID[0]);
glBufferData(GL_ARRAY_BUFFER, 9*sizeof(GLfloat), vert, GL_STATIC_DRAW);
glVertexAttribPointer((GLuint)0, 3, GL_FLOAT, GL_FALSE, 0, 0);
glEnableVertexAttribArray(0);
glBindBuffer(GL_ARRAY_BUFFER, m_vboID[1]);
glBufferData(GL_ARRAY_BUFFER, 9*sizeof(GLfloat), col, GL_STATIC_DRAW);
glVertexAttribPointer((GLuint)1, 3, GL_FLOAT, GL_FALSE, 0, 0);
glEnableVertexAttribArray(1);
// Second VAO setup
glBindVertexArray(m_vaoID[1]);
glGenBuffers(1, &m_vboID[2]);
glBindBuffer(GL_ARRAY_BUFFER, m_vboID[2]);
glBufferData(GL_ARRAY_BUFFER, 9*sizeof(GLfloat), vert2, GL_STATIC_DRAW);
glVertexAttribPointer((GLuint)0, 3, GL_FLOAT, GL_FALSE, 0, 0);
glEnableVertexAttribArray(0);
glBindVertexArray(0);
ma se ho 10000 oggetti(e si parla proprio di 10000 oggetti) con una funzione drawgl simile a questa ma con alcune variazioni con i template viene espanso tutto il codice (è come se concatenassi tutto il codice delle varie funzioni di cui viene richiamato il metodo drawgl) e non uso funzioni virtuali?.
1)ma se avviene cosi ,solo con l'attributo inline posso fare una cosa del genere?
2)Devo fare un importazione da un tipo di formato input/output in xml e al tempo di compilazione non ho ancora gli oggetti, o meglio li ho senza i parametri per es:
questa è del codice che potrebbe essere espanso
codice:
glBindBuffer(GL_ARRAY_BUFFER, m_vboID[1]);
ma mi manca il m_vboID[1],
è possibile espandere prima la funzione e poi dopo l'importazione andare a settare i vari parametri?
lavorano forse cosi i template?
Scusate ma non ho capito neanche su google.
Chiedo a voi.
Grazie in anticipo.