Как включить Overlay?
3 ноября 2014 г. Просмотров: 1195
Оверлей представляет собой аппаратную функцию видеокарты, которая дает возможность наложения изображения на основной экран (первичную поверхность) без копирования видеопамяти. Наложение выполняют в цифроаналоговых преобразователях видеокарт (RAMDAC) в процессе создания отправляемых на монитор видеосигналов. RAMDAC в ходе процесса сканирует первичные поверхности построчно и переключается на изображение-оверлей, когда доходит до него. Для включения Overlay необходимо рассмотреть написание выводящей некие спецэффекты на поверхность рабочего стола программы, либо на места произвольных цветов (если посчитать основным режимом режим рисования на поверхности рабочего стола). Выберите спецэффект. Касательно выбора спецэффектов особенно затрудняться не стоит — их можно просто позаимствовать в примерах к библиотекам FastLIB, к примеру — алгоритмы рисования огненного шара. После этого необходимо добавить к эффекту несложную систему частиц, и назвать полученный результат так, как это будет удобно. Инициализируйте DirectDraw. Инициализировать имеет смысл только первичные поверхности. Проверьте возможность вывода оверлея и его создания. Для этого используйте функцию GetOverlayCaps. В GetOverlayCaps ничего сложного и интересного нет — он представляет собой перенос из DDCaps каждого связанного с оверлеев бита или значения в более структуру с большей компактностью — TOverlayCaps. Далее следует исправить размеры оверлея для того, чтобы они соответствовали полученным в ходе использования функции параметрам. В реальности вероятность успешного выполнения подобного кода крайне незначительна, поэтому особенно акцентировать на нем внимание не стоит — в частности, его размер не следует ограничивать во избежание замедленной работы, не обязательно проверять размеры в байтах на возможность проникнуть в содержимое видеопамяти и так далее. В целом, проверку стоит проводить более для получения отчета, поскольку сам процесс создания оверлея делается методом полного перебора. Дело в том, что не существует и не создано никаких функций наподобие EnumOverlayFormats, поэтому пользователь должен проверить любой вообразимый формат и надеяться, что ему повезет. Существует, правда, функция IDirectDraw7GetFourCCCodes, которая предназначена для определения кода не-RGB формата (FourCC), но она включает не только необходимые YUV, но и формат сжатой текстуры, и прочие. Использовать весь список и определять каждый формат как YUV или не YUV представляется нерациональным. Уберите изображение с рабочего стола, если таковое присутствует, и присвойте ему цвета DCK. Включите оверлей с цветом DCK. Оверлей будет включен и готов к работе. Визуальные эффекты его использования можно будет оценить после сворачивания всех рабочих окон.
Оцените статью!
Вам понадобится
- -Набор спецэффектов из библиотек.