Domanda

Uso XNA come base semplice per l'elaborazione grafica che sto facendo sulla CPU, perché fornisce già molte cose di cui ho bisogno. Attualmente, il mio & Quot; rendertarget & Quot; è una matrice di un colore personalizzato struct che ho scritto che consiste di tre campi in virgola mobile: R, G, B.

Quando voglio renderizzarlo sullo schermo, converto manualmente questo array nel Colore Texture2D fornito da XNA (solo 8 bit di precisione per canale) semplicemente bloccando il risultato nell'intervallo di byte 0-255. Ho quindi impostato questo nuovo array come i dati di un SurfaceFormat (ha un SurfaceFormat.Color di SpriteBatch) e renderizzo la trama con un StructLayout.

Quello che sto cercando è un modo per sbarazzarmi di questo processo di traduzione sulla CPU e semplicemente inviare il mio backbuffer direttamente alla GPU come una sorta di trama, dove voglio fare un post-elaborazione di base. E ho davvero bisogno di un po 'più di precisione di 8 bit lì (non necessariamente a 32 bit, ma dal momento che quello che sto facendo non è intensivo per la GPU, immagino non possa far male).

Come potrei fare per fare questo?

Ho pensato che se avessi dato a Color una dimensione esplicita di 32 byte (quindi 8 byte di riempimento, perché i miei tre canali riempiono solo 24 bit) attraverso SurfaceFormat.Vector4 e impostando il SetData<Color> della trama che viene renderizzata con < => a VertexDeclaration (32 byte di grandi dimensioni) e riempito la trama con <=> che potrebbe funzionare. Ma ottengo questa eccezione:

  

Il tipo che stai usando per T in questo metodo è una dimensione non valida per questa risorsa.

È possibile usare arbitrariamente <=> e interpretarli come dati di trama nella GPU come puoi fare con i vertici attraverso <=> specificando come sono disposti?

È stato utile?

Soluzione

Penso di avere quello che voglio scaricando il Colore struct che ho creato e usando Vector4 per le mie informazioni sul colore. Funziona se SurfaceFormat della trama è anche impostato su <=>.

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