私はC ++で独自のゲームエンジンを構築しています。現在、使用するユーザーインターフェイスを決定しています。
ライブラリを使用する必要がありますか?自分で作るべきですか?
私はC ++で独自のゲームエンジンを構築しています。現在、使用するユーザーインターフェイスを決定しています。
ライブラリを使用する必要がありますか?自分で作るべきですか?
回答:
実際、QtウィジェットはOpenGLと統合でき、OpenGLはQt(QGLWidget)と簡単に統合できます。もちろん、プラットフォーム固有のウィジェットは探しているものとは異なる場合がありますが、心配する必要はありません。ウィジェットをカスタマイズする方法、独自のウィジェットを作成する方法、ニーズに合ったQt Quick(同様に統合できるはずです)。
興味のある方は、これらのリンクをお見逃しなく:ウィジェットは3番目の次元に入ります:WolfenQtとOpenGLでウィジェットを加速する
独自のライブラリを作成する必要はないと思います。ゲームエンジンを作成するタスクはそれだけで非常に大きくなります。
ゲームエンジンの場合は、即時モードのGUIを使用します。詳細はこちら:http : //www.mollyrocket.com/forums/viewtopic.php?t=134
重要なアイデアは、コンポーネントを描画し、同時に相互作用を制御することです。
if (button(id, position, size))
{
button_was_pressed();
}
たとえば、Unityは同様の概念を使用しています。
デモで使用されているNVIDIAによる実装を見つけることができます:http : //code.google.com/p/nvidia-widgets/
個人的には、CEGUIをお勧めします。それはオープンソースであり、かなり良いです。ただし、すべてを手作業で書き出すと、非常に冗長になる可能性があることに留意してください。
しかし、プラス面では、OpenGLとDirectXの両方のレンダラーがあります。私は通常使用するテンプレートの上にそれを置くことができました。テンプレートはVBOを使用してテクスチャに直接書き込みます(これは一種のハッキングです)。
問題のゲームは、ネットワーキングの割り当て用でした。割り当ては、ロビーを備えたネットワークゲームを行うことでした。ロビーが首の痛みになることは分かっていたので、ほとんどのことをしてくれた図書館を選びました。
ほとんどのGUIライブラリ(QtはおそらくWindows専用ではない最も人気のあるC ++ライブラリです)の問題は、ほとんどがエンジンにうまく統合されないことです。従来のGUIアプリでは、GUIライブラリがメインループを制御し、イベントにコールバックを接続するだけでした。ゲームエンジンでは、通常、ループを制御する必要があるため、せいぜいトリッキーになることがあります。たぶん、描画コントロールやダイアログなどを、それを渡す3Dコンテキストに単に処理するものを探しているのでしょうか?それらを見つけるのははるかに困難です:-/
私はあなた自身で書くことを強く信じていますが、それでも私は非常にオールドスクールです。あなたがしたいことをするためにさらに別のGUIライブラリと戦うことは私を夢中にさせる傾向があり、ほとんどのゲームGUIは非常に些細であるという事実に追加され、MDIとスーパーOOデザインに全面的に行く必要はありませんボタンには、スクロール可能な親指でチェックボックスの横にあるタスクバーにカーソルを合わせたときに強調表示するスクロールビューを含めることができます。さまざまな人のためのさまざまなストローク。
調査する価値のあるオプションの1つは、WebKitを使用してユーザーインターフェイスをレンダリングし、すべてのUIをCSS / HTML / Javascriptで実行することです。
IUP-ポータブルユーザーインターフェイスをお勧めします:http : //www.tecgraf.puc-rio.br/iup/
Luaプログラミング言語でのみ使用しましたが、非常に使いやすかったです。C、LED、Luaのフレーバーのみが付属していますが、簡単にラッパーを作成できます。
私は自分のゲームプロジェクトで個人的にCEGUIを使用していますが、これは非常に堅牢なソリューションです。問題は、時々、変更する大量のファイルを少し変更するような気がすることです。
私は使用していませんが、libRocketは完全に無料になり、すべてのライセンス料金とその他の料金は削除されました。このlibの素晴らしい点は、html / css構文で記述することです。http://librocket.com
Windows用のゲームを開発する場合は、Win32 APIを使用して、興味深い提案を挙げてください。通常のウィンドウコントロールを使用するだけです(ATL / WTLライブラリを使用することをお勧めします)が、それらをオーナー描画にします。
このテクニックは、最初にアンリアルトーナメントゲームで使用され、公開されているヘッダー(MODメーカー向け)を調べています。
これを行う主な利点の1つは、Windows UIインフラストラクチャ全体を自由に使用できること、およびキーボードの繰り返し速度、マウスの感度、ダブルクリック速度などのユーザー設定を維持することです。また、ルールに従うと、インターフェイスは高速でちらつきがなくなります。
欠点は、独自のグラフィックスと効果を適用できるように、ウィンドウコントロールをサブクラス化してオーナー描画にするためのコードを記述する必要があることです。
これをアイデアとして捨てるだけです。