OpenGL Performer
OpenGL Performer이전에는 IRIS Performer로 알려졌으며 흔히 Performer라고 불리는 OpenGL Performer는 하드 실시간 시각 시뮬레이션 애플리케이션을 가능하게 하기 위해 OpenGL 위에 구축된 유틸리티 코드의 상업 라이브러리다.OpenGL Performer는 SGI가 개발하여 이를 지속적으로 유지, 강화하였다.OpenGL Performer는 IRIX, Linux 및 여러 버전의 Microsoft Windows에서 사용할 수 있다.ANSI C와 C++ 바인딩 모두 사용할 수 있다.
역사
Performer는 1991년 당시 IRIS Inventor로 알려진 SGI의 Open Inventor 프로젝트의 한 그룹이 프로그래밍의 용이성보다는 성능에 초점을 맞추기로 결정하면서 생겨났다.Inventor는 사용하기 쉬운 객체와 상호작용하기 위한 다양한 UI 요소를 제공했지만, 퍼포먼스는 성능상의 이유로 즉석에서 다시 정렬할 수 있는 장면 그래프 시스템에 초점을 맞췄고, 렌더링 작업의 다양한 패스를 여러 스레드에서 병렬로 수행할 수 있도록 했다.연기자는 이 장면에서 히스테리시스 밴드와 페이드 기능으로 디테일의 수준을 묘사할 수 있도록 했다.프레임률과 통계를 모니터링하고 '스트레스' 요소를 계산했다.이는 목표 프레임률을 유지하기 위해 세부사항을 제거하기 위해 장면의 세부사항 수준을 가중시키는 데 사용될 수 있다.
Performer의 다른 주요 특징으로는 대칭 다중 처리 기능, 다중 그래픽 파이프의 지원 및 하이엔드 시스템의 확장 가능한 리소스 활용 능력 등이 있다.이 점에서 Performer는 기본적인 복잡성을 고려할 때 실제로 사용이 간단했다.애플리케이션 도태 및 렌더링은 서로 다른 물리적 프로세서에 잠긴 서로 다른 스레드에서 실행될 수 있다.각 그래픽 파이프의 다중 파이프(복수 그래픽 서브시스템) 구성 렌더링에는 전용 스레드가 있고, 마찬가지로 컬링에도 전용 프로세서가 있을 것이다.데이터베이스 페이징, 텍스처 페이징 및 포인트 광원 관리(비행 시뮬레이션용)와 충돌 탐지를 위한 교차로 테스트와 같은 고급 기능에도 전용 프로세서가 있어 그래픽 성능에 부정적인 영향을 주지 않고 비동기 I/O 및 처리가 발생할 수 있다.이러한 복잡성의 대부분은 스레드와 프로세스 간 통신을 설정하기 위해 만들 수 있는 비교적 높은 수준의 구성 호출을 가진 단순한 장면 그래프 API 아래에 숨겨져 있었다.
Performer는 MultiGen의 OpenFlight 형식 로더와 같은 타사 플러그 인 로더만 가지고 있지 않았다.마찬가지로 기본 런타임이 없었고, 샘플 코드와 자주 사용되며 자주 수정되는 '퍼플라이' 샘플 애플리케이션이 있었다.이것은 아마도 사용하기 어렵다는 평판에 기여했을 것이다.
1990년대 중반까지 Inventor와 Performer를 결합할 수 없는 이유가 없다는 것이 분명해지기 시작했다.이는 Cosmo 3D 프로젝트로 이어졌다. Cosmo 3D 프로젝트는 SGI 플랫폼의 미래 작업을 위한 새로운 수준과 높은 수준의 표준화된 API로 홍보할 뿐만 아니라, Inventor와 Performer(현재 본질적으로 API 심)를 모두 구축하고자 하는 것이었다.그러나 Cosmo 3D의 첫 번째 베타 릴리즈 이후 SGi는 Intel 및 IBM(이후 DEC)과 결합하여 본질적으로 Cosmo의 정리된 버전인 OpenGL+++를 만들었다.이 프로젝트는 SGI가 마이크로소프트와 거의 동일한 프로젝트로 관심을 돌렸을 때 사라졌는데, 이 프로젝트도 역시 죽었다.오늘날 Inventor와 Performer는 별도의 제품으로 남아 있으며, 어떤 버전도 빛을 보지 못했다.
특징들
수행자는 주로 하위 수준 libpr과 상위 수준 libpf의 두 개의 라이브러리로 구성된다.libpr 라이브러리는 pfGeoSet 및 pfGeoState의 개념을 기반으로 한 고속 렌더링 기능에 객체 지향 인터페이스를 제공한다.pfGeoSet는 다각형이나 선과 같은 그래픽 원형의 모음입니다.pfGeoState는 조명, 투명도 및 텍스처링과 같은 주어진 pfGeoSet에 관련된 속성을 캡슐화한다.
libpf 라이브러리에는 계층적 장면 그래프의 생성 및 조작, 장면 처리(시뮬레이션, 교차로, 도금 및 그리기 작업), 상세 수준 관리, 비동기 데이터베이스 페이징, 동적 좌표계, 환경 모델, 라이트 포인트 등의 기능이 포함되어 있다.또한 이 라이브러리는 여러 그래픽 파이프라인에 걸쳐 분산된 다중 뷰포트를 투명하게 지원한다.
다른 Performer 라이브러리(libpfutil, libpfdb, libpui 등)는 최적화된 기하학적 구조, 데이터베이스 변환, 장치 입력(외부 플라이박스 및 MIL-STD-1553 mux 버스와의 인터페이스 등), 모션 모델, 충돌 모델 및 Open과 같은 공통 데이터 형식을 지원하는 형식 독립적인 데이터베이스 인터페이스 생성을 위한 기능을 제공한다. Inventor, OpenFlight, Designer's Workbench, Medit 및 Wavefront.