PFND3DDDI_SETDISPLAYMODECB fungsi panggilan balik (d3dumddi.h)

Fungsi pfnSetDisplayModeCb mengatur alokasi yang digunakan untuk memindai ke tampilan.

Sintaks

PFND3DDDI_SETDISPLAYMODECB Pfnd3dddiSetdisplaymodecb;

HRESULT Pfnd3dddiSetdisplaymodecb(
  HANDLE hDevice,
  D3DDDICB_SETDISPLAYMODE *unnamedParam2
)
{...}

Parameter

hDevice

Handel ke perangkat tampilan (konteks grafis).

unnamedParam2

pData [masuk, keluar]

Penunjuk ke struktur D3DDDICB_SETDISPLAYMODE yang menjelaskan alokasi yang digunakan untuk memindai.

Nilai kembali

pfnSetDisplayModeCb mengembalikan salah satu nilai berikut:

Menampilkan kode Deskripsi
S_OK Mode tampilan berhasil disetel.
E_INVALIDARG Parameter divalidasi dan ditentukan salah.
D3DDDIERR_INCOMPATIBLEPRIVATEFORMAT Driver tampilan mode pengguna harus mengonversi format permukaan yang terkait dengan alokasi yang ditentukan anggota hPrimaryAllocation D3DDDICB_SETDISPLAYMODE ke dalam atribut format yang ditentukan oleh PrivateDriverFormatAttributemember dari D3DDDICB_SETDISPLAYMODE. Driver kemudian harus memanggil pfnSetDisplayModeCb lagi. Driver dapat mengalokasikan alokasi baru, melakukan transfer bit-block konversi (bitblt) dari permukaan utama lama ke yang baru, dan kemudian menghancurkan primer lama selama driver menggunakan handel alokasi baru untuk alokasi ini untuk semua operasi berikutnya. Driver harus mengulangi proses ini sampai pfnSetDisplayModeCb mengembalikan nilai pengembalian yang berbeda.

Fungsi ini mungkin juga mengembalikan nilai HRESULT lainnya.

Keterangan

Setelah runtime Microsoft Direct3D memanggil fungsi SetDisplayMode atau SetDisplayModeDXGI driver mode pengguna untuk mengatur permukaan utama yang akan dipindai ke layar, driver tampilan mode pengguna memanggil fungsi pfnSetDisplayModeCb untuk mengatur alokasi utama yang mendasarinya yang digunakan untuk pemindaian.

Catatan Sebelum driver tampilan mode pengguna memanggil pfnSetDisplayModeCb untuk mengatur mode tampilan baru yang menggunakan format yang diperluas, metode pengambilan sampel ganda, atau keduanya, driver harus memastikan bahwa mode tampilan GDI saat ini memiliki resolusi yang sama dengan mode tampilan baru; jika tidak, pfnSetDisplayModeCb mengembalikan E_INVALIDARG.
 

Catatan Direct3D Versi 11: Untuk informasi selengkapnya tentang cara driver memanggil pfnSetDisplayModeCb, lihat Perubahan dari Direct3D 10.

Contoh

Contoh kode berikut menunjukkan cara mengatur alokasi untuk memindai ke tampilan.

HRESULT CD3DContext::SetDisplayMode(CONST D3DDDIARG_SETDISPLAYMODE* pSetDisplayMode) {
    DWORD   dwSrcSurf = ((DWORD)(DWORD_PTR)pSetDisplayMode->hResource) + pSetDisplayMode->SubResourceIndex;
    HRESULT hr;
    // Timestamp the source surface
    m_RTbl[dwSrcSurf].m_qwBatch = m_qwBatch;
    // Send the presentation request to the display miniport driver
    D3DDDICB_SETDISPLAYMODE SetDisplayModeCBData = {0};

    SetDisplayModeCBData.hPrimaryAllocation = R200GetSurfaceAllocHandle(m_pR200Ctx,
                                        dwSrcSurf);

    hr = m_d3dCallbacks.pfnSetDisplayModeCb(m_hD3D, &SetDisplayModeCBData);

    return (hr);
}

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

D3DDDICB_SETDISPLAYMODE

D3DDDI_DEVICECALLBACKS

SetDisplayMode

SetDisplayModeDXGI