Pemfilteran Tekstur (Direct3D 9)

Saat Direct3D merender primitif, Direct3D memetakan primitif 3D ke layar 2D. Jika primitif memiliki tekstur, Direct3D harus menggunakan tekstur tersebut untuk menghasilkan warna untuk setiap piksel dalam gambar yang dirender 2D primitif. Untuk setiap piksel dalam gambar di layar primitif, piksel harus mendapatkan nilai warna dari tekstur. Proses ini disebut pemfilteran tekstur.

Saat operasi filter tekstur dilakukan, tekstur yang digunakan biasanya juga diperbesar atau dikurangi. Dengan kata lain, itu sedang dipetakan ke dalam gambar primitif yang lebih besar atau lebih kecil dari dirinya sendiri. Pembesaran tekstur dapat mengakibatkan banyak piksel dipetakan ke satu texel. Hasilnya bisa menjadi penampilan yang chunky. Minifikasi tekstur sering berarti bahwa satu piksel dipetakan ke banyak texel. Gambar yang dihasilkan dapat buram atau alias. Untuk mengatasi masalah ini, beberapa perpaduan warna texel harus dilakukan untuk sampai pada warna untuk piksel.

Direct3D menyederhanakan proses pemfilteran tekstur yang kompleks. Ini memberi Anda tiga jenis pemfilteran tekstur - pemfilteran linier, pemfilteran anisotropik, dan pemfilteran mipmap. Jika Anda tidak memilih pemfilteran tekstur, Direct3D menggunakan teknik yang disebut pengambilan sampel titik terdekat.

Setiap jenis pemfilteran tekstur memiliki kelebihan dan kekurangan. Misalnya, pemfilteran tekstur linier dapat menghasilkan tepi berjatuhan atau tampilan gugus di gambar akhir. Namun, ini adalah metode komputasi pemfilteran tekstur overhead rendah. Pemfilteran dengan mipmap biasanya menghasilkan hasil terbaik, terutama jika dikombinasikan dengan pemfilteran anisotropik. Namun, ini membutuhkan memori terbanyak dari teknik yang didukung Direct3D.

Aplikasi yang menggunakan penunjuk antarmuka tekstur harus mengatur metode pemfilteran tekstur saat ini dengan memanggil metode IDirect3DDevice9::SetSamplerState . Atur nilai parameter pertama ke nomor indeks bilangan bulat (0-7) tekstur yang Anda pilih metode pemfilteran teksturnya. Teruskan D3DSAMP_MAGFILTER, D3DSAMP_MINFILTER, atau D3DSAMP_MIPFILTER untuk parameter kedua guna mengatur filter pembesaran, minifikasi, atau mipmapping. Berikan anggota jenis enumerasi D3DTEXTUREFILTERTYPE sebagai nilai dalam parameter ketiga.

Bagian ini menyajikan metode pemfilteran tekstur yang didukung Direct3D. Ini diatur ke dalam topik-topik berikut.

Catatan

Meskipun status render pemfilteran tekstur yang ada dalam jenis enumerasi D3DRENDERSTATETYPE digantikan oleh status tahap tekstur, IDirect3DDevice9::SetRenderState, dibandingkan dengan versi IDirect3DDevice2, tidak gagal jika Anda mencoba menggunakannya. Sebaliknya, sistem memetakan efek dari status render ini ke tahap pertama dalam kaskade multitekstur, tahap 0. Aplikasi tidak boleh mencampur status render warisan dengan status tahap tekstur yang sesuai, karena hasil yang tidak dapat diprediksi dapat terjadi.

 

Tekstur Direct3D