Metode IDirect3DDevice9::ValidateDevice (d3d9.h)
Melaporkan kemampuan perangkat untuk merender operasi dan argumen penpaduan tekstur saat ini dalam satu lintasan.
Sintaks
HRESULT ValidateDevice(
[out, retval] DWORD *pNumPasses
);
Parameter
[out, retval] pNumPasses
Jenis: DWORD*
Arahkan ke nilai DWORD untuk mengisi dengan jumlah pass penyajian yang diperlukan untuk menyelesaikan efek yang diinginkan melalui penyajian multipass.
Mengembalikan nilai
Jenis: HRESULT
Jika metode berhasil, nilai yang dikembalikan adalah D3D_OK. Jika metode gagal, nilai yang dikembalikan dapat berupa salah satu hal berikut: D3DERR_CONFLICTINGRENDERSTATE, D3DERR_CONFLICTINGTEXTUREFILTER, D3DERR_DEVICELOST, D3DERR_DRIVERINTERNALERROR, D3DERR_TOOMANYOPERATIONS, D3DERR_UNSUPPORTEDALPHAARG, D3DERR_UNSUPPORTEDALPHAOPERATION, D3DERR_UNSUPPORTEDCOLORARG, D3DERR_UNSUPPORTEDCOLOROPERATION, D3DERR_UNSUPPORTEDFACTORVALUE, D3DERR_UNSUPPORTEDTEXTUREFILTER, D3DERR_WRONGTEXTUREFORMAT,.
Keterangan
Metode IDirect3DDevice9::ValidateDevice harus digunakan untuk memvalidasi skenario hanya ketika kemampuan lain kekurangan. Misalnya, dalam skenario tekstur multistage, Anda dapat meminta anggota MaxTextureBlendStages dan MaxSimultaneousTextures dari struktur D3DCAPS9 untuk menentukan apakah tekstur multistage dimungkinkan pada perangkat.
Perangkat keras saat ini tidak selalu mengimplementasikan semua kemungkinan kombinasi operasi dan argumen. Anda dapat menentukan apakah operasi penpaduan tertentu dapat dilakukan dengan argumen tertentu dengan mengatur operasi penpaduan yang diinginkan, lalu memanggil metode IDirect3DDevice9::ValidateDevice .
Metode IDirect3DDevice9::ValidateDevice menggunakan status render, tekstur, dan status tahap tekstur saat ini untuk melakukan validasi pada saat panggilan. Perubahan pada faktor-faktor ini setelah panggilan membatalkan hasil sebelumnya, dan metode harus dipanggil lagi sebelum merender adegan.
Untuk performa terbaik, panggil IDirect3DDevice9::ValidateDevice pada waktu inisialisasi; jangan gunakan dalam perulangan render.
Menggunakan nilai iterasi difus, baik sebagai argumen atau sebagai operasi (D3DTA_DIFFUSED3DTOP_BLENDDIFFUSEALPHA) jarang didukung pada perangkat keras saat ini. Sebagian besar perangkat keras hanya dapat memperkenalkan data warna iterasi pada tahap operasi tekstur terakhir.
Cobalah untuk menentukan tekstur (D3DTA_TEXTURE) untuk setiap tahap sebagai argumen pertama, bukan argumen kedua.
Banyak kartu tidak mendukung penggunaan nilai difus atau skalar pada tahap tekstur arbitrer. Seringkali, ini hanya tersedia pada tahap perpaduan tekstur pertama atau terakhir.
Banyak kartu tidak memiliki unit campuran yang terkait dengan tekstur pertama yang mampu lebih dari mereplikasi alfa ke saluran warna atau membalikkan input. Oleh karena itu, aplikasi Anda mungkin hanya perlu menggunakan tahap tekstur kedua, jika memungkinkan. Pada perangkat keras tersebut, unit pertama dianggap berada dalam status defaultnya, yang memiliki argumen warna pertama yang diatur ke D3DTA_TEXTURE dengan operasi D3DTOP_SELECTARG1.
Operasi pada alfa output yang lebih rumit daripada atau secara substansial berbeda dari operasi warna cenderung tidak didukung.
Beberapa perangkat keras tidak mendukung penggunaan D3DTA_TFACTOR dan D3DTA_DIFFUSE secara bersamaan.
Banyak kartu tidak mendukung penggunaan simultan dari beberapa tekstur dan pemfilteran trilinear yang dimigrasikan. Jika pemfilteran trilinear telah diminta untuk tekstur yang terlibat dalam operasi penpaduan multitekstur dan validasi gagal, nonaktifkan pemfilteran trilinear dan validasi ulang. Dalam hal ini, Anda mungkin ingin melakukan penyajian multipass sebagai gantinya.
Persyaratan
Persyaratan | Nilai |
---|---|
Target Platform | Windows |
Header | d3d9.h (termasuk D3D9.h) |
Pustaka | D3D9.lib |