PDA

Visualizza la versione completa : [c++11]function e opengl?


giuseppe500
27-04-2014, 17:54
ciao.
Sto lavorando in opengl, gli oggetti in opengl hanno un id che è un dato primitivo
Ho una classe con una struttura solo di dati primitivi (float, int eccc...)che rappresentano i dati e vorrei creare una funzione che renderizza questi dati, magari assegnandola nell' inizializzazione,
la funzione ha come parametro di ingresso la struttura e implementa in modo diverso il rendering dei dati della struttura e ha lo stesso parametro di ritorno.
Ho bisogno di creare un tipo che raccolga funzione e dati e vorrei crearla con delle policy class perchè ci sono moltissimi parametri per la creazione e uso di tipi diversi, mi sembrerebbe piu comodo.
Vorrei pero usare la policy per creare un tipo solo, cio che cambia sono i valori dei dati(il buffer , la texture ecc...)ha una funzione ma possa essere messa in un container.
Ho visto che ci sono nel c++11 i functori tipo function che farebbero al mio caso ma io cerco la cosa piu veloce possibile perche questa funzione viene chiamata moltissime volte davvero(chiaramente a seconda del numero di oggetti)ma ogni diciamo 1/60 di secondo devo richiamare almeno una volta questa funzione per ogni oggetto e gli oggetti possono essere dell'ordine di 1000/2000 per la mia applizione attuale, percio cerco il massimo della velocità.
Ho letto in modern c++ programmi l'implementazione del functore e mi sono un po preoccupato per quanto rigurda le prestazioni forse qualcosa di piu leggero tipo un semplice puntatore a funzione farebbe al caso mio.
chiedo.
grazie.:ciauz:

linoma
28-04-2014, 09:01
Di sicuro usare una funzione static ti permette di recuperare qualce ciclo della cpu che cmq sarebbe poco significativo dato la mole di calcoli che opengl farebbe anche nel caso si userebbero vfpu dedicate.

giuseppe500
28-04-2014, 09:59
Di sicuro usare una funzione static ti permette di recuperare qualce ciclo della cpu che cmq sarebbe poco significativo dato la mole di calcoli che opengl farebbe anche nel caso si userebbero vfpu dedicate.

un altra cosa: usare una lambda per catturare i parametri all interno della stessa struttura dove i dati risiedono puo' essere corretto?
o alla fine è la stessa cosa che richiamare la funzione passandogli i dati che stanno nella struttura?
solo che è possibile impostare una labda a una funzione?
grazie.

linoma
28-04-2014, 10:28
Sono approcci che lo standard introduce per facilitare la stesura e la leggibilità del codice ma ai fini prestazionali dubito portino qualche vantaggio, anzi portano svantaggi se il compilatore non fa bene il suo lavoro. Mia opinione :) Io cmq userei i lamda, anche a funzione se il caso lo permette.

giuseppe500
28-04-2014, 11:08
Sono approcci che lo standard introduce per facilitare la stesura e la leggibilità del codice ma ai fini prestazionali dubito portino qualche vantaggio, anzi portano svantaggi se il compilatore non fa bene il suo lavoro. Mia opinione :) Io cmq userei i lamda, anche a funzione se il caso lo permette.

grazie linoma:) penso anch'io comunque ho chiesto.

Loading