Status Pengujian Alfa (Direct3D 9)

Aplikasi C++ dapat menggunakan pengujian alfa untuk mengontrol kapan piksel ditulis ke permukaan target render. Dengan menggunakan status render D3DRS_ALPHATESTENABLE , aplikasi Anda mengatur perangkat Direct3D saat ini sehingga menguji setiap piksel sesuai dengan fungsi uji alfa. Jika pengujian berhasil, piksel ditulis ke permukaan. Jika tidak, Direct3D mengabaikan piksel. Pilih fungsi uji alfa dengan status render D3DRS_ALPHAFUNC . Aplikasi Anda dapat mengatur nilai alfa referensi untuk semua piksel untuk dibandingkan dengan menggunakan status render D3DRS_ALPHAREF .

Penggunaan yang paling umum untuk pengujian alfa adalah untuk meningkatkan performa saat memperkosterisasi objek yang hampir transparan. Jika data warna yang diraster lebih buram daripada warna pada piksel tertentu (D3DPCMPCAPS_GREATEREQUAL), piksel akan ditulis. Jika tidak, rasterizer mengabaikan piksel sama sekali, menyimpan pemrosesan yang diperlukan untuk memadukan dua warna. Contoh kode berikut memeriksa apakah fungsi perbandingan tertentu didukung dan, jika demikian, ia mengatur parameter fungsi perbandingan yang diperlukan untuk meningkatkan performa selama penyajian.

// This code example assumes that pCaps is a
// D3DCAPS9 structure that was filled with a 
// previous call to IDirect3D9::GetDeviceCaps.

if (pCaps.AlphaCmpCaps & D3DPCMPCAPS_GREATEREQUAL)
{
    dev->SetRenderState(D3DRS_ALPHAREF, (DWORD)0x00000001);
    dev->SetRenderState(D3DRS_ALPHATESTENABLE, TRUE); 
    dev->SetRenderState(D3DRS_ALPHAFUNC, D3DCMP_GREATEREQUAL);
}

// If the comparison is not supported, render anyway. 
// The only drawback is no performance gain.

Tidak semua perangkat keras mendukung semua fitur pengujian alfa. Anda dapat memeriksa kemampuan perangkat dengan memanggil metode IDirect3D9::GetDeviceCaps . Setelah mengambil kemampuan perangkat, periksa anggota AlphaCmpCaps struktur D3DCAPS9 terkait untuk fungsi perbandingan yang diinginkan. Jika anggota AlphaCmpCaps hanya berisi kemampuan D3DPCMPCAPS_ALWAYS atau hanya kemampuan D3DPCMPCAPS_NEVER, driver tidak mendukung pengujian alfa.

Status Render