Objek status

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. Objek status bervariasi menurut versi Direct3D.

Status Input-Tata Letak

Grup status ini menentukan bagaimana tahap Input Assembler (IA) 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 Input Assembler (IA) mengalirkan primitif dari memori ke dalam alur.

Status Rasterizer

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

Status Stensil Kedalaman

Grup status ini menginisialisasi bagian stensil kedalaman dari tahap Output Merger (OM). Lebih khusus lagi, objek ini menginisialisasi pengujian kedalaman dan stensil.

Status Campuran

Grup status ini menginisialisasi bagian blending dari tahap Output Merger (OM).

Status Sampler

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

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

Pertimbangan Performa

Merancang API untuk menggunakan objek status menciptakan beberapa keunggulan performa. Ini termasuk memvalidasi status pada waktu pembuatan objek, memungkinkan 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 Anda dimulai, sebelum perulangan render Anda. Objek status tidak dapat diubah, yaitu, setelah dibuat, Anda tidak dapat mengubahnya. Sebagai gantinya, Anda harus menghancurkan dan membuatnya kembali.

Anda dapat membuat beberapa objek sampler dengan berbagai kombinasi sampler-state. Mengubah status sampler kemudian dicapai dengan memanggil API "Set" 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.

Alur grafik

Tampilan