QuickDraw 3D

QuickDraw 3D
QuickDraw-3D 기반 3D 모델을 보여주는 Mac OS Scrapbook 버전 7.5.2(1996)

QuickDraw 3D 또는 줄여서 QD3D애플(당시 애플컴퓨터, Inc.)이 1995년부터 매킨토시 컴퓨터를 위해 개발했지만 크로스 플랫폼 시스템으로 제공되는 3D 그래픽 API이다.

QD3D는 두 개의 층으로 분리되었다.RAVE(Rendering Acceleration Virtual Engine)로 알려진 하위 레벨 시스템은 Direct3D와 유사한 기능 또는 MiniGL과 같은 OpenGL의 컷다운 버전을 가진 하드웨어 추상화 계층을 제공했다.그 위에 객체 지향의 장면 그래프 시스템 QD3D perificate가 있었는데, OpenGL++[1]와 비슷한 수준에서 모델 로딩과 조작을 처리했다.이 시스템은 또한 파일 포맷 변환을 위한 많은 고급 유틸리티와 맥 OS용 표준 뷰어 응용 프로그램도 제공했다.

QD3D는 1990년대 중반 애플이 궁지에 몰린 결과 컴퓨터 시장에 별다른 영향을 미치지 못했고, 3D 하드웨어 시장의 향후 변화에 대한 설계팀의 몇 가지 운명적인 결정도 있었다.애플은 1998년 스티브 잡스가 인수하면서 QD3D 작업을 포기했고, 향후 맥 OS 3D 지원은 오픈GL을 기반으로 할 것이라고 발표했다.

1990년대 오픈GL

1990년대의 정식 3D API는 OpenGL이었다.이것은 SGI에 의해 작성되었고 처음에는 하드웨어 추상화 계층으로 작동하는 워크스테이션 시스템의 기능과 밀접하게 일치했다.OpenGL API는 주로 페인트 색상이나 카메라 위치와 같은 그리기 모드를 설정하기 위한 상태 설정 지침과 일반적으로 삼각형의 메쉬로 시스템에 지오메트리를 전송하기 위한 시스템으로 구성되었다.이 명령들의 조합은 출력물을 생산하기 위해 렌더링된 표시 목록에 저장되었다.

오픈GL은 완전한 3D 프로그램을 제작하는 데 필요한 기능이 많이 부족했다.기하학적 데이터를 저장하고 로드하고, 그 데이터를 그룹으로 수집하여 모델 객체를 만들고, 상태 제어는 모두 프로그래머에게 맡겨졌다.이것은 성능이 제한되고 이러한 종류의 기능에 대한 직접적인 통제가 성능 향상을 위한 경로였던 시대에 장점으로 여겨졌다.

그러나, 이러한 높은 수준의 기능성의 결여는 상호운용성의 결여로 이어질 뿐만 아니라, 간단한 프로그램을 신속하게 작성하는 것을 더욱 어렵게 만들었다.파일에서 기하학을 로드하고 디스플레이를 제공하는 것과 같은 더 일반적인 부기 작업을 처리한 OpenGL++ 및 (더 느리게) Fahrenheit와 같은 표준화된 상위 수준의 API를 제공하기 위한 많은 노력이 시작되었다.이러한 표준화된 장면 그래프 시스템은 프로그래머가 프로그램에 대한 GUI만 제공하면 된다는 것을 의미했다.

OpenGL은 대부분 낮은 수준이지만 SGI 시스템에서만 실제로 사용되었던 일부 상위 수준의 개념을 포함했다.이로 인해 공통 하드웨어에서 구현이 용이하도록 하기 위해 이러한 기능을 제거한 또 다른 API 시리즈가 생겨났다.이 중 가장 잘 알려진 것은 MiniGL로, 별도의 API가 아니라 모든 하드웨어에서 지원되는 OpenGL의 기능 목록일 뿐이며, 따라서 이러한 통화에 제한된 프로그램이 최대 성능을 발휘하도록 보장한다.

QD3D

QD3D는 처음부터 워크스테이션보다 상당히 낮은 전력을 가진 컴퓨터에서 작동하도록 설계되었다.이로 인해 API의 상층과 하층을 깨끗하게 분리하기 위한 공동의 노력이 이루어졌으며, 하급 RAVE 시스템은 처음부터 MiniGL에 가까웠다.이는 다른 하드웨어에 보다 쉽게 포팅할 수 있는 깨끗하고 최소의 API를 제공한다는 장점이 있었다.

RAVE만 포팅하면 되었기 때문에 상부 계층 API는 원하는 만큼 복잡하게 만들 수 있었고, QD3D 시스템에는 완전한 장면 그래프, 표준화된 모델 파일 형식, 3DMF, 이를 활용한 기본 GUI 객체까지 포함되었다.QD3D로 간단한 애플리케이션을 작성하기 위해 프로그래머는 몇 개의 라이브러리만 포함하고 ResEdit 또는 유사한 도구를 사용하여 프로그램에 GUI 요소를 배치하면 되었다.

추가 기능에는 애플리케이션이 다양한 스타일로 장면을 렌더링할 수 있도록 하는 "플러그인" 렌더링 시스템이 포함되었다.모델이나 코드를 변경하지 않고, 개발자들은 레이트레이싱이나 퐁 쉐이딩과 같은 방법을 사용하여 대화형으로 또는 (적합한 플러그인으로) 동일한 장면을 렌더링할 수 있었다.

QD3D API는 순수 C코드를 기반으로 한 객체형 시스템이었다.다양한 구조물들은 다른 중요한 물체에 대한 포인터를 포함하도록 세심하게 건설되었다.개체는 필요한 모든 도면 상태를 알고 있었고, 따라서 OpenGL에서 개발할 때 일반적으로 필요한 코드가 제거되었다.

부정적인 측면에서는 QD3D의 레이어링이 성능 문제를 도입했다.예를 들어, 시스템은 그리기 전에 모든 객체에 대한 상태를 저장하고 자동으로 설정한다.이것은 개발을 훨씬 쉽게 만들었지만, 개발자가 직접 통제할 수 없는 방식으로 성능도 떨어뜨렸다.프로그래밍의 용이성보다 성능을 요구하는 애플리케이션은 대신 RAVE 계층을 직접 사용할 수 있다.

씬(scene) 그래프가 시야에서 가려져 보이지 않는 물체를 제거하기 위해 그래프를 세심하게 '칼로'하면 렌더링 성능의 상당한 향상을 이룰 수 있다는 점도 고민거리다.QD3D의 이후 릴리즈는 가시성 도태(scene graph)를 자동으로 수행할 수 있는 능력을 얻었지만(씬 그래프의 객체 그룹화에 기초함), OpenGL의 이 기능에 대한 지원이 부족하여 개발자들은 일반적으로 처음부터 이를 구현하지 않을 수 없었다.

개방으로 전환GL

낮은 수준의 우수한 3D 성능은 효율적인 모델을 제공하기 위해 프로그래머뿐만 아니라 하드웨어를 위한 고품질 드라이버에 의존한다.RAVE는 크로스 플랫폼으로 설계됐지만, Mac(ATI, NVIDIA, 3dfx)을 지원하는 하드웨어 개발자만이 이를 위한 드라이버를 생산했다.이는 Mac QD3D 외부가 소프트웨어 RAVE 구현으로 후퇴할 수 밖에 없었기 때문에 QD3D와 대체 API의 비교를 일방으로 남겨두었다.

OpenGL이 Windows(D3D를 통해 API를 옹호한 ID Software)에서 우위를 차지하면서 하드웨어 개발자들은 점점 더 마이크로소프트의 D3D에 대해 계획된 미래 기능 세트에 대비하여 미래 하드웨어를 설계하고 있었다.확장 메커니즘을 통해 OpenGL은 이러한 변화를 비교적 쉽게 추적할 수 있었고, RAVE의 기능 세트는 비교적 고정된 상태를 유지했다.

1999년 1월 맥월드 엑스포에서 애플은 퀵드롭 3D도 레이브도 맥 OS X에 포함되지 않을 것이라고 발표했다.[citation needed] 회사는 1999년 6월 사내 기술을 맥 구현과 코닉스 엔터프라이즈의 핵심 직원을 사들인 후 OpenGL로 대체하면서 개발 직원을 해고했다.

애플이 QD3D 지원을 철회한 뒤 외부에서 QD3D API 오픈소스 구현이 개발됐다.Quesa로 알려진 이 구현은 QD3D의 상위 개념과 OpenGL 렌더러를 결합한다.크로스 플랫폼 하드웨어 가속뿐만 아니라, 이 라이브러리에서는 Apple(: 리눅스)에서 지원되지 않는 플랫폼에서 QD3D API를 사용할 수 있다.최신 버전은 2008년부터이다.

적용들

RAVE를 채용하여 발행된 수백 개의 애플리케이션 중 다음이 있다.

참고 항목

참조

외부 링크