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

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

Гончаров Д., Салихо Т. DirectX 7.0 Для программистов — Спб.: Питер, 2001. — 528 c.
ISBN 5-318-00173-4
Скачать (прямая ссылка): dirext7dlyaprogrammistov2001.djvu
Предыдущая << 1 .. 55 56 57 58 59 60 < 61 > 62 63 64 65 66 67 .. 229 >> Следующая

HWND hWnd
):
Первый параметр этой функции, содержащий флаги, не используется и должен быть установлен в NULL. Вторым параметром следует дескриптор окна, к которому будет присоединен интерфейс отсечения. Если вы осуществляете вывод в несколько окон, нет необходимости создавать для каждого окна свой интерфейс отсечения. Вместо этого каждый раз перед копированием данных на первичную поверхность вызывайте функцию SetHWndO, указав дескриптор необходимого окна.
При необходимости можно узнать, к какому окну был присоединен интерфейс, для чего используется метод IDi rectDrawCl ipper: :GetHWnd().
HRESULT GetHWndC HWND FAR *1pNWnd
):
Этой функции передается указатель на переменную, предназначенную для сохранения дескриптора окна, к которому присоединен йнтерфейс отсечения.
По умолчанию интерфейс отсечения является прямоугольной областью типа RECT. Но иногда необходимо, чтобы область отсечения была не прямоугольной, а ка-кой-либо другой. Для этого предназначен метод IDirectDrawCl ipper::SetCl ipList(), который позволяет создавать список прямоугольных областей типа RGNDATA. Если такие интерфейсы отсечения присоединены к какому-либо окну, изменения его размера автоматически повлекут пропорциональное изменение всего списка интерфейсов отсечения. Ниже следует описание прототипа функции SetCl ipLi st(). HRESULT SetClipList(
LPRGNDATA lpClipList,
DWORD dwFlags
):
Первый параметр является указателем на переменную RGNDATA, в которой хранятся прямоугольные области. Следующий параметр, содержащий флаги, в данный момент не используется и должен быть равным NULL.
Следует заметить, что если интерфейс отсечения уже ассоциирован с каким-либо окном, то использование функции SetCl ipList() исключено. Но при этом остается возможность узнать список прямоугольных областей, описывающих интерфейс отсечения, при помощи функции IDirectDrawCl ipper:: GetCl i pLi st ().
Создание палитры
139
HRESULT GetCli pL1st(
LPRECT IpRect,
LPRGNDATA lpClipList.
LPDWORD lpdwSize
):
Первый параметр указывает на область, информация о которой будет получена. В оконных приложениях это может быть, к примеру, клиентская область окна. Далее следует указатель на переменную типа RGNDATA, в которую будет помещен список прямоугольных областей интерфейса отсечения. Последний параметр — указатель на размер переменной lpClipList. Он будет получен только в том случае, если предыдущий параметр перед вызовом функции был установлен в NULL.
Так как вывод осуществляется на поверхность, к ней необходимо присоединить интерфейс отсечения. Для этого предназначен метод SetClipperO интерфейса IDi rectDrawSurface.
HRESULT SetCl1ррег(
LPDIRECTDRAWCLIPPER lpDDClipper
):
У этой функции только один параметр — указатель на интерфейс отсечения, который будет присоединен к поверхности, присоединяемый к поверхности, для которой вызывается данный метод. Если возникает необходимость отсоединить интерфейс отсечения от поверхности, в параметре этой функции указывают NULL.
После вызова данного метода счетчик интерфейсов отсечения увеличивается на единицу, а при отсоединении уменьшается. Этот счетчик понадобится при уничтожении интерфейса поверхности, который не будет высвобожден, пока программа не уничтожит все присоединенные экземпляры интерфейсов отсечения.
Установка режима кооперации
Для полноэкранных приложений требуется полный контроль над устройством. Это подразумевает под собой эксклюзивный уровень кооперации. Оконные приложения не требуют таких привилегий, так как изменение разрешения экрана или палитры первичной поверхности, а также переключение страниц может повлиять на изображение в окнах других приложений. Поэтому для оконных приложений устанавливается нормальный уровень кооперации.
Так как оконное приложение может иметь несколько окон, при установке нормального уровня кооперации вместо дескриптора окна функции IDirectDraw7:: SetCooperativeLevelO передается NULL. Это указывает на то, что данный уровень кооперации установлен для всех окон, созжением.
Создание палитры
Как только что было сказано, при создании оконных приложений устанавливается нормальный режим кооперации. Это делает невозможным использование палитры для первичных поверхностей. Поэтому для вывода изображений желательно использовать беспалитровые режимы, в которых глубина цвета больше или равна 16 бит.
140
Урок 5 • Создание оконных приложений
Так как изображение может иметь глубину и 8 бит, использование палитры допускается (например, для совместной работы с Direct3D), только в этом случае ее необходимо устанавливать не для первичной поверхности, а для внеэкранной, содержащей данный кадр. Присоединение палитры к внеэкранной поверхности осуществляется так же, как и к первичной.
pOffScreen[i]->SetPalette(pDDPal);
Использование палитры во внеэкранных поверхностях не дает абсолютно никакого эффекта при выводе изображения, так как при его копировании преобразование цветов не выполняется.
Вывод изображения
В полноэкранных приложениях используется интерфейс отсечения, и поэтому метод вывода изображения должен поддерживать операцию отсечения. В DirectDraw для этой цели служит один метод — IDirectDrawSurface7: :Blt(), прототип которого вы можете видеть ниже.
Предыдущая << 1 .. 55 56 57 58 59 60 < 61 > 62 63 64 65 66 67 .. 229 >> Следующая
Книги
Web-программирован-
ие
Аппаратное обеспечение Графика Руководство по П.О. Самоучитель Теория программирования Фотошоп Языки программирования
Новые книги
Вирт Н. "Систематическое программирование " (Теория программирования)

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

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

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

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