2009-03-07 12 views
18

私はGTK、QT、またはその他のグラフィックツールキットの目的を理解しています。しかし、私はOpenGLの役割を理解していません。それは別のGUIライブラリですか、それとももっと基本的なものを指していますか?もしそうなら、それは何であり、毎日のハッキングでそれをいつ使うべきですか?OpenGL、GTK、QTライブラリの違いは何ですか?

答えて

26

OpenGLはグラフィックスを低レベルで描画するためのライブラリです。主に3Dグラフィックスで優れています。 OpenGLの最も重要な競合相手は、Direct3Dです(ではなく、DirectX全体で)。

GLはハードウェアアクセラレーションがある場合にのみ非常に強力です。現在、ほとんどすべてのデスクトップまたはラップトップソリューションにはGLアクセラレーションが搭載されていますが、グラフィックスカードがチップセットに統合されているシステムではまだまだ遅いです。

日ごとのハッキングの場合、GLは多くの異常な目的に役立ちます。その理由は、グラフィック関連タスクにGPUの処理能力を活用できるからです。グラフィカルでないものについては、CUDAのような新しい言語もGPUにアクセスするために存在します。

GLの本当の強みは、3Dシーンレンダリングにありますが、2D操作や構図にもよく使用されます。その理由は、グラフィックスカードの2Dアクセラレーションアーキテクチャは、しばしばGLのパワー(自由)または性能に達しないからです。そのため、これらのタスクの特定の2Dアクセラレーションが利用可能であっても、GLがビデオ出力(主にスケーリング)やブレンドタスクに使用されることがあります。 Mac OS Xは、CPU全体の負荷をかけずに魅力的なエフェクトを実現するために、GL全体を通してレンダリングされるデスクトップ全体の重要な例です(オプション)。しかし、アンチエイリアス処理されたテキストグリフをテクスチャ付きの背景にブレンドするためにも使用できます。

グラフィックスでパフォーマンスが重要なタスクを実行するとすぐに、GPUを手助けして(画面に描画しなくても可能です)、OpenGLはクリーンで標準化されたクロスプラットフォームの回答ですあなたの必要に応じて。今日のGUIツールキットでは、ほとんどの場合、GPUアクセラレーションの描画は提供されませんが、ウィジェットにGLレンダリングが組み込まれています。だからあなたは、UI描画のためにそれらを使用し、それが合うところであなたのパフォーマンスクリティカルなリアルタイムのグラフィックスを含めることができます。 GLの中に全体のUIを構築するのは苦痛ですが、そのためのソリューションもあります(典型的な使用例は、ゲーム内のUIを持つゲームです)。

+0

2Dアクセラレーションが一般的に遅いのはなぜですか? 2つの軸だけで物事が速く進むのは理にかなっていませんか? – mk12

+1

まず、より複雑な行列演算のように、3Dにおける追加の演算のほとんどは、基本的にハードウェアで実装されるため、より単純な2D演算と比べて「無料」です。描画自体は、両方の場合の2Dで行われます(Scanlineアルゴリズムを参照)。第2に、3Dアクセラレーションは、GPUベンダーが2Dハードウェアアクセラレーションではなく、GLとDirectXのドライバーを最適化するためにはるかに多くの労力を要するため、一般的に高速です。特にWindows以外のプラットフォームの場合ほとんどのGPUベンチマークは3Dゲームベンチマークです。それが市場における競争が起こる場所です。 – ypnos

15

これはもっと基本的なものです。 OpenGLを使用すると、低レベルの描画を行うことができます(「ボタンを描くのではなく、ここから線を描く」と考える)。 OpenGLの操作もハードウェアアクセラレーションが必要なため、非常に効率的です。また、OpenGL APIを使用すると、3Dで簡単に作業できます。

OpenGLとQTやGTKのようなGUIツールキットを選択するかどうかは、アプリケーションのUI要素を描画するか、グラフィックの描画方法を細かく制御するかによって大きく異なります。

GUIツールキットでは、画面上の要素を描画するために、カバーの下にOpenGLを採用することがあります。

6

OpenGLは、より複雑なユーザ向けグラフィックスライブラリが構築されるグラフィックスAPIです。グラフィックス開発、特に3Dグラフィックスに興味があるなら、知り合いになる価値があります。それは、現実的な大気のレンダリングを扱うために、Quakeをレンダーすることを通して、線を描画することから、すべてを行うことができる非常に強力なシステムです。

OpenGL関連のすべての出発点はOpenGL.orgで、必要なものすべてにリンクしています。

あなたが教科書を好んでいて、それがOpenGLの悪い考えではない場合、最終的なテキストは「The OpenGL programming guide」です。その表紙の意味で「The Red Book」と呼ばれています。OpenGLシェーディング言語(またはThe Orange Book)でこれを補足したいと思うかもしれません。

OpenGLの素晴らしい点の1つは、ほとんどの言語でバインドされた簡単なテストツールキット(GLUT)があり、実験や一般的にハックアップして起動するのが非常に簡単だということです。

あなたのティーポットをレンダリングしてください!

4

GTK、QT、MFC、wxwidgetなどは、ダイアログボックス、ウィジェット、ボタンなどのコントロールを提供し、GUIアプリケーションを作成します。

一般的に提供するコントロールの1つは、グラフィックコマンド(描画線、円を描くなど)で描画できるキャンバスです。おそらくOpenGLコマンドを使って描画できるOpenGLキャンバスも提供しています。

OpenGLは(簡単な言葉でいうと)3Dオブジェクトを表示するための言語ですが、それは非常に強力で、クロスプラットフォームで、やや複雑です(特に、数学が弱い場合)!しかし、あなた自身のもの!時には、特に何かが間違っていて、空白の画面を描いてしまった場合、それは時折イライラすることがあります。

ちょっと複雑にするために、OpenGLで書かれたウィンドウツールキットもあります.OpenGLはボタンやダイアログなどをシーンに提供しています。何かに使われているすべてのGUI要素QTのようなものはOpenGLによって実際に描画されています!

関連する問題