Bagikan melalui


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)

Lihat juga

D3DDDIARG_SETCONVOLUTIONKERNELMONO

D3DDDI_DEVICEFUNCS