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.
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.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 |