Dukungan Gambar Garis di D3DX (Direct3D 9)

D3DX adalah pustaka utilitas yang menyediakan layanan pembantu. Ini adalah lapisan di atas komponen Direct3D.

D3DX mendukung garis antialas seluruh piksel tunggal. Pola garis tidak lagi didukung.

Pustaka gambar garis meniru garis menggunakan segitiga tekstur dan mengasumsikan hal berikut:

  • Perangkat keras tersedia melalui antarmuka Direct3D 9.
  • Setidaknya satu tahap tekstur tersedia.
  • Tekstur 64x64 digunakan.
  • Mode berikut tersedia:
    • Pemfilteran bilinear
    • Mode alamat klem
    • Mode alamat bungkus
    • Modulasi alpha op
    • Penpaduan alfa (SRCBLEND = SRC_ALPHA, DESTBLEND = INV_SRC_ALPHA)
    • Uji alfa jika penpaduan alfa tidak tersedia; hasil kualitas lebih rendah

Untuk penyajian garis antialisis dalam target render multisample, gunakan ID3DXLine yang menghasilkan poligon bertekskus. Nilai cakupan piksel, yang dihasilkan oleh rasterisasi garis antialisi, memodulasi nilai alfa piksel yang dihitung oleh shader piksel. Untuk menggambar garis antialisi, aplikasi harus mengaktifkan penpaduan alfa dan kemudian harus mengatur status render D3DRS_ANTIALIASEDLINEENABLE ke TRUE.

Deskripsi Fungsionalitas

Pustaka mendukung menggambar garis garis berwarna dengan fitur baris berikut, yang masing-masing independen dari yang lain:

  • Lebar garis
  • Pola garis dengan pengulangan (penghitung pola garis diatur ulang dengan setiap panggilan ID3DXLine::D raw atau ID3DXLine::D rawTransform . Ini tidak direset dengan setiap segmen garis garis.)
  • Antialias
  • Garis gaya OpenGL

Catatan

Tidak ada mitering yang didukung.

 

Pustaka menggunakan dukungan menggambar baris perangkat keras asli (jika tersedia di perangkat) hanya jika:

  • Lebar garis adalah 1.
  • Tidak ada pola garis yang diaktifkan.

Garis antialisi seluruh piksel tunggal didukung oleh beberapa perangkat keras, sehingga pustaka menggunakannya, jika tersedia. Anggota LineCaps dari struktur D3DCAPS9 menghitung kemampuan perangkat keras untuk primitif gambar garis.

Ketika gambar garis perangkat lunak digunakan, setiap baris diperluas menjadi persegi panjang dan empat simpul dikirim ke driver.

Setiap segmen garis digambar dengan dua segitiga. Lebar primitif adalah lebar yang ditentukan ditambah 1,0, yang dapat menghasilkan baris atau kolom piksel tambahan. Ketika garis semakin lebar, gradien antialias dalam tekstur menjadi lebih kasar, dan texel yang lebih buram sepenuhnya direplikasi di sekitar tengah. Gradien dikodekan ke arah v tekstur, dan biasanya direplikasi di sepanjang u-direction. Mode alamat tekstur untuk v adalah clamp.

Setiap segmen baris dalam daftar dapat dianggap sebagai garis terpisah yang kebetulan dimulai dari titik akhir sebelumnya.

Kualitas antialias di sepanjang tepi sejajar dengan panjang garis asli menderita saat garis semakin lebar. Diharapkan bahwa lebar garis yang lebih besar dari 32,0 akan mulai menunjukkan artefak di sepanjang tepi ini.

D3DX