Компьютерные книги
Главное меню
Главная Поиск по сайту Добавить материал О нас Карта книг Карта сайта
Реклама
computersbooks.net -> Добавить материал -> Графика -> Гончаров Д. -> "DirectX 7.0 Для программистов" -> 51

DirectX 7.0 Для программистов - Гончаров Д.

Гончаров Д., Салихо Т. DirectX 7.0 Для программистов — Спб.: Питер, 2001. — 528 c.
ISBN 5-318-00173-4
Скачать (прямая ссылка): dirext7dlyaprogrammistov2001.djvu
Предыдущая << 1 .. 45 46 47 48 49 50 < 51 > 52 53 54 55 56 57 .. 229 >> Следующая

Использование палитры позволяет сократить объемы копируемых данных, оставляя возможность использования всего цветового диапазона. Правда, вам нужно заботиться о том, чтобы палитра поверхности совпадала с палитрой, которая является источником графических данных.
112
Урок 4 • Основы использования DirectDraw
Для создания палитры предназначен метод CreatePaletteO, принадлежащий интерфейсу IDirectDraw7.
HRESULT CreatePalette (DWORD dwFlags;
LPPALETTEENTRY lpDDColorArray;
LPDIRECTDRAWPALETTE FAR *lplpDDPalette;
IUnknown FAR *pUnkOuter
);
Первый параметр метода указывает на тип создаваемой палитры. Все возможные флаги приведены в табл. 4.3, но если у вас нет особого желания в ней разбираться, используйте один из двух флагов: DDPCAPS8BIT, указывающий на применение 8-битной палитры, и DDPCAPS ALL0W256, разрешающий использовать всю палитру, включая 16 зарезервированных системой цветов.
Второй параметр является указателем на массив элементов, из которого будет создана палитра DirectDraw. Количество элементов массива зависит от типа используемой палитры.
Третьим параметром следует указатель на создаваемый данным методом интерфейс IDirectDrawPalette, который будет отвечать за управление палитрой.
Последний параметр метода CreatePaletteO не используется и предназначен для будущих версий DirectDraw.
Таблица 4.3. Флаги, используемые методом CreatePaletteO
Флаг Описание
DDPCAPS1BIT Используются 1-битные поверхности с 2 элементами в палитре
DDPCAPS2BIT Используются 2-битные поверхности с 4 элементами в палитре
DDPCAPS4BIT Используются 4-битные поверхности с 16 элементами в палитре
DDPCAPS8BIT Используются 8-битные поверхности с 256 элементами в палитре
DDPCAPS8BITENTRIES Используется только совместно с флагами DDCAPS1BIT, DDCAPS 2BIT и DDCAPS 4BIT. Необходим для копирования данных с 1-, 2- и 4-битных поверхностей на 8-битные
DDPCAPSALPHA Поле peFlags структуры PALETTEENTRY используется как аль-фа-данные. Палитра, созданная с таким флагом, может быть присоединена только к текстуре
DDPCAPSALL0W256 При изменении палитры доступны все цвета, включая 16 цветов, резервируемых Windows
DDPCAPSINITIALIZE Абсолютный флаг. Указывает на то, что при инициализации используется палитра, адрес которой указан в параметре lpDDColorArray
DDPCAPSPRIMARYSURFACE Палитра присоединяется к первичной поверхности, и ее изменение производится немедленно, вне зависимости от флага DDPSETPAL_VSYNC
DDPCAPS_PRIMARYSURFACELE FT То же, что и предыдущий флаг, только для левосторонней поверхности
DDPCAPSVSYNC Изменение палитры происходит во время обратного хода луча
Для присоединения палитры к конкретной поверхности используют метод IDirectDraw7:; SetPal ette(), в параметре которого передается указатель на интерфейс IDirectDrawPalette, содержащий необходимую палитру.
Вывод изображения на экран
113
Вывод изображения на экран
Основное предназначение библиотеки DirectDraw — вывод изображения на экран. Обычно графические данные перед использованием копируются из файлов на внеэкранные, а затем переносятся на первичные или вторичные поверхности. Если вывод графики осуществлять на первичную поверхность, этот процесс будет весьма заметен — экран начнет «мигать». Для устранения такого эффекта обычно пользуются вторичным буфером. Именно на него копируется изображение, а затем первичная поверхность и вторичный буфер меняются местами, что происходит мгновенно и незаметно для глаза.
Для копирования данных с внеэкранной поверхности на вторичный буфер используется метод IDirectDrawSurface: :BltFast(). Данный метод производит максимально быстрый перенос данных, поскольку в отличие от других функций не использует некоторые эффекты копирования, такие как зеркальное отображение, поворот, масштабирование. Вот его описание:
HRESULT BltFastC DWORD dwX.
DWORD dwY,
LPDIRECTDRAWSURFACE7 1pDDSrcSurface.
LPRECT IpSrcRect,
DWORD dwTrans
):
Первые два параметра данного метода задают координаты на поверхности, куда будет произведен вывод изображения. За нулевые координаты принимается верхний левый угол. Следующий параметр — адрес поверхности, являющейся источником графических данных. Затем следует адрес переменной типа RECT, которая определяет прямоугольную область на поверхности-источнике, данные с которой будут взяты для копирования. Если этот параметр равен NULL, используется вся поверхность. Последний параметр — флаги, указывающие режим копирования данных. Мы используем два из них — DDBLTFASTSRCCOLORKEY и DDBLTFASTWAIT. Первый означает, что будет использоваться «цветовой ключ» поверхности-источника данных, а второй — то, что метод при неудачном копировании будет предпринимать повторные попытки, пока они не увенчаются успехом. Если вам вдруг понадобятся другие значения флагов, все они указаны в табл. 4.4.
Таблица 4.4. Флаги, используемые методом BltFastQ
Флаг Описание
DDBLTFASTDESTCOLORKEY Используется «прозрачный» цвет, указанный в поверхности-приемнике данных
DDBLTFASTNOCOLORKEY Нормальное копирование без использования «прозрачных» цветов
DDBLTFASTSRCCOLORKEY Используется «прозрачный» цвет, указанный в поверхности-источнике данных
Предыдущая << 1 .. 45 46 47 48 49 50 < 51 > 52 53 54 55 56 57 .. 229 >> Следующая
Книги
Web-программирован-
ие
Аппаратное обеспечение Графика Руководство по П.О. Самоучитель Теория программирования Фотошоп Языки программирования
Новые книги
Вирт Н. "Систематическое программирование " (Теория программирования)

Эком "Microsoft Excel 2000 шаг за шагом Русская версия самоучитель " (Самоучитель)

Поляков А.Ю. "Методы и алгоритмы компьютерной графики в примерах Vizual C++" (Графика)

Баяковский Ю.М. "Графическая библиотека Open GL " (Графика)

Валиков А. "Технология " (Языки программирования)
Авторские права © 2013 ComputersBooks. Все права защищены.