볼랜드 그래픽 인터페이스

볼랜드 그래픽 인터페이스(, BGI)는 1987년부터 도스 운영 체제를 위한 여러 볼랜드 컴파일러에 포함된 그래픽 라이브러리였다. BGI는 쿼트로 프로 스프레드시트를 포함하여 다른 많은 볼랜드 제품에 그래픽을 제공하는 데에도 사용되었다.

이 라이브러리는 장치 독립적인 그래픽 지원을 제공하기 위해 디스크에서 그래픽 드라이버(*.BGI)와 벡터 글꼴(*.CHR)을 로드했다. 프로그래머는 컴파일러(bgiobj.exe)에서 제공하는 유틸리티를 사용하여 그래픽 드라이버를 오브젝트 코드로 연결함으로써 실행 파일에 그래픽 드라이버를 포함할 수 있었다. 당시의 일반적인 그래픽 어댑터 및 프린터(예: CGA, EGA, VGA, Hercules, AT&T 400, MCGA 및 3270 PC)를 위한 그래픽 드라이버가 있었다. 일부 종류의 플로터용 BGI 드라이버도 있었다.

도스용 볼랜드 C++ IDE의 마지막 버전은 볼랜드 C++ 3.1 (1992)이다. BGI를 지원하는 마지막 C++ 환경은 볼랜드 C++ 5.02 (1997)이며, 이는 윈도우에서 작동하지만 도스 프로그램을 컴파일할 수 있다. BGI는 graphics.lib / graphics.h를 통해 C/C++에서, graph 유닛을 통해 파스칼에서 접근할 수 있었다.

BGI는 이벤트 기반 3D 애플리케이션 대신 2D 프레젠테이션 그래픽용으로 설계되었기 때문에 SDL 또는 OpenGL과 같은 최신 그래픽 라이브러리보다 기능이 떨어졌다. 그러나 코딩하기가 더 간단하다고 여겨졌다.

 서드파티 BGI 드라이버 
볼랜드 컴파일러의 인기로 인해 일부 독립 소프트웨어 개발자들은 비표준 비디오 모드, 고급 비디오 카드, 플로터, 프린터 및 그래픽 파일 출력을 위한 BGI 드라이버를 제작했다.

1994년에 조던 하그래픽스 소프트웨어는 ATI 테크놀로지스 또는 시러스 로직 카드와 VESA VBE 호환 카드와 같은 일부 SVGA 하드웨어와 호환되는 SVGA BGI 드라이버 버전 5.5를 출시했다. 또한 레지스터에 직접 쓰기 방식으로 VGA가 지원하는 비표준 그래픽 모드용으로 조정된 VGA 드라이버, 터보 파스칼 7.0용 보호 모드 드라이버 버전 및 마우스 드라이버(표준 마우스 드라이버가 지원하지 않는 비디오 모드용 커서 핸들러)가 있다. 이 드라이버들은 셰어웨어였고 구매하면 소스 코드와 기술 지원을 받을 수 있었다. 현재는 더 이상 지원되지 않지만, 2020년 12월 19일에 조던 하그레이브는 MIT 허가서로 깃허브에 소스 코드를 공개했다. 주요 버그는 VESA 트루 컬러 모드에서 바이트 정렬 지원 부족(따라서 트루 컬러 드라이버는 엔비디아 그래픽 카드에 적합하지 않음)과 마우스 드라이버의 비디오 메모리 뱅크 스위칭 버그(도스 리얼 모드 주소 공간은 1메가바이트이지만 일부 비디오 모드는 최대 4메가바이트의 메모리를 필요로 하므로 64킬로바이트 뱅크로 분할됨)이다.

 레거시 
Graph라는 BGI 호환 라이브러리는 프리 파스칼 컴파일러에 포함되어 있다.
현재 운영 체제용 BGI 구현도 여러 가지 사용할 수 있다 (외부 링크 참조).

 예제 
다음 프로그램은 볼랜드 터보 C용으로 작성되었으며, 그래픽을 초기화하고 1000개의 무작위 선을 그린다:

#include <graphics.h>
#include <conio.h>
#include <stdlib.h>

int main (int argc, char *argv[])
{
  int i, gd = DETECT, gm;
  initgraph(&gd, &gm, "");
  setbkcolor(BLACK);
  cleardevice();
  outtextxy(0, 0, "Drawing 1000 lines...");
  for (i = 0; i < 1000; i++) {
    setcolor(1 + random(15));
    line(random(getmaxx()), random(getmaxy()),
         random(getmaxx()), random(getmaxy()));
  }
  getch();
  closegraph();
  return 0;
}

 같이 보기 
 알레그로
 그래픽스 시스템 확장 (GSX)
 그래피컬 커널 시스템 (GKS)
 레이라이브
 사이테크 스냅
 UniVBE

 각주 

 Turbo C++ 3.0 User's Guide. Borland International, Inc. 1992.
 Borland C++ Library Reference. Borland International, Inc. 1992.
 Borland Graphics Interface (BGI) Documentation

 외부 링크 
 SDL_bgi is a multiplatform port written in SDL2; it provides several extensions.
 Winbgim is a port of BGI for Microsoft Windows; it provides several extensions.
 The GRX graphics library contains a BGI subsystem, mostly compatible with the original BGI.
 OpenBGI library is another port for Microsoft Windows.
 libgraph is a BGI implementation for Linux written in SDL1.
 Fileformat.info page about chr contains some information on how to decode Borland CHR font.
 sunet.se ftp mirror with some CHR font tools.

분류:C 라이브러리
분류:볼랜드 소프트웨어
분류:C++ 라이브러리
분류:그래픽 라이브러리