Ho impostato uno texture2d
come destinazione del rendering del dispositivo. Dopo il sorteggio, come posso leggere e scrivere pixel dal render target direttamente e presentarlo poi.legge i dati dei pixel dalla destinazione di rendering in d3d11
risposta
Se il vostro intento è quello di usarlo come input ad un altro dello shader: - è sufficiente assicurarsi si è creato il Texture2D con la D3D11_BIND_RENDER_TARGET e D3D11_BIND_SHADER_RESOURCE.
- Bind la texture come rendere bersaglio e rendere ad esso.
- Separalo come destinazione di rendering e collegalo come risorsa shader e usalo nel prossimo shader.
- Basta notare che una trama non può essere associata come destinazione e risorsa allo stesso tempo.
Se il tuo intento è di accedere alla trama della CPU usando C++ come una matrice di pixel, allora devi fare un po 'di lavoro. Sfortunatamente, a causa delle attuali architetture GPU, non è possibile accedere direttamente ai pixel di texture2D poiché i pixel vivono effettivamente in potenziale di memoria GPU in un formato speciale (formato swizzled).
- Creare una trama in cui la GPU può eseguire il rendering.
- Creare una trama di staging (D3D11_USAGE_STAGING) che verrà utilizzata per ricevere l'output della GPU.
- Renderizza alla trama GPU.
- Emettere un ID3D11DeviceContext :: CopyResource() o ID3D11DeviceContext :: CopySubresource()
- chiamata ID3D11DeviceContext :: Map() sulla risorsa messa in scena per ottenere l'accesso ai pixel.
- Chiama ID3D11DeviceContext :: Unmap() sulla risorsa di staging.
- Chiama ID3D11DeviceContext :: UpdateSubresource() per aggiornare la versione della risorsa della GPU.
Come si può vedere, questo non è certamente un insieme di operazioni banali e va contro ciò che l'architettura GPU di oggi è ottimizzata per fare. Io di certo non lo consiglierei.
Se si finisce per percorrere questa strada, assicuratevi di leggere anche su tutte le preoccupazioni Potenza memoria della GPU rilettura viene fornito con: http://msdn.microsoft.com/en-us/library/windows/desktop/bb205132(v=vs.85).aspx#Performance_Considerations
Vuoi dire leggere i pixel alla CPU, o come input per un altro shader? – jcoder