ciao.
Utilizzo un engine grafico di nome wild magic .
Attualmente l'engine utilizza uno scenegraph , un grafo a cui attaccare / rimuovere nodi(ragruppamenti di mesh)e mesh 3d per svariati motiviche non sto qui ad elencare.

La classe renderer semplificando non fa altro che attraversare il grafo e raccogliere le mesh 3d e (geometria e effetto)e i nodi per accumularle in uno stack e poi renderizzarle alla fine.

Il mio problema è che ho in una classe CMarker la rappresentazione grafica sotto forma di puntatore ad un nodo a cui sono attaccate le mesh proprie del oggetto marker instanziato da visualizzare.

ora , il nodo viene successivamente collegato allo scenegraph e i suoi dati delle mesh di rappresentazione vengono accumulati dalla classe renderer.

PAssando al problema:

mi piacerebbe utilizzare il pattern decorator per aggiungere /rimuovere runtime rappresentazioni al mio nodo nella classe ad es un rettangolo intorno alla mesh per la selezione o tantissimi altri oggetti tipo quote , id testuali ecc...

Il nodo come ho spiegato non dispone di un metodo draw e viene rendererizzato dopo la raccolta dei dati dalla classe renderer .

pensavo di ereditare dalla classe nodo CNodeDecorable e creare un metodo draw , richiamato dall interno del renderer tipo

codice:
class renderer{
void renderer::raccoltadati(){

DatiNodoRappersentazione = NodeRappresentation->Draw();
}
}
dato che non è possibile creare un metodo che renderizzi il nodo in opengl direttamente , perchè avrei due metodi di renderizzazione separati pensavo di farmi ritornare dal metodo draw() un array di mesh e effetti a seconda di che decorator ho agganciato al mio nodo, e poi fare il render di questo array nella classe renderer.
E' diverso da aggiungere rimuovere mesh direttamente sul puntatore del nodo , in quanto separo la logica di visualizzazione in varie funzioni draw dei decorator e posso gestirle a modo mio.
Sarebbero rappresentazioni "intelligenti".

Un altro metodo sarebbe quello di passare l'istanza del renderer alla classe CNodeDecorable ed eseguire il render del nodo grazie a questa classe richiamando il draw del renderer dal draw del decorator , a me personalmente questa soluzione piace di piu .
codice:
class renderer{
void renderer::raccoltadati(){

NodeRappresentation->Draw(This);
}
}

voi come fareste?
grazie