Non è questo approccio o stile di codifica piuttosto da evitare?
Perché?
L'intero punto di shader è che tu possa essere in grado di fare ciò che vuoi, esprimere in modo più efficace ciò che vuoi fare e consentire a te stesso un maggiore controllo sull'hardware.
Non si dovrebbe mai, sempre aver paura di ri-proporre qualcosa per una funzionalità diversa. Le trame non memorizzano i colori; memorizzano dati, che può essere essere colore, ma può anche essere altre cose. Prima smetterai di pensare a trame come immagini, meglio sarai come programmatore grafico.
La GPU e l'API sono disponibili. Usalo come tu vedi in forma; non permettere come pensi che l'API dovrebbe essere usata per limitarti.
Non so come utilizzare OpenCL e utilizzare la potenza del multithreading della GPU per indicare direttamente e trasmettere il codice previsto?
Ieri, avrei detto "sì". Tuttavia, oggi è stato rilasciato: OpenGL compute shaders.
Il fatto che OpenGL ARB e Khronos abbiano creato questo tipo di shader e così via è un'ammissione tacita che l'interoperabilità OpenCL/OpenGL non è il modo più efficiente di generare dati per scopi di rendering. Dopotutto, se lo fosse, non ci sarebbe bisogno che OpenGL avesse funzionalità di calcolo generalizzate. C'erano 3 versioni di GL 4.x che non fornivano questo. Il fatto che sia qui ora è fondamentalmente l'ARB che dice "Sì, OK, abbiamo bisogno di questo".
Se l'ARB, composto da molte persone che fabbricano l'hardware, pensa che l'interoperabilità CL/GL non sia la strada più veloce da percorrere, allora è abbastanza chiaro che è necessario utilizzare shader di calcolo.
Ovviamente, se stai cercando di fare qualcosa al momento, questo non ti aiuterà; solo NVIDIA ha il supporto shader di calcolo. E anche questo è solo nei driver beta.Ci vorranno molti mesi prima che AMD ottenga il supporto per loro e molti altri prima che il supporto diventi solido e stabile da usare.
Anche così, non sono necessari shader di calcolo per generare dati. Le persone hanno usato transform feedback and geometry shaders to do LOD and frustum culling for instanced rendering. Non aver paura di pensare al di fuori della casella "OpenGL draws stuff".
+1 per spiegarmi cos'è un mouse per computer. –
@ChristianRau oh dio, all'inizio ti ho pensato a dove scherzare, ma poi l'ho letto. Epic – thecoshman