3

私は現在、Javaを使用して通知アプリに取り組んでいます。

ウィンドウをアプリの上に短時間 (約 10 秒) 表示する必要があります。OpenGL と DirectX を実行するもの (コンピュータ ゲームなど) を含みます。JFrame.setAlwaysOnTop(true);がウィンドウ ベースの環境でのみ機能することはわかっていますが、OpenGL と DirectX はそうではありません。OpenGL バインディングについて考えましたが、DirectX については何も見つかりませんか?

おそらくJNIを使​​用することは可能ですか?どんなアイデアでも大歓迎です:-)

編集:回答ありがとうございますが、実際にはあきらめて、オーバーレイを作成しているゲームをウィンドウフルスクリーンモードで強制することにしました。ベータテスターがfpsの低下について何を言わなければならないかを待つ必要があります:-)ありがとう

4

2 に答える 2

0

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

openglの場合、探しているのはpanel / jframeとのcanvas統合であり、そのためにJOGLを使用できます。lwjglにも実装があると思いますが、joglの方が優れています。次に、そのjframeにalwaysOnTopを設定できます。

kenai.com/projects/jogl

于 2011-03-23T18:31:09.253 に答える
0

あなたの問題はあなたのコードではなく、代わりにグラフィックデバイスに関連しています。デバイスは、フル スクリーン モードでアクセラレートされたサーフェスを 1 つだけ持つことができます。これが、デュアル ヘッド GPU を使用している場合、フルスクリーンで 2 つの DirectX ゲームを起動できない理由です。

最善の策は、DX/OpenGL サーフェス ポインターを見つけて、必要な API を使用してそれにアタッチすることです。これが Java で実行できるかどうかはわかりませんが、アプローチは次のようになります。

  • 実行中のゲームまたはアプリのアクセラレーション サーフェスへのポインターを取得する
  • アクセラレートされたグラフィック デバイスを作成する
  • UI から非 mimpap テクスチャ (スクリーンショット) を作成する
  • テクスチャ サーフェスへのポインタを取得する
  • このサーフェスからステップ 1 で取得したサーフェスへのストレッチ長方形を使用します。
  • 現在

これにより、Vsync と各フレームの同期されたリフレッシュ レートの繰り返しを使用しない場合、ちらつきが発生する可能性があります。これにより、フレームレートが大幅に低下する可能性もあります。

この一例は、高速化されたアプリで現在のフレームレートを描画する FRAPS です。

于 2011-03-24T13:50:44.527 に答える