PFND3DDDI_SETCONVOLUTIONKERNELMONO fungsi panggilan balik (d3dumddi.h)
Fungsi SetConvolutionKernelMono menentukan resolusi dan bobot filter kernel, yang digunakan saat mode pemfilteran tekstur D3DTEXF_CONVOLUTIONMONO diatur.
Sintaks
PFND3DDDI_SETCONVOLUTIONKERNELMONO Pfnd3dddiSetconvolutionkernelmono;
HRESULT Pfnd3dddiSetconvolutionkernelmono(
HANDLE hDevice,
const D3DDDIARG_SETCONVOLUTIONKERNELMONO *unnamedParam2
)
{...}
Parameter
hDevice
Handel ke perangkat tampilan (konteks grafis).
unnamedParam2
pData [in]
Penunjuk ke struktur D3DDDIARG_SETCONVOLUTIONKERNELMONO yang menjelaskan parameter untuk mengatur kernel konvolusi monokrom.
Nilai kembali
SetConvolutionKernelMono mengembalikan salah satu nilai berikut:
Menampilkan kode | Deskripsi |
---|---|
S_OK | Kernel konvolusi monokrom berhasil diatur. |
E_OUTOFMEMORY | SetConvolutionKernelMono tidak dapat mengalokasikan memori yang diperlukan untuk menyelesaikannya. |
Keterangan
D3DTEXF_CONVOLUTIONMONO adalah mode filter tekstur yang digunakan untuk mengambil sampel tekstur monokrom (yaitu, tekstur yang diformat sebagai satu bit per piksel (D3DDDIFMT_A1)). Dalam runtime Direct3D 9.L, filter konvolusi adalah filter kotak dua dimensi (yaitu, semua berat = 1,0). Namun, fungsi SetConvolutionKernelMono didefinisikan untuk mendukung filter yang lebih umum. Saat D3DTEXF_CONVOLUTIONMONO diatur ke sampler tekstur, sampler tekstur menyatakan D3DTSS_MIPFILTER, D3DTSS_MINFILTER, dan D3DTSS_MAGFILTER diabaikan. Alamat tekstur D3DTADDRESS_BORDER dengan warna batas 0 harus diterapkan dalam mode pemfilteran ini. Driver tampilan mode pengguna harus mengembalikan kesalahan atau mengabaikan primitif yang dirender jika mode pemfilteran ini digunakan dengan tekstur non-monokrom.
Rumus berikut digunakan untuk melakukan konvolusi:
Result = Sum(i=0, i <Nv)[ (Ri*(1 - alpha) + Ri+1*alpha) * S)]
Rk = Sum(j=0, j <Nu)[Tk,j*(1 - beta) + Tk,j+1*beta], di mana 0 < k < Nv
S = 1 / (Nu * Nv)
Nu dan Nv adalah lebar dan tinggi kernel filter.
Ti,j adalah sampel tekstur dari tekstur monokrom di lokasi (i, j).
Presisi operasi filter harus setidaknya 6 bit.
Nilai koordinat tekstur terinterpolasi (U, V) di pusat piksel adalah koordinat pusat kernel filter.
Koordinat sampel kernel filter kiri atas (Uf,Vf) dihitung sebagai:
Uf = U * TextureWidth - Nu * 0,5
Vf = V * TextureHeight - Nv * 0,5
Kemudian
beta = Uf - truncate(Uf)
alpha = Vf - truncate(Vf)
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Tersedia di Windows Vista dan versi yang lebih baru dari sistem operasi Windows. |
Target Platform | Desktop |
Header | d3dumddi.h (termasuk D3dumddi.h) |