OpenGL 유틸리티 툴킷

OpenGL Utility Toolkit
OpenGL 유틸리티 툴킷
Fenetre glut.png
개발자마크 킬가드
운영 체제크로스 플랫폼
플랫폼크로스 플랫폼
유형API
웹사이트www.opengl.org/resources/libraries/glut/ Edit this on Wikidata

OpenGL Utility Toolkit(GLUT)은 주로 호스트 운영 체제에서 시스템 레벨 I/O를 수행하는 OpenGL 프로그램용 유틸리티 라이브러리다.수행되는 기능으로는 창 정의, 창 제어, 키보드마우스 입력의 모니터링 등이 있다.정육면체, , 유타 찻주전자를 포함한 다수의 기하학적 원시 요소(솔리드 및 와이어프레임 모드)를 그리는 루틴도 제공된다.글루트도 팝업 메뉴 만들기에 대한 지원이 일부 제한적이다.

GLUT는 X 시스템용 OpenGL Programming The Cg Tutorial의 저자 Mark J. Kilgard가 작성했다. Silicon Graphics Inc.에서 일하는 동안 Programmable Real-Time Graphics에 대한 최종 가이드.

GLUT의 두 가지 목표는 운영 체제 간에 다소 휴대 가능한 코드(GLUT는 교차 플랫폼)를 만들 수 있도록 하고 OpenGL 학습을 보다 쉽게 하는 것이다.GLUT를 사용하면서 OpenGL 프로그래밍을 시작하려면 몇 줄의 코드만 사용해야 하며 운영 체제별 윈도우 설정 API에 대한 지식이 필요하지 않다.

모든 GLUT 기능은glut접두사(예:glutPostRedisplay현재 창을 다시 그릴 필요가 있음을 표시한다.

구현

Mark Kilgard가 만든 원래 TOLUT 라이브러리는 X 윈도 시스템(GLX)을 지원하며 네이트 로빈스에 의해 마이크로소프트 윈도(WGL)에 포팅되었다.또한, MacOS는 자체적인 NSGL/CGL을 지원하는 GLUT 프레임워크와 함께 공급된다.

킬가드의 글루트 라이브러리는 더 이상 유지되지 않으며, 그 라이선스로 인해 도서관의 수정된 버전의 재분배가 허용되지 않았다.이로 인해 API의 무료 소프트웨어 또는 오픈 소스 재구성이 처음부터 필요하게 되었다.그러한 첫 번째 도서관은 FreeGLut이었는데, 이 도서관은 글루트의 한계에 대처하기 위해 소수의 새로운 기능을 도입했지만, 합리적으로 가까운 복제를 목표로 하고 있다.FreeGLut의 포크인 OpenGLut은 원래 API에 많은 새로운 기능을 추가했지만 2005년 5월에 작업이 중단되었다.

Mark Kilgard는 GitHub 저장소를 가지고 있다.[1]glut.h 헤더 파일에는 다음 라이센스가 포함되어 있다.[2]

/* 저작권 (c) Mark J. Kilgard, 1994, 1995, 1996, 1998, 2000, 2006, 2010.*/ /* 이 프로그램은 라이센스 수수료 없이 자유롭게 배포할 수 있으며, 보증 또는 보증인이 명시 또는 암시 없이 제공된다.이 프로그램은 공개 도메인에 있다.*/

제한 사항

GLUT의 원래 설계 결정 중 일부는 프로그래머들이 원하는 작업을 수행하는 것을 어렵게 만들었다.이로 인해 많은 사람들이 비캐논 패치 및 GLUT로의 확장을 생성하게 되었다.[1] 일부 무료 소프트웨어 또는 오픈 소스 재구현에도 수정 사항이 포함되어 있다.

원래의 글루트 라이브러리의 보다 주목할 만한 제한사항으로는 다음과 같은 것들이 있다.

  • 도서관은 프로그래머들이 전화할 것을 요구한다.glutMainLoop(), 절대 돌아오지 않는 함수.이것은 프로그래머들이 자신의 이벤트 루프를 제어하기를 원하는 프로그램이나 라이브러리에 글루트를 통합하는 것을 어렵게 만든다.이것을 고치는 일반적인 패치는 이른바 새로운 기능을 도입하는 것이다.glutCheckLoop()(macOS) 또는glutMainLoopEvent()(FreeGLut/OpenGLut) 이것은 글루트 이벤트 루프의 단일 반복만 실행한다.다른 일반적인 해결책은 운영 체제에 따라 다를 수 있지만 별도의 스레드에서 GLUT의 이벤트 루프를 실행하는 것이며, 동기화 문제나 기타 문제를 도입할 수도 있다. 예를 들어, macOS GLUT 구현에서는 다음이 필요하다.glutMainLoop()본업에 종사하다
  • 라는 사실glutMainLoop()절대 반환되지 않음은 또한 글루트 프로그램이 이벤트 루프를 종료할 수 없다는 것을 의미한다.FreeGLut은 새로운 기능을 도입하여 이를 수정한다.glutLeaveMainLoop().
  • 라이브러리는 창이 닫히면 프로세스를 종료한다. 일부 응용 프로그램의 경우 이것은 원하지 않을 수 있다.따라서 많은 구현에는 다음과 같은 추가 콜백이 포함된다.glutWMCloseFunc().

더 이상 유지되지 않기 때문에(본질적으로 오픈 소스 FreeGLut으로 대체됨) 위의 설계 문제는 원래의 글루트에서 여전히 해결되지 않는다.

참고 항목

참조

  1. ^ "Glut". GitHub. 21 November 2021.
  2. ^ "Glut". GitHub. 21 November 2021.

외부 링크