Bagikan melalui


API Grafis di Windows

Windows Vista mencakup dukungan untuk model driver tampilan yang sama sekali baru yang mewakili revisi utama dalam desain driver video sejak pengenalan Windows Driver Model (WDM) untuk Windows 98. Model yang didesain ulang ini mencerminkan evolusi perangkat keras video dari dunia operasi raster 2D dan aplikasi GDI hingga game 3D dengan perangkat keras grafis fungsi tetap, dan akhirnya ke unit pemrosesan grafis (GPU) modern yang dapat diprogram yang mendukung berbagai aplikasi grafis berperkinerja tinggi. Windows 7 dan Windows 8 dibangun pada infrastruktur grafis Windows Vista dengan menyediakan fitur grafis dan API tambahan. Artikel ini membahas fitur dan API grafis Windows.

Latar belakang

API utama untuk grafik pemrograman sejak awal Windows telah menjadi Antarmuka Perangkat Grafis (GDI). API ini dirancang untuk menangani banyak perangkat output 2D, dan membentuk dasar untuk pengalaman antarmuka pengguna Windows. DirectDraw dan Direct3D diperkenalkan sebagai API alternatif untuk mendukung game layar penuh dan penyajian 3D sebagai ekstensi ke perangkat keras yang ada saat itu. Interaksi dengan GDI rumit. Intermixing yang efektif dari elemen GDI tradisional dengan elemen Direct3D telah dibatasi oleh desain ini. WDM versi Windows XP, yang dikenal sebagai XPDM, mencerminkan sifat GDI dan Direct3D secara berdampingan (lihat Gambar 1).

Gambar 1. API Grafis di Windows XP

xpdm

Selama bertahun-tahun, kekuatan kartu video 3D telah tumbuh secara dramatis ke titik di mana sebagian besar perangkat keras didedikasikan untuk fungsi ini. Model driver baru, Windows Display Driver Model (WDDM), membawa GPU dan Direct3D ke garis depan, memungkinkan pembuatan pengalaman yang sama sekali baru, desktop 3D, yang dengan mulus memadukan dunia GDI 2D dengan kekuatan GPU modern yang dapat diprogram. Dengan WDDM, perangkat keras video sepenuhnya didorong oleh Direct3D, dan semua antarmuka grafis lainnya berkomunikasi dengan perangkat keras video melalui model driver direct3D-sentris baru (lihat Gambar 2).

Gambar 2. API Grafis di Windows Vista

wddm

Untuk informasi selengkapnya tentang WDDM, lihat Panduan Desain Windows Vista Display Driver Model (WDDM) di MSDN.

Direct3D 9

Versi 9 DirectX pertama kali dirilis untuk Windows pada tahun 2002, dengan pembaruan berikutnya pada tahun 2003 dan 2004. API ini mewakili satu dekade evolusi teknologi DirectX, pengenalan model pemrograman shader yang lebih kuat untuk Direct3D, dan kematangan yang didukung oleh ribuan judul pengiriman. Direct3D 9 adalah antarmuka grafis utama di Windows Vista. Ini tetap menjadi API yang ideal untuk digunakan untuk menulis game dan aplikasi 3D yang perlu berjalan pada berbagai perangkat keras dan rilis Windows yang ada. Detail model driver baru disembunyikan dari aplikasi yang menggunakan antarmuka Direct3D 9, tetapi di balik layar sistem operasi mengambil keuntungan penuh dari kemampuan baru untuk memberikan multitugas sejati dari GPU, manajemen sumber daya yang lebih efisien, dan performa yang kuat.

Untuk memastikan kompatibilitas penuh dengan versi Windows yang lebih lama, beberapa kekhasan model driver lama harus ditiru bahkan dengan model driver tampilan Windows Vista baru. Misalnya, ketika aplikasi layar penuh kehilangan fokus, aplikasi harus mengasumsikan telah kehilangan semua sumber daya dalam memori video (VRAM) dan memuat ulang sumber daya yang dibuatnya sebagai sumber daya yang tidak dikelola meskipun model driver baru menangani sumber daya secara transparan tanpa mengeluarkannya dari konteks perangkat. Bahkan konsep jenis sumber daya terkelola vs. default khusus untuk model driver lama. Contoh lain adalah harapan kegagalan saat mengalokasikan sumber daya (kumpulan default) yang tidak dikelola melebihi jumlah VRAM yang tersedia, meskipun model driver baru dapat memberikan jumlah memori video virtual yang hampir tidak terbatas. Karena persyaratan ini, aplikasi Direct3D yang berjalan di Windows Vista masih akan menerima kondisi kesalahan ini. Dengan demikian, mereka terbatas pada kemampuan mereka untuk menggunakan antarmuka Direct3D 9 dasar untuk sepenuhnya menggunakan beberapa fitur model driver baru.

Sementara sistem baru yang dikirim dengan Windows Vista akan menyertakan kartu video dengan driver WDDM, dan driver baru untuk sejumlah kartu video populer disertakan dalam kotak, Windows Vista terus mendukung kemampuan untuk menggunakan driver XPDM yang lebih lama untuk peningkatan dan edisi perusahaan. Pada sistem yang menggunakan model driver lama, Direct3D 9 dan antarmuka yang lebih lama harus digunakan, dan pengoperasian sistem grafis sangat mirip dengan Windows XP (Gambar 1). WDDM diperlukan agar aplikasi menggunakan Direct3D 9Ex, Direct3D 10, dan versi yang lebih baru.

Direct3D 9Ex

Antarmuka Direct3D 9Ex menyediakan akses ke sedikit ekstensi API Direct3D 9 standar yang mengekspos alokasi sumber daya virtual, semantik perangkat baru yang hilang, dan beberapa fitur baru lainnya yang tersedia saat berjalan di Windows Vista. Dengan membuat objek yang diperluas ini, API Direct3D 9 menggunakan semantik baru, dan oleh karena itu mengharuskan aplikasi untuk menggunakan logika yang berbeda (dan oleh karena itu jalur kode yang berbeda) untuk pembuatan sumber daya, manajemen, dan penanganan kesalahan untuk jenis kondisi baru. API ini hanya tersedia di Windows Vista, dan memerlukan driver WDDM. Karena Direct3D 9Ex menggunakan API terpisah dan jalur kode driver daripada Direct3D 9, mendukung API ini memerlukan kasus pengujian tambahan untuk aplikasi Anda.

Alasan utama untuk membuat DIRECT3D 9Ex API baru adalah untuk memungkinkan akses penuh ke kemampuan baru WDDM sambil mempertahankan kompatibilitas untuk aplikasi Direct3D yang ada. Desktop 3D baru dan banyak aplikasi khusus Windows Vista menggunakan versi Direct3D 9 ini, tetapi tidak berfungsi saat berjalan pada driver XPDM yang lebih lama. Karena Direct3D 9Ex API tidak akan pernah muncul pada versi Windows yang lebih lama karena kurangnya dukungan untuk WDDM, antarmuka Direct3D 9 standar mencakup serangkaian sistem yang jauh lebih luas. Untuk aplikasi berkinerja tinggi yang dapat memanfaatkan perangkat keras video generasi berikutnya, direct3D versi 10 yang sama sekali baru menyediakan banyak kemampuan baru yang tidak diekspos oleh Direct3D 9Ex. Akibatnya, untuk game dan sebagian besar aplikasi lainnya, Direct3D 9 atau Direct3D 10 adalah API yang direkomendasikan.

Catatan

DirectX SDK tidak menyediakan sampel, header, atau pustaka untuk antarmuka Direct3D 9Ex. Pustaka MSDN dan Windows SDK (sebelumnya dikenal sebagai Platform SDK) berisi dokumentasi, header, dan pustaka yang tersedia.

 

Untuk informasi selengkapnya tentang Direct3D 9Ex, lihat DirectX untuk Windows Vista di MDSN.

Direct3D 10

Untuk sepenuhnya mewujudkan potensi model driver Windows Vista baru dan perangkat keras generasi berikutnya, versi api Direct3D yang sama sekali baru telah dibuat. Sementara WDDM menghilangkan beberapa batasan performa dalam sistem grafis yang ada, Direct3D 10 melangkah lebih jauh dengan menghapus hambatan desain di API Direct3D yang ada, dan sangat menyederhanakan tugas pemrograman GPU.

API baru sepenuhnya menghilangkan semua kecuali beberapa aspek fungsi tetap, menggantinya dengan konstruksi yang dapat diprogram dan sangat menyederhanakan implementasi internal. Ratusan bit kemampuan dalam versi Direct3D sebelumnya telah sepenuhnya dihilangkan dan diganti dengan serangkaian fungsionalitas inklusif yang terdefinisi dengan baik yang hanya memiliki beberapa skenario penggunaan opsional untuk format sumber daya tertentu. Pembuatan dan validasi sumber daya intensif CPU sekarang memiliki semantik eksplisit di API baru. Ini memungkinkan perilaku performa yang jauh lebih dapat diprediksi, dan sangat mengurangi overhead per gambar. Sumber daya dapat dikonfigurasi ulang ke dalam beberapa formulir untuk memungkinkan penggunaan yang efisien pada berbagai tahap, dan set fitur memberlakukan pembatasan yang jauh lebih sedikit pada skenario penggunaan untuk format. Ada juga format tekstur peta normal terkompresi blok baru.

Dalam API baru, konstanta shader dan status perangkat adalah sumber daya eksplisit, memungkinkan penembolokan yang jauh lebih efisien pada perangkat keras dan validasi driver yang sangat disederhanakan. Model shader yang dapat diprogram telah disatukan di seluruh pemisah vertex dan piksel, dan dibuat lebih ekspresif dengan model komputasi dan set operator yang terdefinisi dengan baik. Selain itu, tahap shader geometri baru telah ditambahkan untuk beroperasi pada primitif setelah tahap shader vertex. Hasil pekerjaan GPU dalam tahap shader vertex dan geometri alur dapat dialirkan ke RAM video untuk digunakan kembali, memungkinkan kemungkinan operasi GPU multi-pass yang sangat kompleks dengan interaksi CPU minimal.

Semua penyempurnaan ini memungkinkan teknologi grafis generasi berikutnya dan memperluas kemampuan aplikasi untuk pekerjaan di luar beban ke GPU. Offloading memungkinkan skinning karakter berbasis GPU yang lebih kompleks, teknik morfing yang dipercepat, pembuatan volume bayangan dan ekstrusi, sistem partikel dan fisika yang sepenuhnya berbasis GPU, bahan yang lebih kompleks dikombinasikan menjadi batch gambar besar yang efisien, detail prosedural, pemetaan perpindahan yang dilacak sinar real-time, pembuatan peta kubus satu pass, dan banyak lagi teknik—sekaligus membebaskan sumber daya CPU untuk aplikasi yang lebih kompleks.

Untuk memberikan tingkat inovasi ini di Direct3D 10, perangkat keras yang lebih lama tidak dapat diekspresikan sebagai implementasi parsial antarmuka baru. Kartu video mampu mendukung semua fitur baru, atau bukan kartu berkemampuan Direct3D 10. Oleh karena itu, sementara Direct3D 9 dapat mendorong perangkat keras era DirectX7 dengan banyak bit kemampuan dan batasan penggunaan yang hilang, Direct3D 10 hanya berfungsi pada generasi kartu video baru. Agar aplikasi mendukung perangkat keras video yang lebih lama, aplikasi juga harus mendukung antarmuka Direct3D 9. Versi Direct3D yang akan datang akan dibangun pada versi 10, memperluasnya ke versi api baru sambil memastikan superset yang ketat dari fungsionalitas Direct3D 10.

Untuk informasi selengkapnya tentang Direct3D 10, lihat Direct3D 10.

Direct3D 10.1

Windows Vista Service Pack 1 memperluas API Direct3D 10 dengan Direct3D 10.1, yang menambahkan antarmuka opsional dan model shader tambahan untuk mendukung fitur perangkat keras baru kartu video yang mendukung Direct3D 10.1. Semua perangkat keras yang mampu mendukung Direct3D 10.1 juga sepenuhnya mendukung semua fitur Direct3D 10, dan pengembang game dapat menggunakan fitur tambahan Direct3D 10.1, jika tersedia.

Catatan

Direct3D 10.1 adalah API grafis yang digunakan oleh desktop Windows 7.

 

Catatan

Pembaruan Windows 7 dan Windows Vista menambahkan dukungan untuk tingkat fitur DXGI 1.1, 10level9, dan perangkat WARP10 ke API Direct3D 10.1 yang ada.

 

Direct3D 11

Windows 7 mendukung revisi baru Direct3D, Direct3D 11, yang dibangun berdasarkan desain API Direct3D 10.1. Fitur baru API termasuk rendering multithreaded dan pembuatan sumber daya, Compute Shader, dukungan untuk tingkat fitur 10level9 dan perangkat rendering perangkat lunak WARP10, dan fitur perangkat keras kelas Direct3D 11 baru seperti tessellation menggunakan hull &domain shader, format kompresi tekstur BC6H dan BC7, Shader Model 5.0, dan Dynamic Shader Linkage. API baru dapat menggunakan kartu video kelas Direct3D 10 dan 10.1 yang ada, beberapa kartu Direct3D 9 melalui tingkat fitur 10level9 dengan dukungan fitur terbatas, dan kartu video kelas Direct3D 11 generasi terbaru.

Selain DIRECT3D 11 API, Windows 7 mencakup DXGI 1.1, Direct2D, DirectWrite, dan dukungan untuk driver WDDM 1.1.

Catatan

Direct3D 11 dan API terkait juga tersedia sebagai pembaruan untuk Windows Vista (lihat Cara menginstal versi terbaru DirectX).

 

Direct3D 11.1

Windows 8 memperluas API Direct3D 11 dengan Direct3D 11.1. Direct3D 11.1 mendukung semua perangkat keras yang ada yang memiliki tingkat fitur 11, 10_x, dan dukungan 9_x, serta tingkat fitur 11_1 baru.

Selain API Direct3D 11.1, Windows 8 menyertakan DXGI 1.2, konteks perangkat Direct2D, dan dukungan untuk driver WDDM 1.2.

Catatan

Jika Anda ingin aplikasi Windows Store memprogram grafik 3D dengan DirectX, Anda dapat menggunakan API Direct3D 11.1. Untuk informasi selengkapnya tentang memprogram grafik 3D dengan DirectX, lihat Pengantar grafik 3D dengan DirectX.

 

Pembaruan Platform untuk Windows 7: Dukungan parsial tersedia untuk API Direct3D 11.1 pada Windows 7 atau Windows Server 2008 R2 dengan Pembaruan Platform untuk Windows 7 terinstal. Untuk informasi selengkapnya tentang Pembaruan Platform untuk Windows 7, lihat Pembaruan Platform untuk Windows 7.

Opengl

Windows Vista, Windows 7, dan Windows 8 memberikan dukungan yang sama dengan Windows XP for OpenGL, yang memungkinkan pembuatan kartu video untuk menyediakan driver klien (ICD) yang dapat diinstal untuk OpenGL yang menyediakan dukungan yang dipercepat perangkat keras. Perhatikan bahwa versi ICD yang lebih baru diperlukan untuk sepenuhnya mendukung Windows Vista, atau Windows 7, atau Windows 8. Jika tidak ada ICD yang diinstal, sistem akan kembali ke lapisan perangkat lunak OpenGL v1.1 dalam banyak kasus.

Kompatibilitas Aplikasi, GDI, dan versi Direct3D yang lebih lama

Sistem grafis Windows Vista, Windows 7, dan Windows 8 dirancang untuk mendukung berbagai skenario perangkat keras dan penggunaan untuk memungkinkan teknologi baru sambil terus mendukung sistem yang ada. Antarmuka grafis yang ada, seperti GDI, GDI+, dan versi Direct3D yang lebih lama, terus bekerja pada Windows Vista dan Windows 7, tetapi secara internal dipetakan ulang jika memungkinkan. Ini berarti bahwa sebagian besar aplikasi Windows yang ada akan terus berfungsi.

Windows Vista, Windows 7, dan Windows 8 terus mendukung antarmuka Direct3D dan DirectDraw yang sama dengan Windows XP, kembali ke versi 3 DirectX (dengan pengecualian Mode Dipertahankan Direct3D, yang telah dihapus). Sama seperti Windows XP Professional x64 Edition, aplikasi asli 64-bit pada versi Windows yang lebih baru terbatas pada Direct3D9, DirectDraw7, atau antarmuka yang lebih baru. Aplikasi berkinerja tinggi harus menggunakan Direct3D 9 atau yang lebih baru untuk memastikan bahwa aplikasi tersebut memiliki kecocokan terdekat dengan kemampuan perangkat keras.

Rekomendasi

Pertimbangkan rekomendasi berikut saat memilih API untuk aplikasi grafis Anda:

  • Gunakan Direct3D 9 jika aplikasi Anda harus mendukung Windows XP atau versi Windows yang lebih lama.
  • Gunakan Direct3D 9 jika Anda ingin mendukung Windows Vista atau Windows 7 yang berjalan dengan driver XPDM. Untuk sistem Windows Vista atau Windows 7 yang tidak memiliki direct3D 10 atau perangkat keras video yang lebih baik, Anda dapat memilih untuk menggunakan jalur kode Windows XP Direct3D 9 yang ada atau menggunakan tingkat fitur 10level9 melalui Direct3D 10.1 atau Direct3D 11 API.
  • Gunakan Direct3D 11 untuk memanfaatkan perangkat keras video generasi berikutnya di Windows Vista, Windows 7, dan Windows 8. Aplikasi Windows Store harus menggunakan Direct3D 11 atau yang lebih baru.