Оверлей являє собою апаратну функцію відеокарти, яка дає можливість накладання зображення на основний екран (первинну поверхню) без копіювання відеопам’яті. Накладення виконують у цифроаналогових перетворювачах відеокарт (RAMDAC) в процесі створення відправляються на монітор відеосигналів. RAMDAC в ході процесу сканує первинні поверхні порядково і перемикається на зображення-оверлей, коли доходить до нього.
Вам знадобиться
-Набор спецефектів з бібліотек.
Інструкція
- Для включення Overlay необхідно розглянути написання виводить якісь спецефекти на поверхню робочого столу програми, або на місця довільних кольорів (якщо порахувати основним режимом режим малювання на поверхні робочого столу).
- Виберіть спецефект. Відносно вибору спецефектів особливо утруднятися не варто — їх можна просто запозичити в прикладах до бібліотек FastLIB, наприклад — алгоритми малювання вогняної кулі. Після цього необхідно додати до ефекту нескладну систему частинок, і назвати отриманий результат так, як це буде зручно. Ініціалізує DirectDraw. Ініціалізувати має сенс тільки первинні поверхні.
- Перевірте можливість виведення оверлея і його створення. Для цього використовуйте функцію GetOverlayCaps. У GetOverlayCaps нічого складного і цікавого немає — він є перенесення з DDCaps кожного пов’язаного з оверлеїв біта або значення в більш структуру з більшою компактністю — TOverlayCaps. Далі слід виправити розміри оверлея для того, щоб вони відповідали отриманим в ході використання функції параметрам. У реальності ймовірність успішного виконання подібного коду вкрай незначна, тому особливо акцентувати на ньому увагу не варто — зокрема, його розмір не слід обмежувати щоб уникнути сповільненій роботи, не обов’язково перевіряти розміри в байтах на можливість проникнути у вміст відеопам’яті і так далі.
- В цілому, перевірку варто проводити більше для отримання звіту, оскільки сам процес створення оверлея робиться методом повного перебору. Справа в тому, що не існує і не створено жодних функцій на зразок EnumOverlayFormats, тому користувач повинен перевірити будь вообразімие формат і сподіватися, що йому пощастить. Існує, правда, функція IDirectDraw7GetFourCCCodes, яка призначена для визначення коду не-RGB формату (FourCC), але вона включає не тільки необхідні YUV, а й формат стислій текстури, та інші. Використовувати весь список і визначати кожен формат як YUV або не YUV представляється нераціональним.
- Приберіть зображення з робочого столу, якщо таке присутнє, і надайте йому кольору DCK. Увімкніть оверлей з кольором DCK. Оверлей буде включений і готовий до роботи. Візуальні ефекти його використання можна буде оцінити після згортання всіх робочих вікон.
Зверніть увагу
При виході їх програми необхідно оновити вміст на робочому столі.