Η επικάλυψη είναι μια λειτουργία υλικού μιας κάρτας βίντεο που καθιστά δυνατή την επικάλυψη μιας εικόνας στην κύρια οθόνη (κύρια επιφάνεια) χωρίς αντιγραφή της μνήμης βίντεο. Η επικάλυψη πραγματοποιείται σε μετατροπείς ψηφιακών σε αναλογικών καρτών βίντεο (RAMDAC) κατά τη διαδικασία δημιουργίας σημάτων βίντεο που αποστέλλονται στην οθόνη. Το RAMDAC σαρώνει τις κύριες επιφάνειες κάθε γραμμή κατά τη διάρκεια της διαδικασίας και μεταβαίνει σε μια εικόνα επικάλυψης όταν πρόκειται για αυτήν.
Απαραίτητη
Σετ ειδικών εφέ από βιβλιοθήκες
Οδηγίες
Βήμα 1
Για να ενεργοποιήσετε την Επικάλυψη, είναι απαραίτητο να εξετάσετε το ενδεχόμενο σύνταξης ενός προγράμματος που εμφανίζει κάποια ειδικά εφέ στην επιφάνεια της επιφάνειας εργασίας ή σε μέρη αυθαίρετων χρωμάτων (αν θεωρήσουμε τη λειτουργία σχεδίασης στην επιφάνεια εργασίας ως κύρια λειτουργία)
Βήμα 2
Επιλέξτε ένα ειδικό εφέ. Όσον αφορά την επιλογή ειδικών εφέ, δεν πρέπει να είστε ιδιαίτερα δύσκολοι - μπορούν απλώς να δανειστούν από παραδείγματα στις βιβλιοθήκες FastLIB, για παράδειγμα, τους αλγόριθμους για τη σχεδίαση μιας βολίδας. Μετά από αυτό, πρέπει να προσθέσετε ένα απλό σύστημα σωματιδίων στο αποτέλεσμα, και να ονομάσετε το αποτέλεσμα, καθώς θα είναι βολικό. Αρχικοποιήστε το DirectDraw. Μόνο οι πρωτεύουσες επιφάνειες έχουν νόημα για την προετοιμασία.
Βήμα 3
Ελέγξτε τη δυνατότητα εμφάνισης της επικάλυψης και δημιουργίας της. Για να το κάνετε αυτό, χρησιμοποιήστε τη συνάρτηση GetOverlayCaps. Δεν υπάρχει τίποτα περίπλοκο και ενδιαφέρον στο GetOverlayCaps - είναι μια μεταφορά από DDCaps κάθε bit ή τιμής που σχετίζεται με επικαλύψεις σε μια πιο συμπαγή δομή - TOverlayCaps. Στη συνέχεια, θα πρέπει να διορθώσετε το μέγεθος της επικάλυψης έτσι ώστε να αντιστοιχούν στις παραμέτρους που λαμβάνονται κατά τη χρήση της συνάρτησης. Στην πραγματικότητα, η πιθανότητα επιτυχούς εκτέλεσης τέτοιου κώδικα είναι εξαιρετικά ασήμαντη, οπότε δεν πρέπει να εστιάζετε ιδιαίτερα σε αυτόν - συγκεκριμένα, το μέγεθός του δεν πρέπει να περιορίζεται για να αποφευχθεί η αργή εργασία, δεν είναι απαραίτητο να ελέγξετε το μέγεθος σε byte για τη δυνατότητα διείσδυσης στα περιεχόμενα της μνήμης βίντεο και ούτω καθεξής.
Βήμα 4
Σε γενικές γραμμές, αξίζει να ελέγξετε περισσότερα για να λάβετε μια αναφορά, καθώς η ίδια η διαδικασία δημιουργίας μιας επικάλυψης γίνεται με μια μέθοδο brute-force. Το θέμα είναι ότι δεν υπάρχουν λειτουργίες όπως το EnumOverlayFormats και δεν έχουν δημιουργηθεί, οπότε ο χρήστης πρέπει να ελέγξει οποιαδήποτε μορφή που μπορεί να φανταστεί κανείς και να ελπίζει να είναι τυχερός. Υπάρχει, ωστόσο, μια συνάρτηση IDirectDraw7GetFourCCCodes, η οποία έχει σχεδιαστεί για να προσδιορίσει τον κωδικό μορφής χωρίς RGB (FourCC), αλλά περιλαμβάνει όχι μόνο το απαραίτητο YUV, αλλά και τη συμπιεσμένη μορφή υφής, και άλλα. Για να χρησιμοποιήσετε ολόκληρη τη λίστα και να ορίσετε κάθε μορφή ως YUV ή μη YUV φαίνεται παράλογο.
Βήμα 5
Αφαιρέστε την εικόνα από την επιφάνεια εργασίας, εάν υπάρχει, και εκχωρήστε τα χρώματα DCK σε αυτήν. Ενεργοποίηση επικάλυψης χρώματος DCK. Η επικάλυψη θα είναι ενεργοποιημένη και έτοιμη για χρήση. Τα οπτικά εφέ της χρήσης του μπορούν να εκτιμηθούν μετά την ελαχιστοποίηση όλων των παραθύρων εργασίας.