Bagikan melalui


LPD3DHAL_VALIDATETEXTURESTAGESTATECB fungsi panggilan balik (d3dhal.h)

Fungsi D3dValidateTextureStageState mengembalikan jumlah pass tempat perangkat keras dapat melakukan operasi penpaduan yang ditentukan dalam status saat ini.

Sintaks

LPD3DHAL_VALIDATETEXTURESTAGESTATECB Lpd3dhalValidatetexturestagestatecb;

DWORD Lpd3dhalValidatetexturestagestatecb(
  LPD3DHAL_VALIDATETEXTURESTAGESTATEDATA unnamedParam1
)
{...}

Parameter

unnamedParam1

pvtssd [in]

Menunjuk ke struktur D3DHAL_VALIDATETEXTURESTAGESTATEDATA yang berisi informasi yang diperlukan driver untuk menentukan dan mengembalikan jumlah pass yang diperlukan untuk melakukan operasi penpaduan.

Menampilkan nilai

D3dValidateTextureStageState mengembalikan salah satu kode panggilan balik berikut:

Keterangan

Driver Microsoft Direct3D yang mendukung tekstur harus menerapkan D3dValidateTextureStageState.

Implementasi driver dari fungsi ini harus mengevaluasi status tekstur saat ini untuk semua tahap tekstur yang terkait dengan konteks. Jika perangkat keras driver dapat melakukan operasi penpaduan yang ditentukan, maka driver harus mengembalikan jumlah pass pada data status yang diperlukan perangkat kerasnya. Jika perangkat keras tidak dapat melakukan operasi penpaduan yang ditentukan, maka driver harus mengembalikan salah satu kode kesalahan berikut di anggota ddrval struktur D3DHAL_VALIDATETEXTURESTAGESTATEDATA di pvtssd:

Kode Kesalahan Makna
D3DERR_CONFLICTINGTEXTUREFILTER Perangkat keras tidak dapat melakukan pemfilteran trilinear dan multitektur secara bersamaan.
D3DERR_TOOMANYOPERATIONS Perangkat keras tidak dapat menangani jumlah operasi yang ditentukan.
D3DERR_UNSUPPORTEDALPHAARG Perangkat keras tidak mendukung argumen alfa yang ditentukan.
D3DERR_UNSUPPORTEDALPHAOPERATION Perangkat keras tidak mendukung operasi alfa yang ditentukan.
D3DERR_UNSUPPORTEDCOLORARG Perangkat keras tidak mendukung argumen warna yang ditentukan.
D3DERR_UNSUPPORTEDCOLOROPERATION Piranti keras tidak mendukung operasi warna yang ditentukan.
D3DERR_UNSUPPORTEDFACTORVALUE Perangkat keras tidak mendukung D3DTA_TFACTOR lebih besar dari 1.0.
D3DERR_WRONGTEXTUREFORMAT Piranti keras tidak mendukung status saat ini dalam format tekstur terpilih.

 

Direct3D memanggil D3dValidateTextureStageState sebagai respons terhadap permintaan aplikasi melalui panggilan ke IDirect3DDevice7::ValidateDevice. Jumlah pass yang dikembalikan oleh driver disebarluaskan kembali ke aplikasi, yang kemudian dapat memutuskan apakah akan dilanjutkan dengan penyajian menggunakan status saat ini atau jika harus mengubah operasi penpaduan untuk dirender lebih cepat atau untuk dirender sama sekali. Tidak ada batasan jumlah pass yang dapat dikembalikan oleh driver.

Driver yang mengembalikan lebih dari satu pass bertanggung jawab untuk mengeksekusi pass dengan benar pada semua data status dan primitif saat penyajian.

Permintaan yang kemungkinan gagal D3dValidateTextureStageState:

  • Menggunakan nilai iterasi yang difus sebagai ARG, atau operasi BLENDDIFFUSE sangat didukung pada perangkat keras saat ini. Banyak bagian hanya dapat memperkenalkan data warna berulang pada tahap operasi tekstur terakhir.

  • Mencoba menentukan tekstur untuk setiap tahap sebagai arg1-nya disukai arg2.

  • Mencoba menggunakan nilai difus atau skalar pada tahap perpaduan multitekstur arbitrer. Untuk banyak kartu, nilai-nilai ini hanya dapat digunakan pada status penpaduan tekstur akhir; untuk orang lain, hanya pada tahap pertama.

  • Mencoba melakukan lebih banyak hal dalam tekstur pertama daripada hanya mereplikasi alfa untuk mewarnai saluran atau mengembalikan input. Untuk banyak kartu, unit campuran yang terkait dengan tekstur pertama tidak mampu menangani operasi lebih kompleks daripada ini. Sampel di bawah ini hanya mencoba menggunakan unit penpaduan tekstur kedua, jika memungkinkan untuk melakukannya. Unit pertama dianggap berada dalam status default dalam sampel.

    dev.SetTextureStageState( n, D3DTSS_COLORARG1, D3DTA_TEXTURE );   *
    dev.SetTextureStageState( n, D3DTSS_COLOROP, D3DTOP_SELECTARG1 ); *
    
  • Melakukan operasi untuk alfa output yang lebih rumit daripada, atau secara substansial berbeda dari, operasi yang ditentukan untuk saluran warna cenderung tidak didukung.

  • Mencoba menggunakan D3DTA_TFACTOR dan D3DTA_DIFFUSE secara bersamaan. Beberapa piranti keras tidak mendukung ini.

  • Mencoba penggunaan simultan dari beberapa tekstur dan pemfilteran trilinear yang dipetakan MIP. Banyak kartu tidak mendukung operasi ini secara bersamaan. Jika pemfilteran trilinear telah diminta untuk tekstur yang terlibat dalam operasi multitekstur dan gagal validasi, nonaktifkan trilinear dan coba lagi. Dalam hal ini, mungkin yang terbaik adalah melakukan penyajian multipass sebagai gantinya.

Persyaratan

Persyaratan Nilai
Target Platform Desktop
Header d3dhal.h (termasuk D3dhal.h)

Lihat juga

D3DHAL_VALIDATETEXTURESTAGESTATEDATA

D3dDrawPrimitives2