GLX

GLX는 "OpenGL Extension to the X Window System"을 의미하는 두문자어로, OpenGL과 X 윈도 시스템 간의 인터페이스를 제공하며 OpenGL 자체에 대한 확장도 제공하는 X 윈도 시스템 코어 프로토콜의 확장이다. 이는 OpenGL을 사용하려는 프로그램이 X 윈도 시스템이 제공하는 창 내에서 이를 수행할 수 있도록 한다. GLX는 간접 상태와 직접 상태의 두 가지 "상태"를 구별한다.

역사
실리콘 그래픽스는 X 윈도 시스템에서 OpenGL을 지원하려는 노력의 일환으로 GLX를 개발했다. 1999년 SGI는 오픈 소스 사용권으로 GLX를 출시했으며, 2000년 XFree86 소스 코드 버전 4.0에 포함되도록 했다. 거기서 코드는 X 윈도 시스템 X11R6.7.0의 포크된 X.Org 재단 버전으로 상속되었다. 2008년 9월 19일, SGI는 "X.Org에서 사용하는 자유 X11 라이선스를 이제 미러링한다"는 "새로운 SGI FreeB 라이선스 버전 2.0"을 만들었고, "자유 및 오픈 소스 소프트웨어 커뮤니티에서 널리 받아들여지는 '자유' 정의를 충족한다"고 밝혔다. 2009년 자유 소프트웨어 재단은 SGI Free 라이선스 B를 자유 소프트웨어 사용권으로, GLX를 중요한 자유 소프트웨어 그래픽 프로젝트로 지지했다. 2011년 기준으로 GLX는 버전 1.4에 도달했다.

GLcore라고 불리는 GLX API의 첫 번째 내부 구현은 X 서버 내에 메사 소프트웨어 렌더러 버전을 로드하고 창이나 픽스맵에서 OpenGL 명령을 렌더링했다. DRI의 개발로 직접 컨텍스트를 통한 하드웨어 가속 OpenGL을 사용할 수 있는 기능이 추가되었다(주로 비디오 게임에서 사용됨). 2006년, 중첩된 Xgl X 서버와 컴피즈 합성 창 관리자의 보급으로 가속 간접 GLX(AIGLX)가 개발되었다. AIGLX는 X 서버 내에 Mesa DRI 드라이버를 로드하여 GLX (간접 컨텍스트) 애플리케이션에 하드웨어 가속을 제공한다. 이 방법은 간접 컨텍스트를 사용하는 X 클라이언트 간(모두 X 서버의 동일한 주소 공간에 있음) 및 X 클라이언트와 합성 창 관리자 간에 GL 객체를 공유할 수 있게 하여 합성을 가속한다. 2008년, Mesa 소프트웨어 렌더러에 대한 GLcore의 바인딩은 swrast_dri.so라고 불리는 DRI 인터페이스 모듈로 재작성되어 Mesa와 X 서버의 결합을 개선했다. 또한 2008년에 DRI를 대체하기 위해 새로운 DRI2가 도입되었고, 그와 함께 커널 모드 설정을 기반으로 하는 새로운 모델이 도입되었다. 2011년, OpenGL을 기반으로 하는 일반 하드웨어 가속 2D X 드라이버를 추가하는 것을 목표로 Glamor 프로젝트가 시작되었다. 2013년 아담 잭슨은 Glamor, 간접 렌더링 등 다양한 경로를 OpenGL 라이브러리 libGL의 하나의 고유한 경로로 통합하기 위해 GLX 코드를 대대적으로 재작성했다.

 기능 
섬네일|upright=0.75|X11에 포함된 GLX 데모(glxgears)
GLX는 세 가지 부분으로 구성된다.
 X 윈도 시스템 애플리케이션에 OpenGL 함수를 제공하는 API.
 클라이언트(OpenGL 애플리케이션)가 3D 렌더링 명령을 X 서버(디스플레이를 담당하는 소프트웨어)로 보낼 수 있도록 하는 X 프로토콜의 확장. 클라이언트 및 서버 소프트웨어는 다른 컴퓨터에서 실행될 수 있다.
 클라이언트로부터 렌더링 명령을 수신하여 설치된 OpenGL 라이브러리로 전달하는 X 서버의 확장.

클라이언트와 서버가 동일한 컴퓨터에서 실행되고 적합한 드라이버를 사용하는 가속 3D 그래픽 카드를 사용할 수 있는 경우, 앞의 두 구성 요소는 DRI를 통해 우회될 수 있다. 이 경우 클라이언트 애플리케이션은 여러 API 계층을 통해 비디오 하드웨어에 직접 액세스할 수 있다.

구현
 메사 3D – 몇 가지 그래픽 API와 사용 가능한 자유-오픈 소스 장치 드라이버: 그래픽을 구현하는 자유-오픈 소스 라이브러리이며, 최후의 수단으로 메사 3D는 소프트웨어 렌더링 폴백도 제공한다.
 그래픽 칩용 독점 장치 드라이버에는 GLX 구현도 포함되어 있다.

 같이 보기 
 WGL – OpenGL에 대한 동등한 마이크로소프트 윈도우 인터페이스
 CGL – OpenGL에 대한 동등한 macOS 인터페이스
 EGL – OpenGL ES 또는 VG와 기본 네이티브 플랫폼 창 시스템 간의 유사한 크로스 플랫폼 인터페이스
 GLUT – OpenGL 프로그램용 유틸리티 라이브러리

 각주 

 외부 링크 
 X 윈도 시스템을 사용한 OpenGL® 그래픽

 현재 OpenGL API, OpenGL 셰이딩 언어 및 GLX 사양 및 참조 페이지

분류:X 라이브러리
분류:OpenGL