Ciao.
Devo creare un piccolo engine 3d , la base di questo engine (che puo' essere implementato con qualsiasi api directx o opengl o software) è lo scenegraph , in pratica un albero degli oggetti rappresentati nella scena 3d.
QUesti oggetti servono strutturati ad albero e ordinati per svariati motivi , tra cui il sorting degli elementi per opacità/trasparenza(gli oggetti opachi vanno disegnati per primi nella scena dal back al front e i semitrasparenti per secondi dal front al back),le texture rappresentate , in alto le texture piu' utilizzate e in fondo quelle meno utilizzate , in modo che ci sia un risparmio di risorse (devo inviare meno textures alla gpu),per il bsp culling degli oggetti visibili e per il deferred render.
Ho visto leggendo il libro della gof un pattern che farebbe al caso mio , il composite.
Il problema è che non riesco a pensare un algoritmo veloce per il sorting dei dati in questo pattern , ma ho pensato di utilizzare per farlo un albero binario o il classico quiksort, non riesco bene a districarmi , quello che devo fare è utilizzare degli attributi in base a cui fare l'ordinamento e un indice che è uguale a quello dell'albero binario o del quicksort poi eseguire l'algoritmo di ordinamento e quindi fare il render degli oggetti ordinati.
Ed un algoritmo per attraversamento in base ad un ordine , in questo caso un indice.
Infine mi sembra ottima la possibilità del composite di avere una comune tipizzazione sia per gli oggetti che vanno dal root ai leaf che per i leaf , tutti ereditano dalla stessa classe base
1)In termine di prestazioni voi come lo implementereste?
2)è possibile appoggiarsi a macchine multicore per farlo in parallelo?

ps. ho trovato questa libreria per c++ della intel è piuttosto famosa , che ne dite?
http://www.threadingbuildingblocks.org/
grazie.