Metode IDirectDrawSurface7::Flip (ddraw.h)

Membuat memori permukaan yang terkait dengan permukaan DDSCAPS_BACKBUFFER menjadi terkait dengan permukaan buffer depan.

Sintaks

HRESULT Flip(
  [in] LPDIRECTDRAWSURFACE7 unnamedParam1,
  [in] DWORD                unnamedParam2
);

Parameter

[in] unnamedParam1

Penunjuk ke antarmuka IDirectDrawSurface7 untuk permukaan arbitrer dalam rantai membalik. Default untuk parameter ini adalah NULL, dalam hal ini DirectDraw berputar melalui buffer dalam urutan yang melekat satu sama lain. Jika parameter ini bukan NULL, DirectDraw membalik ke permukaan yang ditentukan, alih-alih permukaan berikutnya dalam rantai membalik. Balik gagal jika permukaan yang ditentukan bukan anggota rantai pembalik.

[in] unnamedParam2

Kombinasi bendera yang menentukan opsi balik. Bendera berikut didefinisikan:

DDFLIP_DONOTWAIT

Pada antarmuka IDirectDrawSurface7 , defaultnya adalah DDFLIP_WAIT. Jika Anda ingin mengganti default dan menggunakan waktu saat akselerator sibuk (sebagaimana ditandai dengan nilai pengembalian DDERR_WASSTILLDRAWING), gunakan DDFLIP_DONOTWAIT.

DDFLIP_EVEN

Untuk digunakan hanya saat menampilkan video di permukaan overlay. Permukaan baru berisi data dari bidang bahkan sinyal video. Bendera ini tidak dapat digunakan dengan bendera DDFLIP_ODD.

DDFLIP_STEREO

DirectDraw membalik dan menampilkan permukaan stereo utama. Ketika bendera ini diatur, autoflipping stereo diaktifkan. Perangkat keras secara otomatis membalik antara buffer kiri dan kanan selama setiap refresh layar.

DDFLIP_INTERVAL2

DDFLIP_INTERVAL3

DDFLIP_INTERVAL4

Bendera DDFLIP_INTERVAL2, DDFLIP_INTERVAL3, dan DDFLIP_INTERVAL4 menunjukkan berapa banyak jejak vertikal untuk menunggu di antara setiap balik. Defaultnya adalah 1. DirectDraw mengembalikan DERR_WASSTILLDRAWING untuk setiap permukaan yang terlibat dalam flip hingga jumlah pelacakan ulang vertikal yang ditentukan telah terjadi. Jika DDFLIP_INTERVAL2 diatur, DirectDraw akan membalik setiap sinkronisasi vertikal kedua; jika DDFLIP_INTERVAL3, pada setiap sinkronisasi ketiga; dan jika DDFLIP_INTERVAL4, pada setiap sinkronisasi keempat.

Bendera ini hanya efektif jika DDCAPS2_FLIPINTERVAL bit diatur dalam anggota dwCaps2 dari struktur DDCAPS yang dikembalikan untuk perangkat keras tampilan.

DDFLIP_NOVSYNC

Menyebabkan DirectDraw melakukan flip fisik sedekat mungkin dengan garis pemindaian berikutnya. Operasi berikutnya yang melibatkan dua permukaan yang dibalik tidak memeriksa apakah flip fisik telah selesai—yaitu, mereka tidak mengembalikan DDERR_WASSTILLDRAWING karena alasan itu (tetapi mungkin karena alasan lain). Ini memungkinkan aplikasi untuk melakukan flip pada frekuensi yang lebih tinggi daripada kecepatan refresh monitor, tetapi mungkin memperkenalkan artefak yang terlihat.

Jika DDCAPS2_FLIPNOVSYNC tidak diatur dalam anggota dwCaps2 dari struktur DDCAPS yang dikembalikan untuk perangkat keras tampilan, DDFLIP_NOVSYNC tidak berpengaruh.

DDFLIP_ODD

Untuk digunakan hanya saat menampilkan video di permukaan overlay. Permukaan baru berisi data dari bidang ganjil dari sinyal video. Bendera ini tidak dapat digunakan dengan bendera DDFLIP_EVEN.

DDFLIP_WAIT

Biasanya, jika flip tidak dapat disiapkan karena status perangkat keras tampilan tidak sesuai, kesalahan DDERR_WASSTILLDRAWING segera kembali, dan tidak ada flip yang terjadi. Mengatur bendera ini menyebabkan Flip terus mencoba membalik jika menerima kesalahan DDERR_WASSTILLDRAWING dari lapisan abstraksi perangkat keras (HAL). Balik tidak kembali sampai operasi membalik berhasil disiapkan atau kesalahan lain, seperti DDERR_SURFACEBUSY, dikembalikan.

Menampilkan nilai

Jika metode berhasil, nilai yang dikembalikan adalah DD_OK.

Jika gagal, metode dapat mengembalikan salah satu nilai kesalahan berikut:

  • DDERR_GENERIC
  • DDERR_INVALIDOBJECT
  • DDERR_INVALIDPARAMS
  • DDERR_NOFLIPHW
  • DDERR_NOTFLIPPABLE
  • DDERR_SURFACEBUSY
  • DDERR_SURFACELOST
  • DDERR_UNSUPPORTED
  • DDERR_WASSTILLDRAWING

Keterangan

Dengan IDirectDrawSurface7, perilaku default Flip adalah menunggu akselerator selesai. Oleh karena itu, dalam kondisi default, Balikkan tidak pernah mengembalikan DDERR_WASSTILLDRAWING. Jika Anda ingin melihat kode kesalahan dan tidak menunggu hingga operasi balik berhasil, gunakan bendera DDFLIP_DONOTWAIT.

Balik hanya dapat dipanggil untuk permukaan yang memiliki kemampuan DDSCAPS_FLIP dan DDSCAPS_FRONTBUFFER. Memori tampilan yang sebelumnya terkait dengan buffer depan dikaitkan dengan buffer belakang.

Parameter lpDDSurfaceTargetOverride digunakan dalam kasus yang jarang terjadi di mana buffer belakang bukan buffer yang seharusnya menjadi buffer depan. Biasanya, parameter ini adalah NULL.

Balik selalu disinkronkan dengan kosong vertikal. Jika permukaan telah ditetapkan ke port video, metode ini memperbarui permukaan overlay yang terlihat dan permukaan target port video.

Persyaratan

Persyaratan Nilai
Target Platform Windows
Header ddraw.h
Pustaka Ddraw.lib
DLL Ddraw.dll

Lihat juga

IDirectDrawSurface7