BGIdemoCollage | |
Написано на | C ++ |
---|---|
Платформа | DOS |
Тип | библиотека или framework |
Borland Graphics Interface, также известный как BGI, это графическая библиотека, связанная с несколькими компиляторами Borland для операционных систем DOS с 1987 года. BGI также использовался для предоставления графики для многих других продуктов Borland, включая электронную таблицу Quattro. Библиотека загружала графические драйверы (*.BGI
) и векторные шрифты (*.CHR
) с диска, чтобы обеспечить независимую от устройства поддержку графики. Программист мог встроить графический драйвер в исполняемый файл, связав графический драйвер как объектный код с помощью служебной программы, предоставляемой компилятором (bgiobj.exe
). Существовали графические драйверы для распространенных графических адаптеров и принтеров того времени, например, CGA, EGA и VGA. Также были драйверы BGI для некоторых видов плоттеров.
Последней интегрированной средой разработки Borland C ++ для DOS является Borland C ++ 3.1 (1992). Последней средой C ++, поддерживающей BGI, является Borland C ++ 5.02 (1997 г.), которая работает под Windows, но может компилировать программы DOS. BGI был доступен в C / C ++ с помощью graphics.lib
/ graphics.h
, а в Паскале - с помощью модуля graph
.
BGI менее мощный, чем современные графические библиотеки, такие как SDL или OpenGL, поскольку он был разработан для графики презентаций, а не для трехмерных приложений, основанных на событиях. Однако считалось, что его проще кодировать.
Учитывая популярность компиляторов Borland, несколько независимых разработчиков программного обеспечения создали драйверы BGI для нестандартных видеорежимов, современных видеокарт, плоттеров, принтеров и вывода графических файлов.
В 1994 году Jordan Hargraphix Software выпустила драйверы SVGA BGI версии 5.5, которые совместимы с некоторым оборудованием SVGA, таким как карты ATI или Cirrus Logic и VESA. Карты, совместимые с VBE. Также есть настроенные драйверы VGA для нестандартных графических режимов, поддерживаемых VGA путем записи непосредственно в его регистры, версии драйвера защищенного режима для Turbo Pascal 7.0 и драйвер мыши (фактически обработчик курсора для неподдерживаемые видеорежимы стандартными драйверами мыши). Эти драйверы были условно-бесплатными, и их покупка давала возможность получить их исходный код и техническую поддержку; теперь они больше не поддерживаются и выглядят как заброшенное ПО. Основными ошибками являются отсутствие поддержки выравнивания байтов в режимах VESA true-color (поэтому драйвер true-color не подходит для графических карт Nvidia ) и видеопамяти ошибка переключения банка в драйвере мыши (поскольку адресное пространство реального режима составляет 1 мегабайт, но для некоторых видеорежимов требуется до 4 мегабайт памяти, оно разбито на 64 килобайтные банки).
Следующая программа, написанная для Borland Turbo C, инициализирует графику и рисует 1000 случайных линий:
#include#include #include void draw (int x, int y, int x1, int y1); {положить пиксель (х + х1, у + у1, 11); putpixel (х-х1, у + у1, 11); putpixel (х + х1, у-у1, 11); putpixel (х-х1, у-у1, 11); положить пиксель (x + x1, y + y1, 5); положить пиксель (x-x1, y + y1, 5); putpixel (х + х1, у-у1, 5); putpixel (x-x1, y-y1, 5); } void Brescircle (int x, int y, int r); {int x1 = 0, y1 = r; int d = 3-2 * r; draw (x, y, x1, y1); в то время как (у>= х) {х ++; если (d>0) {y--; d = d + 4 * (x1-y1) +10; } иначе d = d + 4 * x1 + 6; draw (x, y, x1, y1); задержка (500); }} int main () {int x, y, r; int gd = DETECT, gm; intigraph (gd, gm, ""); printf ("ВВЕДИТЕ ЗНАЧЕНИЕ КООРДИНАТЫ X:"); scanf ("% d", x); printf ("ВВЕДИТЕ ЗНАЧЕНИЕ КООРДИНАТЫ y:"); scanf ("% d", y); printf ("ВВЕДИТЕ ЗНАЧЕНИЕ РАДИУСА:"); scanf ("% d", r); Брескирк (x, y, r); getch (); возврат 0; }