Jenis Perangkat (Direct3D 9)

Perangkat HAL

Jenis perangkat utama adalah perangkat hal, yang mendukung rasterisasi yang dipercepat perangkat keras dan pemrosesan verteks perangkat keras dan perangkat lunak. Jika komputer tempat aplikasi Anda berjalan dilengkapi dengan adaptor tampilan yang mendukung Direct3D, aplikasi Anda harus menggunakannya untuk operasi Direct3D. Perangkat hal Direct3D mengimplementasikan semua atau sebagian modul transformasi, pencahayaan, dan rasterisasi dalam perangkat keras.

Aplikasi tidak mengakses adaptor grafis secara langsung. Mereka memanggil fungsi dan metode Direct3D. Direct3D mengakses perangkat keras melalui hal. Jika komputer yang dijalankan aplikasi Anda mendukung hal, itu akan mendapatkan performa terbaik dengan menggunakan perangkat hal.

Untuk membuat perangkat hal, panggil CreateDevice menggunakan D3DDEVTYPE_HAL sebagai jenis perangkat.

Perangkat Referensi

Direct3D mendukung jenis perangkat tambahan yang disebut perangkat referensi atau rasterizer referensi. Tidak seperti perangkat lunak, rasterizer referensi mendukung setiap fitur Direct3D. Perangkat ini dimaksudkan untuk digunakan untuk tujuan penelusuran kesalahan dan oleh karena itu hanya tersedia pada komputer tempat DirectX SDK telah diinstal. Karena fitur-fitur ini diimplementasikan untuk akurasi daripada kecepatan dan diimplementasikan dalam perangkat lunak, hasilnya tidak terlalu cepat. Rasterizer referensi memang menggunakan instruksi CPU khusus kapan pun dapat, tetapi tidak ditujukan untuk aplikasi ritel. Gunakan rasterizer referensi hanya untuk pengujian fitur atau tujuan demonstrasi. Untuk membuat perangkat referensi, panggil metode CreateDevice menggunakan D3DDEVTYPE_REF sebagai jenis perangkat.

Perangkat HAL vs. REF

Perangkat HAL (Hardware Abstraction Layer) dan perangkat REF (REFerence rasterizer) adalah dua jenis utama perangkat Direct3D; yang pertama didasarkan pada dukungan perangkat keras, dan sangat cepat tetapi mungkin tidak mendukung semuanya; sementara yang kedua tidak menggunakan akselerasi perangkat keras, jadi sangat lambat, tetapi dijamin untuk mendukung seluruh set fitur Direct3D, dengan cara yang benar. Secara umum Anda hanya perlu menggunakan perangkat HAL, tetapi jika Anda menggunakan beberapa fitur lanjutan yang tidak didukung kartu grafis Anda maka Anda mungkin perlu kembali ke REF.

Lain kali Anda mungkin ingin menggunakan REF adalah jika perangkat HAL menghasilkan hasil yang aneh - yaitu, Anda yakin kode Anda benar, tetapi hasilnya bukan yang Anda harapkan. Perangkat REF dijamin bersifat benar, jadi Anda mungkin ingin menguji aplikasi Anda di perangkat REF dan melihat apakah perilaku aneh berlanjut. Jika tidak, itu berarti bahwa (a) aplikasi Anda berasumsi bahwa kartu grafis mendukung sesuatu yang tidak, atau (b) itu adalah bug driver. Jika masih tidak berfungsi dengan perangkat REF, maka itu adalah bug aplikasi.

Pemrosesan Verteks Perangkat Keras vs. Perangkat Lunak

Pemrosesan verteks Perangkat Keras versus Perangkat Lunak hanya benar-benar berlaku untuk perangkat HAL. Ketika Anda mendorong simpul melalui alur, simpul perlu diubah (oleh dunia, tampilan, dan matriks proyeksi pada gilirannya) dan dinyalakan (oleh lampu bawaan D3D) - tahap pemrosesan ini dikenal sebagai T&L (untuk Transformasi & Pencahayaan). Pemrosesan vertex perangkat keras berarti ini dilakukan dalam perangkat keras, jika perangkat keras mendukungnya; ergo, Pemrosesan verteks perangkat lunak dilakukan adalah perangkat lunak. Praktik umumnya adalah mencoba membuat perangkat T&L Perangkat Keras terlebih dahulu, dan jika itu gagal coba Mixed, dan jika gagal coba Perangkat Lunak. (Jika perangkat lunak gagal, menyerah dan keluar dengan kesalahan).

Perangkat Direct3D