Bagikan melalui


Metode IDirect3D9::CheckDeviceFormat (d3d9.h)

Menentukan apakah format permukaan tersedia sebagai jenis sumber daya tertentu dan dapat digunakan sebagai tekstur, buffer stensil kedalaman, atau target render, atau kombinasi apa pun dari ketiganya, pada perangkat yang mewakili adaptor ini.

Sintaks

HRESULT CheckDeviceFormat(
  [in] UINT            Adapter,
  [in] D3DDEVTYPE      DeviceType,
  [in] D3DFORMAT       AdapterFormat,
  [in] DWORD           Usage,
  [in] D3DRESOURCETYPE RType,
  [in] D3DFORMAT       CheckFormat
);

Parameter

[in] Adapter

Jenis: UINT

Nomor ordinal yang menunjukkan adaptor tampilan untuk kueri. D3DADAPTER_DEFAULT selalu merupakan adaptor tampilan utama. Metode ini mengembalikan D3DERR_INVALIDCALL ketika nilai ini sama atau melebihi jumlah adaptor tampilan dalam sistem.

[in] DeviceType

Jenis: D3DDEVTYPE

Anggota jenis enumerasi D3DDEVTYPE , mengidentifikasi jenis perangkat.

[in] AdapterFormat

Jenis: D3DFORMAT

Anggota jenis D3DFORMAT yang dijumlahkan, mengidentifikasi format mode tampilan tempat adaptor akan ditempatkan.

[in] Usage

Jenis: DWORD

Opsi penggunaan yang diminta untuk permukaan. Opsi penggunaan adalah kombinasi konstanta D3DUSAGE dan D3DUSAGE_QUERY (hanya subset konstanta D3DUSAGE yang valid untuk CheckDeviceFormat; lihat tabel di halaman D3DUSAGE).

[in] RType

Jenis: D3DRESOURCETYPE

Jenis sumber daya yang diminta untuk digunakan dengan format yang dikueri. Anggota D3DRESOURCETYPE.

[in] CheckFormat

Jenis: D3DFORMAT

Format permukaan yang dapat digunakan, seperti yang didefinisikan oleh Penggunaan. Anggota D3DFORMAT.

Mengembalikan nilai

Jenis: HRESULT

Jika format kompatibel dengan perangkat yang ditentukan untuk penggunaan yang diminta, metode ini mengembalikan D3D_OK.

D3DERR_INVALIDCALL dikembalikan jika Adapter sama atau melebihi jumlah adaptor tampilan dalam sistem, atau jika DeviceType tidak didukung.

D3DERR_NOTAVAILABLE dikembalikan jika format tidak dapat diterima oleh perangkat untuk penggunaan ini.

Keterangan

Berikut adalah beberapa contoh menggunakan CheckDeviceFormat untuk memeriksa dukungan perangkat keras:

  • Format permukaan biasa di luar layar - Tentukan Penggunaan = 0 dan RType = D3DRTYPE_SURFACE.
  • Format stensil kedalaman - Pengujian cuplikan berikut untuk format stensil kedalaman yang diteruskan:
    
    BOOL IsDepthFormatExisting( D3DFORMAT DepthFormat, D3DFORMAT AdapterFormat ) 
    {
        HRESULT hr = pD3D->CheckDeviceFormat( D3DADAPTER_DEFAULT,
                                              D3DDEVTYPE_HAL,
                                              AdapterFormat,
                                              D3DUSAGE_DEPTHSTENCIL,
                                              D3DRTYPE_SURFACE,
                                              DepthFormat);
        
        return SUCCEEDED( hr );
    }
    

    Lihat Memilih Perangkat (Direct3D 9) untuk detail selengkapnya tentang proses enumerasi.

  • Dapatkah tekstur ini dirender dalam format tertentu - Mengingat mode tampilan saat ini, contoh ini menunjukkan cara memverifikasi bahwa format tekstur kompatibel dengan format back-buffer tertentu:
    
    BOOL IsTextureFormatOk( D3DFORMAT TextureFormat, D3DFORMAT AdapterFormat ) 
    {
        HRESULT hr = pD3D->CheckDeviceFormat( D3DADAPTER_DEFAULT,
                                              D3DDEVTYPE_HAL,
                                              AdapterFormat,
                                              0,
                                              D3DRTYPE_TEXTURE,
                                              TextureFormat);
        
        return SUCCEEDED( hr );
    }
    
  • Penpaduan alfa dalam shader piksel - Atur Penggunaan ke D3DUSAGE_QUERY_POSTPIXELSHADER_BLENDING. Harapkan ini gagal untuk semua target render floating-point.
  • Pembuatan otomatis mipmaps - Atur Penggunaan ke D3DUSAGE_AUTOGENMIPMAP. Jika pembuatan otomatis mipmap gagal, aplikasi akan mendapatkan tekstur non-mipmapped. Memanggil metode ini dianggap sebagai petunjuk, sehingga metode ini dapat mengembalikan D3DOK_NOAUTOGEN (kode keberhasilan yang valid) jika satu-satunya hal yang gagal adalah pembuatan mipmap. Untuk informasi selengkapnya tentang pembuatan mipmap, lihat Pembuatan Otomatis Mipmaps (Direct3D 9).
Saat memigrasikan kode dari Direct3D 9 ke Direct3D 10, Direct3D 10 yang setara dengan CheckDeviceFormat adalah CheckFormatSupport.

Persyaratan

Persyaratan Nilai
Target Platform Windows
Header d3d9.h (termasuk D3D9.h)
Pustaka D3D9.lib

Lihat juga

IDirect3D9