Bagikan melalui


ID3D11DeviceContext::Metode peta (d3d11.h)

Mendapatkan penunjuk ke data yang terkandung dalam subsumber daya, dan menolak akses GPU ke subsumber daya tersebut.

Sintaks

HRESULT Map(
  [in]            ID3D11Resource           *pResource,
  [in]            UINT                     Subresource,
  [in]            D3D11_MAP                MapType,
  [in]            UINT                     MapFlags,
  [out, optional] D3D11_MAPPED_SUBRESOURCE *pMappedResource
);

Parameter

[in] pResource

Jenis: ID3D11Resource*

Penunjuk ke antarmuka ID3D11Resource .

[in] Subresource

Jenis: UINT

Nomor indeks subsumber daya.

[in] MapType

Jenis: D3D11_MAP

Nilai D3D11_MAP-ketik yang menentukan izin baca dan tulis CPU untuk sumber daya.

[in] MapFlags

Jenis: UINT

Bendera yang menentukan apa yang dilakukan CPU saat GPU sibuk. Bendera ini bersifat opsional.

[out, optional] pMappedResource

Jenis: D3D11_MAPPED_SUBRESOURCE*

Penunjuk ke struktur D3D11_MAPPED_SUBRESOURCE untuk subsumber daya yang dipetakan. Lihat bagian Keterangan mengenai penunjuk NULL.

Mengembalikan nilai

Jenis: HRESULT

Metode ini mengembalikan salah satu Kode Pengembalian Direct3D 11.

Metode ini juga mengembalikan DXGI_ERROR_WAS_STILL_DRAWING jika MapFlags menentukan D3D11_MAP_FLAG_DO_NOT_WAIT dan GPU belum selesai dengan sumber daya.

Metode ini juga mengembalikan DXGI_ERROR_DEVICE_REMOVED jika MapType memungkinkan akses baca CPU dan kartu video telah dihapus.

Untuk informasi selengkapnya tentang kode kesalahan ini, lihat DXGI_ERROR.

Keterangan

Jika Anda memanggil Peta pada konteks yang ditangguhkan, Anda hanya dapat meneruskan D3D11_MAP_WRITE_DISCARD, D3D11_MAP_WRITE_NO_OVERWRITE, atau keduanya ke parameter MapType . Nilai jenis D3D11_MAP lainnya tidak didukung untuk konteks yang ditangguhkan.

Catatan Runtime Direct3D 11.1, yang tersedia dimulai dengan Windows 8, memungkinkan pemetaan buffer konstanta dinamis dan tampilan sumber daya shader (SRV) buffer dinamis dengan D3D11_MAP_WRITE_NO_OVERWRITE. Direct3D 11 dan runtime sebelumnya membatasi pemetaan ke puncak atau buffer indeks. Untuk menentukan apakah perangkat Direct3D mendukung fitur-fitur ini, panggil ID3D11Device::CheckFeatureSupport dengan D3D11_FEATURE_D3D11_OPTIONS. CheckFeatureSupport mengisi anggota struktur D3D11_FEATURE_DATA_D3D11_OPTIONS dengan fitur perangkat. Anggota yang relevan di sini adalah MapNoOverwriteOnDynamicConstantBuffer dan MapNoOverwriteOnDynamicBufferSRV.
 
Untuk informasi tentang cara menggunakan Peta, lihat Cara: Menggunakan sumber daya dinamis.

Pointer NULL untuk pMappedResource

Parameter pMappedResource mungkin NULL ketika tekstur disediakan yang dibuat dengan D3D11_USAGE_DEFAULT, dan API dipanggil pada konteks langsung. Ini memungkinkan tekstur default dipetakan, bahkan jika dibuat menggunakan D3D11_TEXTURE_LAYOUT_UNDEFINED. Setelah panggilan API ini, tekstur dapat diakses menggunakan ID3D11DeviceContext3::WriteToSubresource dan/atau ID3D11DeviceContext3::ReadFromSubresource.

Jangan membaca dari sub sumber daya yang dipetakan untuk ditulis

Saat Anda meneruskan D3D11_MAP_WRITE, D3D11_MAP_WRITE_DISCARD, atau D3D11_MAP_WRITE_NO_OVERWRITE ke parameter MapType , Anda harus memastikan bahwa aplikasi Anda tidak membaca data sub sumber daya tempat anggota pDataD3D11_MAPPED_SUBRESOURCE poin karena melakukannya dapat menyebabkan penalti performa yang signifikan. Wilayah memori tempat titik pData dapat dialokasikan dengan PAGE_WRITECOMBINE, dan aplikasi Anda harus mematuhi semua batasan yang terkait dengan memori tersebut.
Catatan  

Bahkan kode C++ berikut dapat membaca dari memori dan memicu penalti performa karena kode dapat diperluas ke kode rakitan x86 berikut.

Kode C++:

*((int*)MappedResource.pData) = 0;

Kode rakitan x86:

AND DWORD PTR [EAX],0
 

Gunakan pengaturan pengoptimalan dan konstruksi bahasa yang sesuai untuk membantu menghindari penalti performa ini. Misalnya, Anda dapat menghindari pengoptimalan xor dengan menggunakan penunjuk volatil atau dengan mengoptimalkan kecepatan kode alih-alih ukuran kode.

Windows Phone 8: API ini didukung.

Persyaratan

Persyaratan Nilai
Target Platform Windows
Header d3d11.h
Pustaka D3D11.lib

Lihat juga

ID3D11DeviceContext