| 開発者 | GGI開発者 |
|---|---|
| 安定リリース | 2.2.2 / 2007年1月27日 |
| タイプ | アプリケーションプログラミングインターフェース |
| ライセンス | MITライセンス |
| Webサイト | www.ibiblio.org/ggicore/index.html |
General Graphics Interface (GGI) は、信頼性が高く、安定していて、高速で、どこでも動作するコンピュータグラフィックスシステムの開発を目的としたプロジェクトでした。 [1]その目的は、GGI を使用するすべてのプログラムを、最大限再コンパイルするだけで、GGI がサポートするすべてのコンピューティングプラットフォームで実行できるようにすることでした。GGI は、MIT ライセンスの要件に従う、無料のオープンソースソフトウェアです。
GGIプロジェクトと、KGIなどの関連プロジェクトは、一般的には廃止されたと認識されています。[2]
目標
このプロジェクトはもともと、 Linux上の仮想コンソール、svgalib、Xディスプレイ サーバーサブシステム間の切り替えをより信頼性の高いものにするために開始されました。目標は次のとおりです。
- アプリケーション用の柔軟で拡張可能なAPIによる移植性。これにより、使用するものだけを取得することでアプリケーションの肥大化を回避できます。[説明が必要] [引用が必要]
- クロスプラットフォームおよびバックエンドでの移植性[説明が必要]
- 権限をできるだけ少なくするという意味でセキュリティ
GGI フレームワークは、さまざまなバックエンドまたはターゲット ( Linux フレームバッファ、X11、Quartz、DirectXなど) を備えたポータブルな ユーザー空間 ライブラリのセットによって実装されています。その中で最も基本的な 2 つは、LibGII (入力処理用) と LibGGI (グラフィカル出力用) です。他のすべてのパッケージは、これらのコアライブラリに機能を追加するため、これらのライブラリの 1 つまたは両方に依存します。
一部のターゲットは他のターゲットと通信します。これらは疑似ターゲットと呼ばれます。疑似ターゲットは組み合わせることができ、パイプラインのように機能します。
一例を挙げると、display-palemu は、トゥルーカラー モードでパレット モードをエミュレートします。これにより、パレット モードが利用できないマシンでも、アプリケーションをパレット モードで実行できます。display-tile は、大きな仮想ディスプレイを多数の小さな部分に分割します。複数のモニターに分散したり、ネットワーク経由で転送したりすることもできます。
歴史
アンドレアス・ベックとステフェン・シーガーは、1994年に「scrdrv」と呼ばれるいくつかの実験的前身を経てGGIプロジェクトを設立した。 [3]
scrdrv の開発は、当時の Linux オペレーティング システムで共存しているもののあまりうまく連携していないグラフィック環境 (主にXとSVGAlib ) によって引き起こされる問題がきっかけで行われました。これらの環境は、頻繁にロックアップを引き起こし、再起動が必要になります。最初の scrdrv の設計は、DJ DOS エクステンダーのグラフィック サブシステムとSANEプロジェクトのいくつかの概念に大きく影響されました。scrdrv が解決した基本的な問題は、モードを設定するためにビデオ ハードウェアを十分に認識しているカーネル モード ドライバーを提供し、混乱したりクラッシュしたりしたグラフィック アプリケーションからでも正常な状態に戻れるようにしたことです。
最初の公式バージョンは 1995 年に登場しました。1996 年頃、GGI 1.0 が LGPL ライセンスでリリースされました。GGI はlibggiというコア ライブラリのみで構成されていました。これには、入力処理、2D グラフィック プリミティブのセット、グラフィック ボード用のいくつかのユーザー空間ドライバー、およびドライバー用のユーザー空間インターフェイスを備えた Linux カーネル パッチが含まれていました。このパッチは KGI (Kernel Graphics Interface) と呼ばれていました。
1997 年、GGI は完全に再設計されました。多くの新しいアイデアと Linux からの決定により、GGI は 2001 年 8 月に MIT リリースでリリースされた GGI 2.0 になりました。
1998 年、Linux カーネルのメーリング リストで、KGI をカーネルに組み込むことについて激しい論争が起こりました。Linus Torvalds は、GGI に関する懸念[4]を説明し、「 Xで十分だと思う」と述べ、GGI の全体的な方向性について懸念を表明しました。
この間、EvStackと呼ばれる別の設計アイデアも炎上を招きました。EvStack は、入出力サブシステムのほぼ完全な再設計であり、イベント (したがって「Ev」) が、イベントを操作するように構成できるモジュールの「スタック」を流れるようにしました。EvStack は非常に強力な概念で、たとえば、同じマシンに 2 つのキーボードを接続し、1 つで 1 つのグラフィック アダプタのテキスト コンソールを操作し、もう 1 つで別のグラフィック コンソールを操作できます (Linux-Kongreß ´97 [5]で実証されたように)。また、異なる仮想コンソールで異なるキーボード レイアウトを使用したり、ネットワーク経由でキーボードを接続したりすることもできます。ただし、これには入力サブシステムへの大規模なパッチが必要となり、これは受け入れられそうにありませんでした。最新の Linux 入力イベント システムでは、プログラム (Xorg など) がコンソール キーボード以外のキーボード イベントを受信できるため、マルチシート操作が可能です。
LinuxExpo 98 では、GGI、KGI、EvStack に関する一連の講演が行われました。
GGI 2.0 では、KGI が分離され、KGI プロジェクトという独自のプロジェクトになりました。GGI 2.0 は、一連のライブラリで構成されていました。1998 年後半の 2.0 ベータ フェーズで、ライブラリのライセンスが LGPL から MIT スタイルのライセンスに変更されました。また、より多くのオペレーティング システムをサポートするために、ビルド システムにも多くの作業が行われました。FreeBSD で動作し、OpenBSD、NetBSD、さらにはMicrosoft Windows用のコードもあり、より多くのハードウェア プラットフォームもサポートされていました。
入力処理は、libgii というライブラリに移動されました。汎用 GGI コードは、libgii 内のサブライブラリである libgg にありました。コア グラフィック ライブラリ libggi には、あらゆる種類のグラフィック アプリケーションを書くのに十分一般的な軽量のグラフィック プリミティブ セットがあり、高レベル API は libggi 上の他のライブラリに入りました。これらは GGI 拡張機能と呼ばれていました。libggi は一連のターゲットをサポートしますが、そのほとんどは Linux 固有のものでした: fbdev、X、aa、vcsa、terminfoと、tile、multi、palemu、trueemu などの疑似ターゲットです。GGI 拡張機能は高レベル API を特徴としていました。libggiwmh は、当時は X のみだったウィンドウ表示のターゲットに機能を提供します。libggimisc は、vga 分割線などの基本的な機能を提供しました。
GGI 2.0.2 は 2002 年 12 月にリリースされました。ユーザーにとって最も目立った変更は、X バックエンドが最初から再設計されたことです。もう 1 つの注目すべき変更は、ドキュメントが大幅に改善されたことです。最後に、リリース サイクルが変更されました。このリリースから、開発ツリーと安定ツリーができました。安定ツリーはバグ修正のみに公開され、開発ツリーは BSD スキームに従って -current という名前が付けられました。
2004 年 11 月、GGI 2.0.x 安定ツリーからの最後のバグ修正がリリースされ、新しい GGI 2.1.x 安定ツリーが採用されました。
GGI 2.1.x は、GNU Hurd、Linux、*BSD、System V、Mac OS X、Microsoft Windows など、多くのオペレーティング システムで動作します。より多くのハードウェア プラットフォームのサポートが追加されました。NetBSDでは、NetBSD/Vax 用のバイナリ パッケージも作成されました。libgii の上に libgiigic と呼ばれる新しい GGI ライブラリが追加されました。これにより、実行時にユーザー アクションとイベントを組み合わせることができます。
GGI 2.2 は 2005 年 12 月にリリースされました。ターゲットの自動検出が改良され、Linux 中心ではなくなりました。GGI は、移植性を高めるために、独自の整数データ型を ANSI C99 型に置き換えました。Quartz のターゲットが追加されました。Mac OS X ユーザーは X11 に依存しなくなりましたが、X11 バックエンドは引き続き使用できます。ただし、ユーザーにとって最も目立った変更は、ターゲットにリンクされた静的データのサポートでした。
最新リリースは GGI 2.2.2 で、GGI 2.2.x 安定シリーズのバグ修正リリースです。2007 年 1 月にリリースされました。
採択
一人称視点シューティングゲーム のDoom、Heretic、Quake、DescentのソースポートはGGIを使用するように移植され、[6] [7] Linux Doom Editorもそれをベースにしています。[8]また、アーケードスタイルの Heroes [9]、スネークゲーム、Thrust (コモドール64のゲームThrustに触発された) [10]、プラットフォームゲームの U.RBAN The Cyborg Project [11]、Dave Gnukem [12] ( MS-DOS用のオリジナルのDuke Nukemに触発された)でもサポートされています。 GGIは、バージョン2xまでSimple DirectMedia Layer内のビデオドライバーとしても利用可能でした。[13]
2006年現在の状況
GGI プロジェクトは GGI 3.0 リリースに向けて前進していました。[いつ? ] libgii は再設計されました。入力処理は、ファイル記述子で select() を使用するよりも柔軟な、リアクタ イベント モデルに置き換えられました。これにより、特に input-quartz などのファイル記述子を使用しないユーザーにとって、入力ドライバ全般が簡素化されました。libgg は別のライブラリに移動されました。
libggi は、マルチターゲットをタイルで、モノテキストを palemu で、いくつかのターゲットを 1 つのサブライブラリに統合しました。また、libggi には新しいVNCターゲットも追加され、任意のアプリケーションを VNC サーバーとして実行できるようになりました。
GGI 3.0 では、拡張機能とコア ライブラリ間のやり取りを簡素化するために、拡張機能のメカニズムが最初から再設計されました。これには、API を少し変更する必要がありました。
参照
参考文献
- ^ Loki Software, Inc; John R. Hall (2001). プログラミング Linux ゲーム. No Starch Press. p. 56. ISBN 978-1-886411-49-4。
- ^ Larabel, Michael (2011 年 7 月 3 日). 「カーネル グラフィックス インターフェイス (KGI) は事実上終了 - Phoronix」. www.phoronix.com . 2019 年 6 月 8 日閲覧。
- ^ Beck, Andreas (1996-11-01). 「Linux-GGI プロジェクト」. Linux Journal . 2023-12-20閲覧。
- ^ marc.info
- ^ linux-kongress.org
- ^ 「GGI を使用したソフトウェア」。ibiblio 。2023年 12 月 20 日閲覧。
- ^ Beck, Andreas (1998-09-01). 「LibGGI: Yet Another Graphics API」. Linux Journal . 2023-12-20閲覧。
- ^ Amstutz, Peter (2002-08-09). 「LDE - Linux Doom Editor」. Interreality . 2024年1月23日閲覧。
- ^ Duret-Lutz, Alexandre (2000 年 11 月)。「Heroes 0.7 の発表」。シンプルな DirectMedia レイヤー。
- ^ Payne, Dennis (2021-09-19). 「Inertia Blast」. Identical Software . 2024年1月21日閲覧。
- ^ Wilson, Hamish (2024-03-12). 「レトロLinuxゲーミングコンピューターの構築パート40:サイボーグプロジェクト」。GamingOnLinux 。2024年3月13日閲覧。
- ^ 「ソフトウェア発表」Linux Weekly News 2000-01-06 2024-01-21閲覧。
- ^ 「FAQ: SDL の使用」. wiki.libsdl.org .
- GGI プロジェクトよくある質問リスト 2006-07-09 にWayback Machineでアーカイブされました
- Linux Weekly News - 1998年2月26日、セクション: カーネル
- GGI プロジェクトは Linux では不満
- Christopher Browne の Web ページ: X ウィンドウ システム、15. GGI - 汎用グラフィカル インターフェイス
- ピーター・アムストッツ: GGI プロジェクトの概要 1998
- Linux-GGI プロジェクト 2006-11-03 にWayback MachineでアーカイブLinuxJournal の記事 (Steffen Seeger と Andreas Beck 著、1996 年)
外部リンク
- GGI プロジェクト ウェブページ
- 「GGI」。フリーコード。
