2011-01-26 2 views
3

私は現在、Javaを使用して通知アプリを開発中です。JFrameを常にアプリケーションの上に置くことは可能ですか? OpenGLとDirectXを実行していますか?

すべてのアプリのすぐ上にウィンドウが短く(約10秒)表示される必要があります。 OpenGLおよびDirectX(例えば、コンピュータゲーム)を実行するものを含む。私はJFrame.setAlwaysOnTop(true);がOpenGLとDirectXではないウィンドウベースの環境でのみ動作することを知っています。 OpenGLバインディングについて考えましたが、DirectXについては何も見つかりませんでしたか?

多分JNIを使​​用することは可能ですか? 任意のアイデアを歓迎します:-)

編集:回答ありがとうございましたが、実際にはそれをあきらめて、ウィンドウズフルスクリーンモードでオーバーレイを作っています。私はちょうど待って、ベータテスターがfpsの減少について言わなければならないものを見なければならないでしょう:-)ありがとうございました

+2

あなたはOpenGLについて間違います。 OpenGLにはフルスクリーンモードがありません。 OpenGLでは、アプリケーションがフルスクリーンの場合、通常のボーダーレスで装飾のないフルスクリーンウィンドウです。 – datenwolf

+0

よく.. JFrame.setAlwaysOnTop(true); OpenGLゲームが実行されているときに、トップにない。 (ゲームが開かれてから20秒後にJavaアプリが起動されます) – user498388

+0

フルスクリーンモードに切り替えることはできません。 – bestsss

答えて

0

directxとjavaを気にしないでください。これにはインピーダンスの不一致があります。 Javaはクロスプラットフォームであり、OpenGLはクロスプラットフォームです。 DirectXの使用を主張する場合は、ネイティブのオペレーティングシステムリソースを使用するため、SWTを試すことができます。

あなたが探しているものは、パネル/ jframeとのキャンバスの統合です。そのためにJOGLを使用できます。私はlwjglも実装されていると思うが、ジョグル1が良い。その後、そのjframeにalwaysOnTopを設定することができます。

kenai.com/projects/jogl

0

あなたの問題はあなたのコードに関連していないが、代わりにグラフィックデバイス。 デバイスはフルスクリーンモードで1つの加速面のみを持つことができます。これは、あなたがフルヘッドGPUを持っている場合、2つのDirectXゲームをフルスクリーンで起動できない理由です。

DX/OpenGLサーフェスポインタを見つけて、必要なAPIを使用してアタッチすることをお勧めします。これはアプローチが可能woulしかし、Javaで行うことができるかどうかはわからない:

  • が加速グラフィックデバイスを作成
  • を実行しているゲームやアプリの加速表面へのポインタを取得
  • 現在
  • ステップ1
  • にあなたが得たものに、この面からストレッチ矩形を使用し
  • テクスチャ表面へのポインタを取得
  • あなたのUIから非mimpapテクスチャ(スクリーンショット)を作成します

フレームごとにVsyncとリフレッシュレート同期の繰り返しを使用しないと、フリッカーが発生することがあります。これにより、実質的なフレームレート低下も導入される可能性がある。

この例の1つは、高速化されたアプリケーションに現在のフレームレートを描画するFRAPSです。

関連する問題