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 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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk