Можно включить в библиотеку версии процедур для всех основных типов адаптеров. Это обеспечит некоторую степень машинной независимости. Однако нельзя исключать случай наличия у пользователя программы какого-либо типа адаптера, не поддерживаемого библиотекой (например, SVGA). Но самым существенным недостатком такого подхода является слишком большой размер полученнего выполняемого файла, что уменьшает объем оперативной памяти, доступной пользователю.

Наиболее распространенным является использование драйверов устройств. Выделяется некоторый основной набор графических операций, так, что все остальные операции можно реализовать, используя только операции основного набора. Привязка к видеоадаптеру заключается именно в реализации этих основных (базисных) операций. Для каждого адаптера пишется так называемый драйвер - небольшая программа со стандартным интерфейсом, реализующая все эти операции для данного адаптера и помещаемая в отдельный, файл. Библиотека в начале своей работы определяет тип имеющегося видеоадаптера и загружает соответствующий драйвер в память. Таким образом достигается почти полная машинная независимость написанных программ.

Рассмотрим работу одной из наиболее популярных графических библиотек -библиотеки компилятора Borland С++.

Для использования этой библиотеки необходимо сначала подключить ее при помощи команды меню Options/Linker/Libraries.

Опишем основные группы операций.

3.1. Инициализация и завершение работы с библиотекой Для инициализации библиотеки служит функция

void far initgraph (int far *driver, int far *mode, char far *path);

Первый параметр задает библиотеке тип адаптера, с которым будет вестись работа. В соответствии с этим параметром загружается драйвер указанного видеоадап3. Графические примитивы тера и производится инициализация всей библиотеки. Определен ряд констант, задающих набор стандартных драйверов: CGA, EGA, VGA, DETECT.

Значение DETECT сообщает библиотеке о том, что тип имеющегося видеоадаптера надо определить ей самой и выбрать для него режим наибольшего разрешения.


⇐ Предыдущая| |Следующая ⇒