問題タブ [bufferstrategy]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
71 参照

java - BufferStrategy FrameBuffer をカスタム バッファと交換する

私は、バッファである 2D float 配列を含む Java カラー バッファ クラスを作成しました。ここで、JFrame/Canvas の BufferStrategy からのバッファーをバッファーと交換したいと考えています。これを行うには、drawLine を使用してバッファーの各ピクセルを画面に描画します。

これを行うより良い方法はありますか?これを使用すると、パフォーマンスが本当に低くなります。

0 投票する
1 に答える
239 参照

java - BufferStrategyを使用してJavaで画像をフリックする

BufferStrategy と Graphics2D を使用して画像をレンダリングしようとしています。コードは正常に動作しますが、画像がちらつきます。Graphics2D でテストする前に、Graphics でのみ試してみましたが、Frame はちらつきました。コードは次のとおりです。

(下手な英語でごめんなさい)

0 投票する
1 に答える
1101 参照

java - BufferStrategy 画面の描画と更新

個々の長方形(塗りつぶされていない)を並べて描画して床を作り、床全体を一定の速度で左に動かそうとしています。ここでの私の問題は、左に移動すると画面が更新されないか、前の画面が削除されないため、数秒後に長方形のセットが無地になることです。

ここに私のコードがあります。画面をロードして値を更新し、古い画面を削除して新しい画面を表示する方法を知りたいですか?

フレームクラス:

ゲームクラス:

0 投票する
1 に答える
1310 参照

java - AWT Canvas BufferStrategy とサイズ変更のちらつき

互換性を最大限に高めるために、Java2D を使用して単純なゲームを作成しようとしています。Mac OS X Yosemite の Java 8 では問題なく動作しますが、Windows 7 で同じコードを試してみると、それほど滑らかではありません。

私のアプリケーションは BufferStrategy で AWT Canvas を使用し、このように動作します。環境内で何かが移動すると、別のスレッドが repaint を呼び出します。しかし、ウィンドウのサイズ変更処理については、私の戦略は次のとおりです。

たぶん、BufferStrategy を正しい方法で使用していないのでしょうか?

0 投票する
2 に答える
325 参照

java - Swing では、適切にペイントするために createBufferStrategy(2) が必要です

画面に 1 つずつ描画されるグリッドがいくつかあります。矢印キーを使用して、グリッドをグループとして移動します。Swing はデフォルトで doubleBuffered であると言われているので、これframe.createBufferStrategy(2)は悪い習慣だと思いますが、問題は、手動のダブル バッファリングを使用しない場合、グリッドがずれてグリッド間にいくつかの穴が現れることです。手動のダブルバッファリングを使用すると修正されます。

また、実際のプログラム (SSCCE ではない) でグラフィックの問題 (ダイアログのボタンが正しく表示されないなど) が発生しているため、ダブルバッファリングの不適切な実装が原因である可能性があると考えました。

以下はプログラムの SSCCE で、手動でダブル バッファリングしないとグリッドがずれます。

swing の Oracle チュートリアルでは、ゲーム ループでの使用法について説明していません。それを行う最良の方法は何ですか?私は何か間違ったことをしていますか?

他のコンピューターで視覚的なエラーが再現されない場合に備えて、スクリーンショットをアップロードします。 これらの黒い線は発生しないはずです。 黒い線は、長方形の誤用が原因です。手動ダブル バッファリングが true に設定されている場合、それらは存在しません。

前もって感謝します。

編集:グリッドが移動しているときに黒い線が発生することを忘れていました。

また、手動のダブルバッファリングがパフォーマンスを大幅に低下させることも発見しました。

編集 2: 問題を修正し、回答として投稿しましたが、コードに自由にコメントしてください。メイン クラス (gameLoop を除く) は、プログラムで使用する実際のメイン クラスに似ています。

0 投票する
1 に答える
236 参照

java - BufferStrategy が JFrame に常に表示されるとは限らない

BufferStrategyオブジェクトによって作成されたを使用してJFrame形状をペイントするアプリケーションがあります。コードは非常に標準的で、他の場所で見つけることができます。

関数looooooooopは、実際に描画が行われている場所です。

現在、問題は、アプリケーションが起動して正常に実行される時間の約 75% であり、残りの 25% の時間はフレームが表示されますが、フレームの背景色しか表示されず、グラフィック オブジェクトが描画されていないようです。画面上の何でも。私はデバッグを試み、この問題が発生しているかどうかを調べましたが、そうするのは本当に難しいです。私はそれが別のスレッドで実行されているロジックループと関係があると考えています(おそらくこれはアプリケーションの一貫性のない性質を説明しています)が、うまくいきませんでした. この問題は誰にとってもおなじみのように聞こえますか? ありがとう!

編集- 別のスレッドを削除した後も、これはまだ発生しているため、それが原因ではありません。

編集 2 - フルスクリーン モードが有効になっている場合にのみ発生しているようです (への呼び出しの有無にかかわらずsetVisible()):

これは既知の問題ですか、それとも何か不足していますか? ありがとう!

編集 3 - これは Ubuntu でのみ発生しています - 力ずくで検証されています。バグに関してオンラインで何も見つからないため、どう考えればよいかわかりません。

0 投票する
1 に答える
386 参照

java - JFrame を引数として BufferStrategy の JPanel サブクラスに渡します

メイン フレーム (JFrame) を持つクラスと、OvalPanelClass という JPanel サブクラスであるクラスを持つアプリケーションを作成しています。メイン フレームと言うのは、ユーザーが別の JFrame (ウィンドウ) を開くオプションがあるためです。この OvalPanelClass は動的で、BufferStrategy を使用して画像を表示します。場合によっては別の JFrame で起動されることもあれば、メイン フレームの右下のセクションに表示されることもあるため、このクラスをメイン フレームを含むクラスの内部クラスにする意味がないと感じました。 .

問題は、この JPanel が JFrame を持つクラスの一部ではないため、BufferStrategy などを取得するための呼び出しを行うことができないことです。これを乗り越えるために、メイン フレームへの参照を OvalPanelClass コンストラクタに渡そうとしましたが、結果が得られません。私の質問は、私の推論に欠陥があるのは何ですか?

FrameClass

OvalPanelCanvas

御時間ありがとうございます!私はプロジェクトが何であるかについて漠然としていて、関係のない詳細であると感じたものを取り除きましたが、さらにコンテキストが必要な場合はお知らせください.