enumerasi D3D10_USAGE (d3d10.h)
Mengidentifikasi penggunaan sumber daya yang diharapkan selama penyajian. Penggunaan secara langsung mencerminkan apakah sumber daya dapat diakses oleh CPU dan/atau GPU.
Sintaks
typedef enum D3D10_USAGE {
D3D10_USAGE_DEFAULT = 0,
D3D10_USAGE_IMMUTABLE = 1,
D3D10_USAGE_DYNAMIC = 2,
D3D10_USAGE_STAGING = 3
} ;
Konstanta
D3D10_USAGE_DEFAULT Nilai: 0 Sumber daya yang memerlukan akses baca dan tulis oleh GPU. Ini kemungkinan menjadi pilihan penggunaan yang paling umum. |
D3D10_USAGE_IMMUTABLE Nilai: 1 Sumber daya yang hanya dapat dibaca oleh GPU. Ini tidak dapat ditulis oleh GPU, dan tidak dapat diakses sama sekali oleh CPU. Jenis sumber daya ini harus diinisialisasi saat dibuat, karena tidak dapat diubah setelah pembuatan. |
D3D10_USAGE_DYNAMIC Nilai: 2 Sumber daya yang dapat diakses oleh GPU dan CPU (tulis saja). Sumber daya dinamis adalah pilihan yang baik untuk sumber daya yang akan diperbarui oleh CPU setidaknya sekali per bingkai. Untuk menulis ke sumber daya dinamis pada CPU, gunakan metode Peta . Anda dapat menulis ke sumber daya dinamis pada GPU menggunakan CopyResource atau CopySubresourceRegion. |
D3D10_USAGE_STAGING Nilai: 3 Sumber daya yang mendukung transfer data (salin) dari GPU ke CPU. |
Keterangan
Aplikasi mengidentifikasi cara sumber daya dimaksudkan untuk digunakan (penggunaannya) dalam deskripsi sumber daya. Ada beberapa struktur untuk membuat sumber daya termasuk: D3D10_TEXTURE1D_DESC, D3D10_TEXTURE2D_DESC, D3D10_TEXTURE3D_DESC, D3D10_BUFFER_DESC, dan D3DX10_IMAGE_LOAD_INFO.
Perbedaan antara Direct3D 9 dan Direct3D 10: Di Direct3D 9, Anda menentukan jenis memori yang harus dibuat sumber daya pada waktu pembuatan sumber daya (menggunakan D3DPOOL). Ini adalah tugas aplikasi untuk memutuskan kumpulan memori apa yang akan memberikan kombinasi fungsionalitas dan performa terbaik. Di Direct3D 10, aplikasi tidak lagi menentukan jenis memori apa (kumpulan) untuk membuat sumber daya. Sebagai gantinya, Anda menentukan penggunaan sumber daya yang dimaksudkan, dan membiarkan runtime (bersama dengan driver dan manajer memori) memilih jenis memori yang akan mencapai performa terbaik. |
Pembatasan Penggunaan Sumber Daya
Setiap penggunaan menentukan tradeoff antara fungsionalitas dan performa. Secara umum, akses sumber daya dilakukan dengan API berikut.- Akses CPU dilakukan dengan ID3D10Buffer::Map, ID3D10Texture1D::Map, ID3D10Texture2D::Map, atau ID3D10Texture3D::Map
- Akses GPU dilakukan dengan CopySubresourceRegion, CopyResource, atau UpdateSubresource.
Penggunaan Sumber Daya | Default | Dinamis | Tak bisa diubah | Staging |
---|---|---|---|---|
GPU-Read | ya | Ya¹ | ya | Ya1, 2 |
GPU-Write | Ya¹ | Ya1, 2 | ||
CPU-Read | Ya1, 2 | |||
CPU-Write | ya | Ya1, 2 |
- 1 - Ini dibatasi untuk CopySubresourceRegion, CopyResource, dan UpdateSubresource.
- 2 - Tidak boleh berupa buffer stensil kedalaman atau target render multisampled.
Opsi Pengikatan Sumber Daya
Untuk memaksimalkan performa, tidak semua opsi penggunaan sumber daya dapat digunakan sebagai sumber daya input atau output ke alur. Tabel ini mengidentifikasi batasan ini.Sumber daya dapat terikat sebagai | Default | Dinamis | Tak bisa diubah | Staging |
---|---|---|---|---|
Input ke Tahap | Ya³ | Ya⁴ | ya | |
Output dari Tahap | Ya³ |
- 3 - Jika terikat sebagai input dan output menggunakan tampilan yang berbeda, setiap tampilan harus menggunakan subresource yang berbeda.
- 4 - Sumber daya hanya dapat dibuat dengan satu subsumber daya. Sumber daya tidak boleh berupa array tekstur. Sumber daya tidak boleh berupa rantai mipmap.
Persyaratan
Persyaratan | Nilai |
---|---|
Header | d3d10.h |