OpenGLに適したGUIですか?[閉まっている]


65

Superbibleを使用してFreeGLUTでOpenGLを学習し始め、スキルを磨くために基本的なグラフィックスから得た知識を使用しています。

この経験をさらに活用するために、FreeGLUTが使用するものを上書きするためにGUIを統合したいのですが、今私の質問は次のとおりです。

ライブラリのいくつかの特徴:

  • オープンソース
  • マルチプラットフォーム(LinuxおよびWindows)
  • C / C ++

他に推奨事項がある場合は、私の問題に対する回答とともに自由に投稿してください。


2
OpenGLはいつからデフォルトでGUIを使用しますか?:L
共産主義者ダック

私が使っていたライブラリ、別名FreeGLUTと言ってもいいでしょう。
クリスティーナ

報奨金の追加-追加要件:クロスプラットフォームのファイルIOダイアログが必要です。
ジャリコンパ

1
sourceforgeでは、小さなファイルダイアログにいくつかのモーダル関数呼び出しがあります。プロジェクトに追加するシンプルなC C ++クロスプラットフォームファイルです。
tinyfiledialogs

回答:


33

私はまだ自分で試していませんが、これは非常に興味深いようです

librocket

編集:レンダリングするコンテキストが必要なので、SFMLまたはSDL 1.3をお勧めします。


確かにそれは面白そうに見えるん
ウィル

2
私はlibRocketを使用していますが、それは絶対に素晴らしいです!ライブラリにはHTMLの痛みもありますが、だまされて、事実上何でも回避できます:D-
グリムショー

停滞しているようです(数年間は更新されていません)。また、ドキュメントを閲覧しても、実際にどのようなものであるかを実際に確認することはできません。ドキュメントは一般に低すぎるレベルです。
ジャリコンパ

FedoraやUbuntuの公式パッケージもありません(私が見る限り)。
ilent2

GLFWを試してレンダーコンテキストを作成することもできます

19

Crazy EddieのGUI(CEGUI)は人気があり、既存のレンダラーバックエンドのいずれかを使用するか、OpenGLがサポートするAPIを使用して独自のターゲットを記述できます。オープンソース、マルチプラットフォーム、C ++です。ただし、一貫性を重視しています。これは常にゲームのUIの原則として適切ではないため、1か所で多数のカスタムコントロールが使用される場合があります。

最近人気のあるパターンは、即時モードGUI(IMGUI)です。これは、「GUIライブラリなし」のようなものです。プラスとマイナスがあります-非常に簡単ですが、最適化が難しい場合があり、コンボボックスやツリービューなどの高度なコントロール用の本当に良いIMGUIモデルをまだ見ていません。IMGUIウィンドウシステムの良い実装も見ていません(そして、私はそれを書くのに少し時間を費やしましたが、私は決して満足していませんでした)-しかし、それは単純なHUD要素に優れており、1回限りの制御を行うのは簡単です。


2
私は最近IMGUIを初めて経験しましたが、これは大きな後退ステップだと感じました。あなたが言うように、それは単純なHUDまたは静的ツールバーには素晴らしいですが、アーティストやデザイナーにレイアウトを作成させることに対して動的で敵対的であり、プレゼンテーションとロジックコードを1つの場所で一緒に変更することを強制するものにはかなりひどいです。
カイロタン

11
-1。CEGUIが存在し、人々がそれをデフォルトのgoto(このような)として言及しているという理由だけで、CEGUIが人気があると感じています。私はそれを使用したとき、私はそれを厄介で非常に不格好だと感じました。
ボボボボ

@bobobobo同意しました。存在するため人気があります。これはogreの「公式」GUI(それが何を意味するにせよ)ですが、コーディングするのは非常に面倒です。また、RAD gui builderは非常にバグが多い(まだ開発中)。
cheshirekow

1
親愛なるimguiは、多用途のIMGUIの優れた例のようです。まだ試していませんが、非常に有望です。
legends2k

13

私は最近グウェンに出くわしました。これは、Gary's Modの作者によって書かれたGUIライブラリです。優れたゲームライブラリがそうであるように、MITライセンスです。
グウェンのロゴ
ライブラリにはいくつかのことがあります。

  • 大規模なウィジェットセット
    Gwenは数年前から開発中であり、それが示しています。
  • バックエンドレンダラーの簡単なカスタマイズ
    これは大きなものです。ライブラリには、OpenGLレンダラーが再構築されています。ただし、レンダラーの作成は非常に簡単なので、ゲームのレンダーシステムに固有のレンダラーを作成する必要があります。
  • 少ない充填
    グウェンは、ゲームGUI者の軽い側にあると思われます。XML、HTMLレンダラー、単純なC ++はありません。Gwenは画像ローダーも同梱していません。レンダラーバックエンドが読み込みを処理することを想定しています。ライブラリを小さく保ち、ゲームのレンダリングシステムがテクスチャをすでに管理しているため、この機能が気に入っています。
  • Skinable
    マイルストーンの最初のものではありませんが、最終的にはGUIをゲームに合わせてカスタマイズする必要があります。
  • C ++スキニング
    私はWeb開発者ではなく、html css中心のGUIが難しいと感じています。
  • 入力インジェクション
    これはゲームにとって大きなものです。入力ポーリングを所有したいGUIシステムを使用するのは常に苦痛です。
  • クロスプラットフォーム
    ライブラリはクロスプラットフォームになるよう努めていますが、使用頻度の低いプラットフォームで問題が見つかる可能性があることを認めています。
  • 積極的に開発
    さらに、それははるかに実用的であるCEGUIまたはMyGUIはそれをハックやパッチを提出するよりもはるかに小さいです。

ただし、ここでの短所は次のとおりです。

  • ドキュメントの単一ページはありません。ウェブサイトではなく、githubリポジトリだけです。
  • パッケージ化されたレンダラーには移植性がないため、必要な場合は独自のレンダラーを作成する必要があります。
  • ???

2
ポータブルではないドキュメント(まだ)、OpenGLバックエンド、未完成など。
ヤリコンパ

ドキュメントが不足していることに同意します。コアライブラリはクロスプラットフォームです。ただし、他のプラットフォームではレンダラーと入力システムが不足しています。私にとっては、レンダリングシステムに合わせて調整されたレンダラーを構築したので、それは問題ではありません。
deft_code

1
xaml / html / cssを持たないことはプラスではありません。それがこれらの目的のために作られたものであり、C ++よりもはるかに優れています。
user441521

7

返信が遅くなってすみませんが、GGと呼ばれるOpenGL UIフレームワークをご覧ください。GGはFreeOrionプロジェクトの一部として開発され、SVNリポジトリ(およびダウンロード可能なSDK)に含まれています。かなり能力があるようです。以下にスクリーンショットを掲載しました。画像をクリックしてフルバージョンを表示できます。

FreeOrionのGGベースのUIのスクリーンショット


GGはsourceforgeの別のプロジェクトgigiに移動されたようです。
deft_code

驚かないでしょう。彼らは意図的にFreeOrionから切り離したままにしました。
マイクストロベル

私はちょうどそれに一晩を費やしただけで、本当に、本当にCMakeファイルが必要です。ルックアンドフィールが気に入っていますが、Boostを使用するのは好きではありません。
knight666

GGはここにあります:gigi.sourceforge.net
MichaelHouse

それをWindowsでビルドできるように頑張ってください。
3Dave 14年


4

AntTweakBarを見てください。これはCinderによって使用されています。作業中のCinder用に開発された新しいGUIライブラリ、SimpleGUIもあります。

あなたはHTML + CSSを移動したい場合がありAwesomium(で使用される彼らのオーバーグロースゲームでWolfireゲーム)と呼ばれる無料の代替バークリウムは


AntTweakBarは素晴らしいですが、かなり制限されています。値の微調整と非常に簡単な統合-汎用UIツールキットとしては役に立たない-設計目的には最適です。
ジャリコンパ

3

私はQuickGUIMyGUIの両方をいじっていました。どちらも最近、ogre要件を削除したOgre GUIライブラリです。どちらもまだあまり経験がありませんが、QuickGUIはずっと小さくてシンプルなので、QuickGUIを使い続けるようです。

QuickGUI wikiが最新のOgreフリーバージョンを指すようにまだ更新されているかどうかはわかりません。これが最新リリースです。

http://www.stormsonggames.com/downloads/QuickGUI_10_8.zip

リポジトリにはクロスプラットフォームの更新がいくつか見られているため、svnを直接使用する方が良いでしょう。

http://stormsonggames.com/svn/SSE/Gaia2/QuickGUI
http://stormsonggames.com/svn/SSE/Gaia2/QuickGUIOgreDemo
http://stormsonggames.com/svn/SSE/Gaia2/QuickGUIOgrePlatform

ユーザー名:匿名
パスワード:QuickGUI

最後に、異なるレンダリングバックエンドを追加する方法に関する短いwikiがあります。 http://www.ogre3d.org/tikiwiki/QuickGUI+Integration+Tutorial

MyGUIは、肥大化するという犠牲を払ってより多くの機能を備えているようです。そして正直なところ、シンプルさが要求されない場合、CEGUIは MyGUIを使い果たします。


私はMyGUIを試してみましたが、実際には非常に肥大化しているため、スペースを節約したい場合はお勧めしません。QuickGUIを機能させるためにいじっています。
クリスティーナ

1
私は両方とも試してみましたが、CEGUIを最も長い間使用しましたが、大量のテキストで極端に遅いことは言うまでもなく、それはまったく恐ろしいことでした。私は最近MyGUIに切り替えましたが、うまく機能しています。彼らのレイアウトとスキンエディタは非常にきれいです。肥大化についてはわかりませんが、CEGUIは比較するとかなり肥大化していると思います。MyGUIのプラクティスのいくつかは奇妙です(たとえば、デリゲートを割り当てるための+ =演算子、キャストも奇妙な方法で行われます-作成者は積極的に開発し、素晴らしい提案を聞いています)全体的に私はそれを好むCEGUI。
サマーサ

@Samaursa + =演算子は、複数のデリゲートを追加できることを意味します。
オセロット

3

QTはクロスプラットフォーム、C ++であり、LGPLライセンスでオープンソースバージョンを入手できるため、QTをお勧めします。また、使いやすく、使用できる多くのコンポーネントがあらかじめ用意されています。


6
これがOpenGLベースのUIだとは思わないでください。
-DeadMG

OpenGLベースである必要があるとは言いませんか、または質問を完全に誤解していますか?彼がfreeGLUTを引き継ぐものを望んでいないので、私はそれを読みました。
マルティエット

私はこれに次ぐだろう!私はqtを使用しており、起動時に必要なものはほぼすべて揃っています。長年にわたって非常に安定しており、良いサポートを受けています。また、gluonと呼ばれるゲームのフレームワークもあります。
Brainydexter

8
QTとフレームワークの一般的な問題は、メインループを制御することです。それは通常、ゲーム自体に適していません。
deft_code

1
UIがOpenGLでない場合は、イベントベースのUIと、ゲーム+グラフィックのイベントとタイマーを使用して、メインループを取り除くことをお勧めします。とにかく、私はQTを使用しましたが、お勧めしません。
ダニーヴァロッド

3

クリエーターはそう言って私を撃つかもしれませんが、クロスプラットフォームのGUIフレームワークを作成するのにGLFWは素晴らしいと思いました。GLFWの開発者は、GLFWがGUIを処理していないことを続けています。それはないしかし、グラフィックス、イベントやマウス/キーボード/ジョイスティックのタスクを処理する、素敵な、シンプルでクリーンで完全にポータブル仕事をします。

GLFWの良い点は、かなり小さいこと、システム固有のコード、GLUT 必要とせず、よく管理されていることです。これまでのところ、OpenGL 4.1プロジェクトでの使用は安定しています。SDLのようなものと比較して、私は小さなオーバーヘッドが好きで、GUIハンドラクラスを書くのは簡単でした。

または、FLTKをご覧ください。あらゆる種類のものに使用でき、非常に簡単に再利用できます。これは実際にアプリケーションの構築に使用されますが、3Dオブジェクトを完全に処理でき、OpenGL上に構築されます。非常に小さく、十分にサポートされており、ゲームデザインレベルでカスタムインターフェイスを作成している人はあまりいませんが、うまくいくように見える人もいます。


1
glfwは、デスクトッププラットフォームでウィンドウコードを抽象化するための単なるライブラリではありませんか?どのようにしてグラフィックを作成できますか?

1
@GabrieleViertiは、クロスプラットフォームの高速化された入力も処理できると言っていました。それを超えて、より具体的には、必要最低限​​のOpenGLまたはVulkanコンテキストを取得するのに役立ち、多くの定型文を処理します。コンテキストでは、画面上にホットスポットのヒストグラムピラミッドを実装し、それをクリック/タイプイベントハンドラーの主要部分として使用します。次に、ピラミッドのどこかにコントロールが関連付けられます。実際のグラフィックを設定するための通常の描画コマンド。ウェブのものが罰金以上のドメイン固有の芸術の作品のための任意のUIキット
Garet Claborn

作成済みのguiフレームワーク(親愛なるImGuiなど)を追加する方がはるかに簡単だろう

1
ImGuiは即時モードで動作するため、ハードウェアアクセラレーションが失われます。私が言及したことは、ゲームレンダリングのためにとにかく追跡しなければならなかったので、いくつかの2Dオーバーレイを追加することは大きな考慮事項ではありませんでした。それはしかし、いくつかのプロジェクトのため面倒になりますどのように私は見ることができます
Garet Claborn
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.