Domanda

Sto cercando alcune informazioni su XNA su Xbox 360, soprattutto se è possibile eseguire matematica float basata su vettori sulla sua GPU?

Se c'è un modo, puoi indicarmi la giusta direzione?

È stato utile?

Soluzione

Non pretendo di essere un esperto in questo, ma spero che questo possa indicarti una direzione utile.

È possibile? Sì. Probabilmente sai già che la GPU è brava in tali calcoli (da qui la domanda) e puoi effettivamente controllare la GPU usando XNA. Se soddisfa o meno le tue esigenze è una questione diversa.

Per utilizzare la GPU, presumibilmente vorrai scrivere shader usando HLSL. C'è una discreta introduzione a HLSL nel contesto di XNA a Reimers che potresti voler attraversare. In particolare, questo tutorial si concentra sul fare in modo che la GPU esegua un crunching relativo alla grafica, ma ciò che scrivi negli shader dipende da te. Se la tua matematica float basata su vettori ha lo scopo di renderizzare (e quindi può rimanere nel dominio GPU), sei fortunato e puoi fermarti qui.

Probabile rendering su schermo non è ciò che stai cercando. Ora, hai una buona flessibilità in HLSL per quanto riguarda la matematica. Ottenere i risultati nella CPU, tuttavia, non è come è stato progettato il sistema. Questo sta diventando confuso per me, ma Shawn Hargreaves (un dev XNA) afferma su altro di un'occasione che ottenere l'output dalla GPU (diverso dal rendering su schermo) è non banale e ha implicazioni in termini di prestazioni. Il recupero dei dati comporta una chiamata a GetData che causerà un stallo della pipeline .

Quindi può essere fatto. Il framework XNA ti permetterà di scrivere shader per 360 (che supporta Shader Model 3.0 più alcune estensioni) ed è possibile ottenere quei risultati, anche se potrebbe non essere abbastanza efficiente per le tue esigenze.

Altri suggerimenti

Come indicato sopra - XBox360 è pienamente in grado di eseguire qualsiasi calcolo HLSL e in particolare può gestire le istruzioni Vertex e Pixel shader modello 3 e ha un set avanzato di istruzioni specifiche per la piattaforma.

Dato che l'HLSL è in realtà basato su vettori, hai tutti gli strumenti di cui hai bisogno: punti, croce, operazioni vettoriali e calcoli con matrici. Se si desidera inviare calcoli alla GPU e modificare / utilizzare i risultati sulla CPU, è possibile scrivere sulla trama e quindi recuperarla sul lato CPU e decodificarla, utilizzandola per particelle o interazioni fisiche (come l'acqua) sono pochi le occasioni in cui potresti volerlo fare.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top