問題タブ [double-buffering]
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.
windows - デスクトップ コンポジションが有効な場合、ダブル バッファリングは必要ですか?
デスクトップ コンポジションが有効になっている場合でも、ダブル バッファリングは必要ですか?
Microsoft のアプリケーション互換性ガイド:
グラフィカル デバイス インターフェイス (GDI)
Windows Vista および Windows Server 2008 より前は、ウィンドウ ハンドル (HWND) が画面に直接描画されていました。これには一定の利点がありましたが、Windows がトップレベル ウィンドウを表示および管理する方法は制限されていました。Windows Vista および Windows Server 2008 では、すべての最上位ウィンドウがオフスクリーン ビットマップ (WS_EX_LAYERED と同様) にレンダリングされ、デスクトップ ウィンドウ マネージャーが画像を組み合わせてデスクトップを描画します。
すべてのレンダリングがオフスクリーン ビットマップに対して行われるようになりました。
ウィンドウはオフスクリーン ビットマップにレンダリングされます
これは正しいです?
私が尋ねる理由は、標準のペイント サイクル中にまだちらつきが見られるためです。
- WM_ERASEBKGND
- WM_PAINT
デスクトップ コンポジションが有効になっている場合:
私はへの呼び出しの間にそれを想定していたでしょう
すべての描画がバック バッファーで行われることを確認します。
ウィンドウはオフスクリーン ビットマップにレンダリングされます
一方、フロント バッファは影響を受けません。
javascript - HTML5/Canvas はダブル バッファリングをサポートしていますか?
私がやりたいのは、グラフィックスをバッファーに描画し、それをそのままキャンバスにコピーして、アニメーションを実行し、ちらつきを回避できるようにすることです。しかし、私はこのオプションを見つけることができませんでした。どうすればこれを実行できるか知っている人はいますか?
c++ - WinAPIダブルバッファリング
デフォルトのwinAPIアプリケーションにはダブルバッファリングがありません。代わりに、描画する必要があるものだけが描画され、シームレスな外観が得られるようにするという非常に優れた機能を果たします。ただし、ウィンドウのサイズを変更すると、全体を再描画する必要があります。これにより、コントロール間、タブの背景、場合によってはタブの白がちらつきます。
だから私の質問は、私のアプリケーションでダブルバッファリングをサポートする最も簡単な方法は何ですか?
c++ - ダブルバッファリング
さて、私のアプリケーションには、たくさんの winAPI といくつかのカスタム コントロールがあります。わーい...
現在、通常、アニメーション、状態の変更などのために静かに再描画するだけで、すべて正常に機能します。
しかし、私は fix() と呼ばれるクラス Window のメソッドを持っています。これは、ウィンドウ全体を更新する必要があるたびに呼び出されます。コントロールのサイズを変更し、ウィンドウを無効にします。
これが発生すると、背景が描画され、次にタブ コントロールが描画され、その上に他のすべてが描画されます。これにより、特にウィンドウのサイズを変更するときに、非常にいらいらするまばたきが発生します (fix() が常に呼び出されるため)。
私が試したこと:
- WS_EX_COMPOSITED。これは、個々のコントロールをダブル バッファリングするだけです。改善されていますが、ちらつきは避けられません。
- 背景描画をオフにします。問題をほとんど解決せず、実際に事態を悪化させます。
だから:ウィンドウ全体をダブルバッファリングできるようにするためのテクニック/方法/何でも必要です。WM_PAINT メッセージを自分で処理することが解決策になるかもしれないと考えましたが、どこから始めればよいかわかりません。これも仕方のないことなのかな…という感じです。
助けてください、これは重大な問題です。この愚かな小さな問題が修正されると、私は非常に安心します.
java - Java Buffer Strategy: コンパイラが気に入らない
キャンバスでダブルバッファリングを使用しようとしていますが、これはこれまでに行ったことのないことです。オンラインのチュートリアルを利用して、次のコードをセットアップしてキャンバスをインスタンス化し、そのバッファリングをセットアップしました。グラフィックのレンダリング (ここには示されていません) を含む完全なプロセスをコーディングし、コンパイラーはそれを受け入れます。
しかし、プログラムは、以下のコードのフラグが立てられた行で爆発します。ランタイムは、「コンポーネントには有効なピアが必要です」という説明とともに、不正な状態の例外をスローします。
私が知る限り、ソース コードは基本的に、いくつかの例で見たとおりなので、ここで何が起こっているのかわかりません。どんな助けでも大歓迎です。
ありがとう、
ジョン・ドナー
javascript - HTMLキャンバスのダブルバッファリングのフレームレートの問題
3つの画像が描かれたフルスクリーンのキャンバスがあります。ウィンドウのサイズを変更すると、これらの画像の位置が変わります。ただし、Firefoxではさらに問題が発生するようです。
ダブルバッファリングでこの問題が解決するはずだと読んでいますが、次の位置が不明な場合にダブルバッファリングを行うにはどうすればよいのでしょうか。つまり、将来何をバッファリングする必要があるかを判断できないので、これはどのように可能でしょうか?
これは実行可能と思われる情報源の1つですが、Fedorが説明しようとしている概念を完全には理解していません。
HTML5 / Canvasはダブルバッファリングをサポートしていますか?
これまでのところ、
android - SurfaceView から派生したカスタム ビューのパフォーマンスを改善しますか?
から派生したカスタム ビューを使用して迷路を描画する単純な Android アプリケーションを作成しましたSurfaceView
。LunarLander サンプル アプリケーションのモデルに従い、バックグラウンド スレッドを使用してすべての計算と描画をSurfaceHolder
オブジェクトに直接実行します。
すべて順調で、小規模/中規模の迷路ではうまく動作していますが、迷路のセル サイズを 8 ピクセルに設定すると、アプリケーションがクロールする迷路内に多数のセルが存在します。
コードは、変更されていない場合でもすべてのセルを描画するという点で、私が気に入らないことを行っています。これは、SurfaceView
ダブルバッファーからの画面のちらつきを避けるために必要です (アプリケーションの以前の反復では、変更されたものだけを描画していました。びくびくした混乱をもたらしました)。
そのとき私が望むのは、使用する機能ですが、SurfaceView
描画されるものをより選択的にする機能です。これは可能ですか?そうでない場合、代替手段は何ですか?オフスクリーン ビットマップを保持し、最初にそこに選択的に描画するのはどうですか?
編集: オフスクリーンBitmap
とCanvas
組み合わせを実装し、タイマー駆動のステート マシンによって書き込まれ、カービング/ソリューション中に影響を受ける領域のみを描画しました。次に、画面外のビットマップ全体をメソッドSurfaceView
内に描画するだけでrun()
、問題は解決しました。セル サイズを 5 ピクセルに下げることができ、パフォーマンスは問題ありません。
winapi - C++ win32 プロジェクトのダブル バッファリング
私は win32 アプリケーションを持っていて、マウスをドラッグして線を引きたいと思っています。私もダブルバッファリングを使用していますが、問題はマウスのパスに複数の行が描画されることです。ここに私の描画コードがあります:
また、線を描画する前に背景をバッファにコピーしないようにしましたが、線は正しく描画されますが、新しい線を描画すると、以前に描画された線が消えます。では、ダブルバッファリングを使用して複数の線を描画し、以前に描画した線を保持するにはどうすればよいですか?
iphone - iPhone opengl ESはフレームバッファをレンダバッファにコピーします
皆さん、
私はopengl esでアニメーションに取り組んでいます。アニメーションは正方形を描画する必要があります。これは既に機能していますが、フレームバッファからレンダバッファにコンテンツをコピーするにはどうすればよいですか。問題は、すべてのフレームで 1 つの正方形しか表示されないことです。
シミュレーターでテストしたところ、うまくいきました。新しいフレームごとに、既知の正方形が描画され、既に描画されている他の正方形はまだ画面に表示されます。しかし、デバイスでテストしたところ、機能しませんでした。画面が点滅するだけでした。
これは、他のすべてのコンピューターと同様に、私の Mac がダブルバッファリングを使用しているのに、iPhone が使用していないために発生すると思います。
私を助けてください。
これは、フレームバッファを設定する方法です:
setupView Methode も作成しました。
これは私の drawView Methode です:
const GLfloat squareVertices[] = { -1.0f, 1.0f, 0.0f, 1.0f, 1.0f, 0.0f, 1.0f, -1.0f, 0.0f, -1.0f, -1.0f, 0.0f };
c# - C#ダブルバッファリング?
私はCOSMOSコンパイラを使用してC#でOSを記述しています(COSMOSがILコードをx86アセンブリに変換することを知らない人向け)。GUIを作成しています。
以前にGUIを作成しましたが、現在はダブルバッファーを作成しようとしています。
かなり簡単に聞こえますが、以下が私の問題です。ライブラリ
のメソッドSystem.Drawing
や、p/呼び出しを使用する他の名前空間を使用できません。また、多次元配列は使用できません(通常の配列は使用できます)。だから私の質問は、どのようにダブルバッファを実装するのでしょうか?
私はそれをした誰かを知っているのでそれが可能であることを知っています。
さらに、私が持っている唯一のグラフィカル関数は、、SetPixel
およびGetPixel
ですClear
。私は答えを好みますが、ダブルバッファリングなどに関する良い記事を知っている人がいたら教えてください。
PS。320 x 200ResLOLの私のOS