Objek Status (Direct3D 10)

Di Direct3D 10, status perangkat dikelompokkan ke dalam objek status yang sangat mengurangi biaya perubahan status. Ada beberapa objek status, dan masing-masing dirancang untuk menginisialisasi serangkaian status untuk tahap alur tertentu. Anda dapat membuat hingga 4096 dari setiap jenis objek status.

Status Input-Layout

Grup status ini (lihat D3D10_INPUT_ELEMENT_DESC) menentukan bagaimana tahap perakit input membaca data dari buffer input dan merakitnya untuk digunakan oleh shader vertex. Ini termasuk status seperti jumlah elemen dalam buffer input dan tanda tangan data input. Tahap perakitan input adalah tahap baru dalam alur yang tugasnya adalah mengalirkan primitif dari memori ke dalam alur.

Untuk membuat objek input-layout-state, lihat CreateInputLayout.

Status Rasterizer

Grup status ini (lihat D3D10_RASTERIZER_DESC) menginisialisasi tahap rasterizer. Objek ini mencakup status seperti mode isian atau cull, mengaktifkan persegi panjang gunting untuk kliping, dan mengatur parameter multisample. Tahap ini mem-rasterisasi primitif menjadi piksel, melakukan operasi seperti kliping dan pemetaan primitif ke viewport.

Untuk membuat objek rasterizer-state, lihat CreateRasterizerState.

Status Depth-Stencil

Grup status ini (lihat D3D10_DEPTH_STENCIL_DESC) menginisialisasi bagian stensil kedalaman dari tahap output-merger. Lebih khusus lagi, objek ini menginisialisasi pengujian kedalaman dan stensil.

Untuk membuat objek depth-stencil-state, lihat CreateDepthStencilState.

Status Campuran

Grup status ini (lihat D3D10_BLEND_DESC) menginisialisasi bagian penpaduan dari tahap output-merger.

Untuk membuat objek blend-state, lihat CreateBlendState.

Status Sampler

Grup status ini (lihat D3D10_SAMPLER_DESC) menginisialisasi objek sampler. Objek sampler digunakan oleh tahap shader untuk memfilter tekstur dalam memori.

Perbedaan antara Direct3D 9 dan Direct3D 10:

  • Di Direct3D 10, objek sampler tidak lagi terikat ke tekstur tertentu, itu hanya menjelaskan cara melakukan pemfilteran mengingat sumber daya yang terlampir.

 

Untuk membuat objek sampler-state, lihat CreateSamplerState.

Pertimbangan Performa

Merancang API untuk menggunakan objek status menciptakan beberapa keunggulan performa. Ini termasuk memvalidasi status pada waktu pembuatan objek, mengaktifkan penembolokan objek status dalam perangkat keras, dan sangat mengurangi jumlah status yang diteruskan selama panggilan API pengaturan status (dengan meneruskan handel ke objek status alih-alih status).

Untuk mencapai peningkatan performa ini, Anda harus membuat objek status saat aplikasi dimulai, baik sebelum perulangan render Anda. Objek status tidak dapat diubah, yaitu, setelah dibuat, Anda tidak dapat mengubahnya. Sebagai gantinya, Anda harus menghancurkan dan membuatnya kembali. Untuk mengatasi pembatasan ini, Anda dapat membuat hingga 4096 dari setiap jenis objek status. Misalnya, Anda dapat membuat beberapa objek sampler dengan berbagai kombinasi sampler-state. Mengubah status sampler kemudian dicapai dengan memanggil SET API yang sesuai yang meneruskan handel ke objek (dibandingkan dengan status sampler). Ini secara signifikan mengurangi jumlah overhead selama setiap bingkai render untuk mengubah status karena jumlah panggilan dan jumlah data sangat berkurang.

Atau, Anda dapat memilih untuk menggunakan sistem efek yang akan secara otomatis mengelola pembuatan dan penghancuran objek status yang efisien untuk aplikasi Anda.

Fitur API (Direct3D 10)