Overlay adalah fungsi perkakasan kad video yang memungkinkan untuk melapisi gambar di skrin utama (permukaan utama) tanpa menyalin memori video. Overlay dilakukan dalam kad video digital ke analog converter (RAMDAC) dalam proses membuat isyarat video yang dihantar ke monitor. RAMDAC mengimbas permukaan utama baris demi baris semasa proses dan beralih ke gambar overlay ketika datang.
Perlu
Set kesan khas dari perpustakaan
Arahan
Langkah 1
Untuk mengaktifkan Overlay, perlu mempertimbangkan untuk menulis program yang memaparkan beberapa kesan khas pada permukaan desktop, atau di tempat warna sewenang-wenangnya (jika kita menganggap mod menggambar di desktop sebagai mod utama).
Langkah 2
Pilih kesan khas. Mengenai pilihan kesan khas, anda tidak semestinya sukar - mereka hanya boleh dipinjam dari contoh ke perpustakaan FastLIB, misalnya, algoritma untuk melukis bola api. Selepas itu, anda perlu menambahkan sistem zarah mudah, dan namakan hasilnya kerana senang. Memulakan DirectDraw. Hanya permukaan utama yang masuk akal untuk memulakan.
Langkah 3
Periksa kemampuan untuk menampilkan overlay dan membuatnya. Untuk melakukan ini, gunakan fungsi GetOverlayCaps. Tidak ada yang rumit dan menarik dalam GetOverlayCaps - ia adalah pemindahan dari DDCaps setiap bit atau nilai yang berkaitan dengan lapisan ke dalam struktur yang lebih padat - TOverlayCaps. Seterusnya, anda harus memperbetulkan ukuran hamparan sehingga sesuai dengan parameter yang diperoleh semasa penggunaan fungsi. Pada hakikatnya, kemungkinan pelaksanaan kod sedemikian berjaya adalah sangat tidak penting, jadi anda tidak harus terlalu memfokuskannya - khususnya, ukurannya tidak boleh dibatasi untuk mengelakkan kerja lambat, tidak perlu memeriksa ukuran dalam bait untuk kemungkinan menembusi kandungan memori video, dan sebagainya.
Langkah 4
Secara umum, perlu diperiksa lebih banyak untuk mendapatkan laporan, kerana proses membuat overlay dilakukan dengan kaedah brute-force. Intinya adalah bahawa tidak ada fungsi seperti EnumOverlayFormats yang wujud dan belum dibuat, jadi pengguna harus memeriksa format yang dapat dibayangkan dan berharap dapat beruntung. Terdapat, bagaimanapun, fungsi IDirectDraw7GetFourCCCodes, yang dirancang untuk menentukan kod format bukan RGB (FourCC), tetapi merangkumi bukan hanya YUV yang diperlukan, tetapi juga format tekstur termampat, dan lain-lain. Untuk menggunakan keseluruhan senarai dan menentukan setiap format kerana YUV atau bukan YUV nampaknya tidak masuk akal.
Langkah 5
Keluarkan gambar dari desktop, jika ada, dan tetapkan warna DCK padanya. Dayakan tindanan warna DCK. Hamparan akan dihidupkan dan siap digunakan. Kesan visual penggunaannya dapat dinilai setelah meminimumkan semua tingkap yang berfungsi.