Condividi tramite


Metodo ID3D11DeviceContext2::CopyTiles (d3d11_2.h)

Copia i riquadri dal buffer alla risorsa affiancata o viceversa.

Sintassi

void CopyTiles(
  [in] ID3D11Resource                        *pTiledResource,
  [in] const D3D11_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
  [in] const D3D11_TILE_REGION_SIZE          *pTileRegionSize,
  [in] ID3D11Buffer                          *pBuffer,
  [in] UINT64                                BufferStartOffsetInBytes,
  [in] UINT                                  Flags
);

Parametri

[in] pTiledResource

Tipo: ID3D11Resource*

Puntatore a una risorsa affiancata.

[in] pTileRegionStartCoordinate

Tipo: const D3D11_TILED_RESOURCE_COORDINATE*

Puntatore a una struttura D3D11_TILED_RESOURCE_COORDINATE che descrive le coordinate iniziali della risorsa affiancata.

[in] pTileRegionSize

Tipo: const D3D11_TILE_REGION_SIZE*

Puntatore a una struttura D3D11_TILE_REGION_SIZE che descrive le dimensioni dell'area affiancata.

[in] pBuffer

Tipo: ID3D11Buffer*

Puntatore a un oggetto ID3D11Buffer che rappresenta un buffer predefinito, dinamico o di staging.

[in] BufferStartOffsetInBytes

Tipo: UINT64

Offset in byte nel buffer in corrispondenza di pBuffer per avviare l'operazione.

[in] Flags

Tipo: UINT

Combinazione di valori tipizzati di D3D11_TILE_COPY_FLAG combinati usando un'operazione OR bit per bit e che identifica come copiare i riquadri.

Valore restituito

nessuno

Osservazioni

CopyTiles elimina le operazioni di scrittura in aree non mappate e gestisce le operazioni di lettura da aree non mappate , ad eccezione delle risorse affiancate Tier_1 , in cui le aree di lettura e scrittura non mappate non sono valide.

Se un'operazione di copia comporta la scrittura nella stessa posizione di memoria più volte perché più posizioni nella risorsa di destinazione vengono mappate alla stessa memoria del riquadro, le operazioni di scrittura risultanti in riquadri con mapping multiplo non sono deterministiche e non ripetibili; ovvero, l'accesso alla memoria del riquadro avviene in qualsiasi ordine in cui l'hardware esegue l'operazione di copia.

I riquadri coinvolti nell'operazione di copia non possono includere riquadri contenenti mipmap compressi o risultati dell'operazione di copia non definiti. Per trasferire i dati da e verso mipmap inseriti nell'hardware nei riquadri uno o più che costituiscono i mip compressi, è necessario usare le API standard (ovvero non specifiche del riquadro) copia e aggiornamento (ad esempio ID3D11DeviceContext1::CopySubresourceRegion1 e ID3D11DeviceContext1::UpdateSubresource1) o ID3D11DeviceContext::GenerateMips per l'intera catena mipmap.

Il layout di memoria dei riquadri nel lato della risorsa buffer non affiancata dell'operazione di copia è lineare in memoria entro 64 KB, che l'hardware e il driver swizzle e deswizzle per riquadro in base alle esigenze quando vengono trasferiti da e verso una risorsa affiancata. Per le superfici di anti-analisi multisample (MSAA), l'hardware e il driver attraversano i campioni di ogni pixel nell'ordine di indice di esempio prima di passare al pixel successivo. Per i riquadri parzialmente riempiti sul lato destro (per una superficie con una larghezza diversa da un multiplo di larghezza in pixel), l'inclinazione e lo stride per spostare verso il basso una riga è la dimensione intera in byte del numero di pixel che si adattano al riquadro se il riquadro era pieno. Pertanto, può esserci un divario tra ogni riga di pixel in memoria. I mipmap più piccoli di un riquadro non vengono compressi insieme nel layout lineare, che potrebbe sembrare uno spreco di spazio di memoria, ma come accennato non è possibile usare CopyTiles o ID3D11DeviceContext2::UpdateTiles per copiare in mipmap che l'hardware comprime insieme. È sufficiente usare API di copia e aggiornamento generiche (ad esempio ID3D11DeviceContext1::CopySubresourceRegion1 e ID3D11DeviceContext1::UpdateSubresource1) per copiare singolarmente piccoli mipmap. Anche se nel caso di un'API di copia generica (ad esempio ID3D11DeviceContext1::CopySubresourceRegion1), la memoria lineare deve essere la stessa dimensione della risorsa affiancata; ID3D11DeviceContext1::CopySubresourceRegion1 non può copiare da una risorsa buffer a texture2D, ad esempio.

Per altre informazioni sulle risorse affiancate, vedi Risorse affiancate.

Requisiti

Requisito Valore
Client minimo supportato Windows 8.1 [app desktop | App UWP]
Server minimo supportato Windows Server 2012 R2 [app desktop | App UWP]
Piattaforma di destinazione Windows
Intestazione d3d11_2.h
Libreria D3D11.lib

Vedi anche

ID3D11DeviceContext2