私は、それぞれが異なるカメラからレンダリングされる3つのディスプレイを使用するC++3Dアプリケーションプロジェクトに挑戦しました。
最近、Ogre3Dについて学びましたが、さまざまなカメラ/さまざまなディスプレイ/GPUへの出力をサポートしているかどうかは不明です。
同様のセットアップとOgreまたは別のエンジンの経験がある人はいますか?
少なくともほとんどのシステム(Windows、MacOSなど)では、ウィンドウシステムは仮想デスクトップを作成し、さまざまなモニターがデスクトップのさまざまな部分にマップされます。必要に応じて、(たとえば)3つのディスプレイすべてをカバーする1つの大きなウィンドウを作成できます。そのウィンドウをOpenGLを使用するように設定すると、OpenGLを使用するほとんどすべて(ほぼ確実にOgre3Dを含む)が正常に機能しますが、場合によっては、それだけの出力解像度を生成すると、グラフィックカードに通常よりも少し遅くなるほどの負担がかかる可能性があります。
各ディスプレイで個別のウィンドウを処理する場合は、少し複雑になる可能性があります。OpenGL自体は、複数のウィンドウでの表示を処理する方法を定義しません(試みさえしません)。これは、プラットフォーム固有の関数のセット次第です。たとえば、Windowsでは、ウィンドウごとにレンダリングコンテキストがありWGLMakeCurrent
、いつでもどのレンダリングコンテキストに描画するかを選択するために使用する必要があります。
メモリが機能する場合、Ogre3DのWindowsポートは複数のレンダリングコンテキストをサポートしているため、これも問題にはなりません。他のシステムでも複数のウィンドウで動作することを期待していますが、他のシステムでは使用したことがないので、はっきりとは言えません。
ただし、私がすぐに推測するのは、トリプルモニターのサポートは、開発作業全体ではほとんど重要ではないということです。もちろん、それはあなたが(上司に言うことができる)開発とテストのためにトリプルモニターのセットアップが必要であることを意味します、それは確かに悪いことではありません!:-)
編集:OpenGL自体は、フルスクリーンウィンドウと通常のウィンドウについて何も指定していません。少なくともWindowsでフルスクリーンアプリケーションを取得するためにメモリが機能する場合は、を使用ChangeDisplaySettings
しCDS_FULLSCREEEN
ます。その後、基本的に仮想デスクトップ全体を単一のウィンドウとして扱います。しかし、複数のモニターでそれを行ったことを覚えていないので、はっきりとは言えません。
OGRE3D の場合のマルチヘッド サポートについては、いくつかのことが言えます。私の経験では、Ogre 1.6.1 のソース バージョンを使用し、このパッチを適用することが有効な解決策です。このパッチを使用して、ユーザーは6 台のモニター構成で Ogre アプリケーションをレンダリングすることができました。
個人的には、このパッチの適用に成功し、StereoManager プラグインと一緒に使用して、 Ogre アプリケーションを 3D プロジェクターに接続しました。Direct3D9 バックエンドのみを使用しました。StereoManager プラグインにはFresnel_Demo
、最初のマルチヘッド アプリケーションのセットアップに役立つ修正されたデモ ( ) が付属しています。
また、バージョン 1.7 の時点で、マルチヘッド パッチが Ogre コアの一部になっていることも付け加えておきます。Ogre1.7 は最近 RC1 としてリリースされたので、これが最も早く簡単に動作させる方法かもしれません。