PFND3DDDI_PRESENT fungsi panggilan balik (d3dumddi.h)

Fungsi Sajikan memberi tahu driver tampilan mode pengguna bahwa aplikasi selesai dirender dan meminta agar driver menampilkan permukaan sumber dengan menyalin atau membalik atau bahwa driver melakukan operasi pengisian warna.

Sintaks

PFND3DDDI_PRESENT Pfnd3dddiPresent;

HRESULT Pfnd3dddiPresent(
  HANDLE hDevice,
  const D3DDDIARG_PRESENT *unnamedParam2
)
{...}

Parameter

hDevice

Handel ke perangkat tampilan (konteks grafis).

unnamedParam2

pData [in]

Penunjuk ke struktur D3DDDIARG_PRESENT yang menjelaskan sumber daya yang akan ditampilkan.

Menampilkan nilai

Sajikan mengembalikan salah satu nilai berikut:

Menampilkan kode Deskripsi
S_OK Sumber daya berhasil ditampilkan.
E_OUTOFMEMORY Ada tidak dapat mengalokasikan memori yang diperlukan untuk menyelesaikannya.

Keterangan

Runtime Microsoft Direct3D memanggil fungsi Present driver tampilan mode pengguna untuk memberi tahu driver tampilan mode pengguna bahwa aplikasi selesai dirender dan untuk meminta driver menampilkan permukaan sumber atau driver melakukan operasi pengisian warna. Jika anggota hSrcResource dari struktur D3DDDIARG_PRESENT yang dituju parameter pData adalah non-NULL, Ada permintaan agar driver tampilan mode pengguna menampilkan konten baru ke layar; jika hSrcResource adalah NULL, Sajikan permintaan agar driver tampilan mode pengguna melakukan operasi pengisian warna ke layar.

Jika anggota hDstResource dari struktur D3DDDIARG_PRESENTadalah NULL, permukaan tujuan tidak diketahui. Selain itu, permukaan tujuan dan daftar persegi panjang kliping ditentukan dalam mode kernel sebelum mengirim aliran perintah perangkat keras melalui DMA ke prosesor grafis.

Akibatnya, driver tampilan mode pengguna tidak dapat menghasilkan instruksi perangkat keras untuk melakukan operasi saat ini. Instruksi perangkat keras ini harus dihasilkan oleh driver miniport tampilan. Namun, ketika anggota hSrcResource dari D3DDDIARG_PRESENT non-NULL, driver tampilan mode pengguna harus memperoleh handel alokasi ke permukaan sumber dan menyisipkan handel ini di anggota hSrcAllocation dari struktur D3DDDICB_PRESENT dalam panggilan ke fungsi pfnPresentCb . Driver miniport tampilan kemudian dapat berhasil menghasilkan instruksi perangkat keras. Driver tampilan mode pengguna biasanya memperoleh handel alokasi dari informasi sumber daya dalam struktur D3DDDIARG_PRESENT .

Jika anggota hDstResource dari D3DDDIARG_PRESENT non-NULL, permukaan tujuan untuk saat ini diketahui dan driver tampilan mode pengguna harus mengisi anggota hDstAllocationD3DDDICB_PRESENT dengan handel alokasi yang sesuai.

Jika driver tampilan mode pengguna mengekspos versi DDI kurang dari 0x0000000C (driver mengembalikan nilai ini di anggota DriverVersion dari struktur D3D10DDIARG_OPENADAPTER dalam panggilan ke fungsi OpenAdapter driver), runtime Direct3D pertama-tama memanggil fungsi Flush driver tampilan mode pengguna untuk mengirimkan perintah perangkat keras yang luar biasa di buffer perintah sebelum runtime memanggil fungsi Present driver tampilan mode pengguna. Dengan cara ini, fungsi Present driver tampilan mode pengguna diserialisasikan dengan operasi render (yaitu, panggilan ke fungsi pfnRenderCb ). Jika driver tampilan mode pengguna mengekspos versi DDI 0x0000000C atau lebih besar dan aplikasi panggilan berjalan dalam mode berjendela, runtime juga memanggil Flush sebelum memanggil Ada. Jika driver tampilan mode pengguna mengekspos versi DDI 0x0000000C atau lebih besar dan aplikasi panggilan berjalan dalam mode layar penuh, runtime tidak akan memanggil Flush sebelum memanggil Ada. Perilaku ini memungkinkan driver yang mengimplementasikan utas mereka sendiri untuk mengantre panggilan yang ada. Driver yang mengekspos versi DDI 0x0000000C atau lebih besar harus memanggil pfnRenderCb untuk secara internal membersihkan buffer perintah yang luar biasa sebelum driver memanggil fungsi pfnPresentCb .

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

D3DDDIARG_PRESENT

D3DDDI_DEVICEFUNCS

DxgkDdiPresent

DxgkDdiRender

Flush

pfnRenderCb