QuickDraw 3D
QuickDraw 3D ( 略してQD3D )は、1995年にApple Inc.(当時Apple Computer、Inc.)によって開発された3DグラフィックスAPIで、当初はMacintoshコンピューター向けでしたが、クロスプラットフォームシステムとして提供されていました。
QD3Dは2つの層に分離されました。 RAVE (Rendering Acceleration Virtual Engine)として知られる低レベルのシステムは、Direct3DまたはMiniGLのようなOpenGLのカットダウンバージョンと同様の機能を持つハードウェアアブストラクションレイヤーを提供しました。さらに、オブジェクト指向のシーングラフシステムであるQD3Dが適切で、OpenGL ++と同様のレベルでモデルのロードと操作を処理しました。また、このシステムは、ファイル形式変換用の多数の高レベルユーティリティ、およびMac OS用の標準ビューアアプリケーションも提供していました。
QD3Dは、1990年代半ばのAppleの困positionした地位と、実現しなかった3Dハードウェア市場の将来の変化について設計チームが行ったいくつかの運命的な決定の両方の結果として、コンピューター市場にほとんど影響を与えませんでした。 Appleは、1998年にSteve Jobsが引き継いだ後、QD3Dの作業を中止し、Mac OSでの将来の3DサポートはOpenGLに基づくことを発表しました。
1990年代のOpenGL
1990年代の標準的な3D APIはOpenGLでした。これはSGIによって作成され、当初はハードウェアアブストラクションレイヤーとして動作するワークステーションシステムの機能と密接に一致していました。 OpenGL APIは、ペイントカラーやカメラ位置などの描画モードを設定するための状態設定命令と、通常は三角形のメッシュとしてシステムにジオメトリを送信するためのシステムで構成されていました。これらの指示の組み合わせは、出力を生成するためにレンダリングされた表示リストに保存されました。
OpenGLには、完全な3Dプログラムを作成するために必要な多くの機能が欠けていました。ジオメトリデータを保存および読み込み、そのデータをグループに収集してモデルオブジェクトを生成し、状態の制御はすべてプログラマーに任されていました。これは、パフォーマンスが制限されており、これらの種類の機能を直接制御することがパフォーマンスを改善するためのルートであった時代の利点であると考えられていました。
ただし、このような高レベルの機能の欠如により、単純なプログラムをすばやく作成することが難しくなり、相互運用性が欠如しました。 OpenGL ++や(後の)Fahrenheitなど、標準化された高レベルAPIを提供するための多くの取り組みが始まりました。これらは、ファイルからのジオメトリの読み込みや表示の提供など、より一般的なブックキーピングタスクの多くを処理しました。これらの標準化されたシーングラフシステムにより、プログラマはプログラムにGUIを提供するだけで済みました。
OpenGLの大部分は低レベルですが、実際にはSGIシステムでのみ使用される高レベルの概念が含まれていました。これにより、これらの機能を削除して一般的なハードウェアでの実装を容易にする別の一連のAPIが作成されました。これらの中で最もよく知られているのはMiniGLです。これは独立したAPIではありませんが、すべてのハードウェアでサポートされることが保証されているOpenGLの関数のリストです。したがって、これらの呼び出しに限定されるプログラムは最大のパフォーマンスで実行されます。
QD3D
QD3Dは、ワークステーションよりもかなり低い電力でコンピューター上で動作するように最初から設計されました。これにより、最初からMiniGLに近い下位レベルのRAVEシステムで、APIの上位層と下位層をきれいに分離するための協調的な取り組みが行われました。これには、異なるハードウェアにより簡単に移植できる、クリーンで最小限のAPIを提供するという利点がありました。
RAVEのみを移植する必要があるため、上位層のAPIは必要に応じて複雑にでき、QD3Dシステムには完全なシーングラフ、標準化されたモデルファイル形式、3DMF、およびそれらを使用する基本的なGUIオブジェクトが含まれていました。 QD3Dで簡単なアプリケーションを作成するために、プログラマはいくつかのライブラリを含め、ResEditまたは同様のツールを使用してプログラムにGUI要素を配置するだけで済みました。
追加機能には、アプリケーションがさまざまなスタイルでシーンをレンダリングできる「プラグイン」レンダリングシステムが含まれていました。モデルやコードを変更せずに、開発者はレイトレースやフォンシェーディングなどの方法を使用して、インタラクティブに、または(適切なプラグインを使用して)同じシーンをレンダリングできます。
QD3D APIは、純粋なCコードに基づくオブジェクトのようなシステムでした。さまざまな構造は、他の重要なオブジェクトへのポインタを含むように慎重に構築されました。オブジェクトは、必要なすべての描画状態を知っていたため、OpenGLで開発するときに通常必要となるコードを削除しました。
マイナス面として、QD3Dの階層化によりパフォーマンスの問題が発生しました。たとえば、システムは、描画する前にすべてのオブジェクトの状態を保存して自動的に設定します。これにより、開発がはるかに簡単になりましたが、開発者が直接制御できない方法でパフォーマンスが低下しました。プログラミングの容易さよりもパフォーマンスを要求するアプリケーションでは、代わりにRAVEレイヤーを直接使用することを選択できます。
もう1つの懸念事項は、シーングラフが表示されないことです。グラフを慎重に「カリング」して、表示されていないオブジェクトを削除することで、レンダリングパフォーマンスを大幅に改善できます。 QD3Dの以降のリリースでは(シーングラフ内のオブジェクトのグループ化に基づいて)可視性カリングを自動的に実行する機能が得られましたが、この機能に対するOpenGLのサポートの欠如は通常、開発者に最初から実装することを余儀なくさせました。
OpenGLに切り替える
優れた低レベル3Dパフォーマンスは、効率的なモデルを提供するプログラマーだけでなく、ハードウェア用の高品質ドライバーにも依存しています。 RAVEはクロスプラットフォーム向けに設計されていますが、Mac(ATI、NVIDIA、および3dfx)をサポートするハードウェア開発者のみがドライバーを作成しました。 Mac QD3Dの外部ではソフトウェアRAVE実装にフォールバックすることを余儀なくされたため、QD3Dと代替APIの比較は一方的に行われました。
OpenGLがWindowsで勢いを増すにつれて(多くの場合、D3Dを介してAPIを擁護したid Softwareの功績)、ハードウェア開発者はMicrosoftのD3Dで計画されている将来の機能セットに対して将来のハードウェアを設計することが増えてきました。その拡張メカニズムにより、OpenGLはこれらの変更を比較的簡単に追跡できましたが、RAVEの機能セットは比較的固定されたままでした。
1999年1月のMacworld Expoで、AppleはQuickDraw 3DもRAVEもMac OS Xに含めないことを発表しました。同社は1999年6月に開発スタッフを解雇し、Macの実装とキーを購入した後、社内の技術をOpenGLに置き換えましたConnectixのスタッフ。
AppleがQD3Dのサポートを終了した後、QD3D APIのオープンソース実装が外部で開発されました。 Quesaとして知られるこの実装は、QD3Dの上位概念とOpenGLレンダラーを組み合わせたものです。クロスプラットフォームのハードウェアアクセラレーションと同様に、このライブラリにより、Appleがサポートしていないプラットフォーム(Linuxなど)でQD3D APIを使用することもできます。最新リリースは2008年のものです。
用途
RAVEを使用して公開されたアプリケーションには、
- すべてのPower Macintoshに付属する1990年代のグラフ電卓
- 地震
- ディセントII
- 非現実的
- カーマゲドン2
- 未来の警官:LAPD
- ウォーターレース