In fondo quello che stai chiedendo qui è "come posso utilizzare una GPU per risolvere questo problema?"
GPU moderne sono essenzialmente motori algebra lineare, in modo che il primo passo sarebbe quello di definire il problema come una matrice che trasforma una coordinata ingresso < x, y> alla sua uscita in spazio omogeneo:
Ad esempio, rappresenterebbe una trasformazione di scalatura x da & frac12 ;, scala y da 1.2, e traducendo e data da due unità come:
e si possono elaborare trasformazioni analoghe per , shear, ecc.
Una volta che hai la tua trasformano rappresentato come una moltiplicazione matrice-vettore, tutto quello che dovete fare è caricare i dati di origine in una texture, specificare il vostro trasformare come il projection matrix, e rendono al risultato. La GPU esegue la moltiplicazione per pixel. (Puoi anche scrivere shader, etc, che fanno matematica più complicata, fattore in più vettori e matrici e cosa no, ma questa è l'idea di base.
Detto questo, una volta che il problema è stato espresso come una trasformazione lineare, è possibile farlo funzionare molto più velocemente sulla CPU sfruttando ad esempio SIMD o uno dei many linear algebralibraries là fuori. A meno che tu non abbia bisogno di prestazioni in tempo reale o di avere una quantità veramente immensa di dati da elaborare, l'uso di CUDA/GL/shader ecc. Potrebbe essere più difficile di quanto non ne valga la pena, dato che c'è un po 'di goffo meccanismo coinvolto nell'inizializzazione delle librerie, impostazione del rendering obiettivi, apprendimento dei dettagli dello sviluppo della grafica, ecc.
Semplicemente la conversione del ciclo interno dalla matematica ad-hoc a una subroutine lineare ottimizzata algebrica può darti un incremento delle prestazioni della CPU che hai fatto bene Là.
La versione OpenGL di Wihch è la destinazione? – Danvil
Sembra un po 'come la "cosa" di PhotoSynth di Microsoft. http://photosynth.net/ – epatel