2009-04-01 4 views
1

私は既存のOpenGLアプリケーション用にいくつかのHCIを実装しようとしたいと思います。可能であれば、メニューはバックグラウンドにある3Dグラフィックスの正面に表示されます。OpenGLでHCIを実装する良い方法は何ですか?

「カメラ」の直前に正方形を描き、「ベース」の正方形の上にテクスチャやその他のプリミティブを描くことを考えていました。

メニューがアクティブな間、カメラは移動できないので、カメラはメニューから見えなくなります。

これは誰にも聞こえないのですか、それとも正しいトラックにはありますか?他の人はどうやってそれをしますか?

答えて

1

私はちょうどglPushMatrixglLoadIdentityとなります。あなたの写真はglPopMatrixで、カメラの位置は心配しないでください。

ます。また、この(なし個人的な経験を)行うにはGLUIライブラリがあり、深さテスト、照明、など

1

を無効にし、再度有効にする必要があります
それとも、Qtのを使用している場合の方法がありますQtウィジェットをOpenGLモデルの上に透過的に描画することができます。また、openglのすべてのQtをレンダリングするためのベータサポートもあります。

1

また、すべての3Dレンダリングを行い、次に正投影に切り替えて、すべてのメニューオブジェクトを描画することもできます。これはあなたが示唆したように大きな広告掲示板にすべてを載せるよりはるかに簡単です。

this exerpt、具体的には見出し「投影変換」を参照してください。述べhereとして

1

、あなたはピクセル完璧なアライメントを得るために、xとyで0.375の翻訳を適用する必要があります。

glViewport(0, 0, width, height); 
glMatrixMode(GL_PROJECTION); 
glLoadIdentity(); 
gluOrtho2D(0, width, 0, height); 
glMatrixMode(GL_MODELVIEW); 
glLoadIdentity(); 
glTranslatef(0.375, 0.375, 0.0); 
/* render all primitives at integer positions */ 

アルゴリズムは単純です:

  1. はおそらく、あなたの3Dシーンを描きます深度テストを有効にします。
  2. GUI要素が3Dのものを描画するように深度テストを無効にします。
  3. 使用glPushMatrixあなたの現在のモデルビューおよび投影行列を格納するために(あなたがそれらを復元したいと仮定すると - それ以外の場合は、それらの上だけで切り札を)上記のコード
  4. ドローで説明したように、あなたのモデルビューおよび投影行列を設定
  5. このようにそれをやって

あなたのプッシュ行列(あなたがそれらをプッシュ仮定)を復元するためにあなたのUIのもの

  • 使用glPushMatrixはカメラ位置が不適切になり - 実際には、カメラが移動し、3D部品のように影響を受けるであろうと2Dオーバーレイは定位置にとどまります。私はこれがあなたが望むふるまいだと思っています。

  • 関連する問題