問題タブ [dirtyrectangle]

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 投票する
6 に答える
15934 参照

graphics - 汚い四角形

フレーム バッファの更新を最小限に抑えるための「ダーティ レクタングル」を計算するためのアルゴリズムの実装に関するリファレンスはどこにありますか? 任意の編集を許可し、表示の更新に必要な「ビット ブリット」操作の最小セットを計算する表示モデル。

0 投票する
3 に答える
1560 参照

optimization - ダーティな四角形の最適セット

ここでは、特定のプログラミング言語に依存しないアルゴリズムを探しています。

問題:

2 次元の表示領域があります (ピクセルの単純なバッファを考えてください)。定期的に、一部のピクセルが変更されます。変更されたすべてのピクセルをカプセル化する長方形のセットを見つける必要があります。

変更されたすべてのピクセルをカプセル化する、潜在的に大きい単一の四角形を計算することは簡単ですが、望ましくありません。むしろ、指定された最小サイズ (変更可能な変数) まで、複数の、より小さく、ぴったりと収まる四角形を使用したいと考えています。

たとえば、表示領域全体で、左上隅の数ピクセルと右下隅の数ピクセルが変化したとします。領域全体の 1 つのダーティな四角形を計算する必要はありません。代わりに、2 つのダーティな四角形が必要です。1 つは左上に、もう 1 つは右下にあります。

パフォーマンスは重要であるため、この質問です。

この問題は、間違いなくビデオコーデックとリモートデスクトップ圧縮領域で常に発生していると思います. 私の場合、共有領域で複数のユーザーが同時に描画するグラフィカルな画像操作中に繰り返し発生する問題です。

これについて公開されているアルゴリズムを知っている人、または過去に使用したソリューションを知っている人はいますか?

ありがとう!

0 投票する
3 に答える
522 参照

java - 特定の JPanel 領域のみを不透明としてマークする方法はありますか?

基本的に、私は透明な JPanel をたくさん描いています。プロファイリングは、ほとんどの時間が Component.paint() に費やされていることを示しています。ほとんどの場合、JPanel ごとの実際の非透過領域は非常に小さいため、たとえばエッジの周りなど、これを非常に根本的に最適化することが可能です。

現状では、RepaintManager はダーティな親領域が実際には不透明であり、コンポーネント階層を上っていくことがわからないため、コンポーネントを repainting() すると、すべての親の再描画がトリガーされます。markCompletelyClean()パネルが無効化されるたびにすべての親に電話をかけ、自分でダーティ リージョンを管理することを考えていましaddDirtyRegion()た。

ただし、JPanel の特定の四角形のみを不透明 (または透明、問題ではない) としてマークする、よりクリーンなアプローチはありますか?

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

javascript - Html5 キャンバスでのコンテンツのレンダリングの最適化

Html5キャンバスのグラフィックコンテキストを使用してビューの階層をレンダリングするオープンソースライブラリを開発しています。ただし、完全に不透明なコンテンツのレンダリングを高速化できるように、パフォーマンスを最適化したいと考えています。

そのようなロジックをどのように実装できますか?

そのようなシステムを実装する方法に関する有益なリソースまたはチュートリアルを知っていますか?

現在、私は ui-kit に似た基本的な描画モデルを使用しており、各ビューは画面上の長方形の領域を表しています。レンダリング エンジンはビュー オブジェクトとは別に実装され、再描画が必要なダーティ ビューを含むリストに基づいてコンテンツをレンダリングします。

編集:

ライブラリと現在のレンダリング システム
ライブラリは、グラフィックスを動的にレンダリングするキャンバス要素機能上の、いわゆるプラットフォームまたは抽象レイヤーです。現在、表示リストなどの管理の基本を実装していますが、まだ最適化されていません。

現在のレンダリング エンジンはバッファを使用しており、後でビューを再描画できるようにビューの描画コマンドをキャッシュしています。ただし、ビューが 1 つだけ無効になると、階層の再描画が必要になるため、描画にはオーバー ハルがあります。

画面コンテンツのダーティな四角形を管理するシステムを実装するにはどうすればよいですか?

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

raspberry-pi - Raspberry PI 上の XBMC のダーティ リージョン

私は raspberry pi を持っており、raspbmc.com から最新のスタンドアロンをロードしました。XBMC を使用すると、CPU 使用率が常に 90% を超えていることがわかります。XBMC wiki と FAQ を見ると、ダーティ リージョンは CPU 使用率を下げる一般的な方法のようです。

でファイルを作成しましadvancedsettings.xml/home/pi/.xbmc/userdata/。ファイルの内容は次のとおりです。

XBMC wiki で説明されているように、ダーティ リージョンのモード 1 と 2 を試しました。どちらの場合も、ダーティなリージョンのみが表示され、残りは黒であることがわかります。OpenElec wikiによると、これは2012年 8 月以降のビルドの既知の問題です。

さて、同じことを解決/回避するにはどうすればよいですか? HD ムービーを 1080p で実行しましたが、正常に動作します。しかし、重大な問題が発生する前に、RPi がどれだけの CPU 使用率を使用できるかについて少し心配しています。

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

java - Javaで画面の汚れた部分をキャプチャする方法は?

RDP アプリケーションを開発しています。サーバーは画面の汚れた部分を送信する必要があり、クライアントは画像のその部分を更新する必要があります。Robot クラスを使用して、デスクトップの全画面を次のように送信できます。

画面の汚れた部分をクライアントに送信したい場合、デスクトップ画面の汚れた領域を特定してその画面をキャプチャする方法。

Javaで画面のダーティ領域を特定する手順を教えてください。

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

java - 2 つの画像をピクセルごとに比較し、画像の汚れた部分から新しい画像をフレーム化する方法

robot.screenCapture()と frameを使用して画面をキャプチャしていますbufferedImage1。繰り返しますが、デスクトップの画面とフレームをキャプチャしていますbufferedImage2

bufferedImage1これらの 2 つの画像 (とbufferedImage2) をピクセルごとに比較する方法を教えてください。違いがある場合、異なる部分をどのようにフレーミングしますか?

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

android - ビットマップが Android の長方形に正確に収まらない

Android-V11 を使用して RDP クライアント アプリケーションを開発しています。

サーバー:画面を4分割し、各フレームの画像データをbyte[]、left、top、right、bottom、画面解像度(幅→1024/1280、高さ→768/1024)の値で送信クライアントに。

クライアント: サーバーから受信した画像を表示するためにサーフェス ビューを使用しています。タブレットの画面にぴったり収まるように、4 フレーム (サーバーの 1 画面) を表示する必要があります。

サンプルコード:

ビットマップを四角形に正確に合わせることができません。フレームはタブレットに表示され、その間にギャップがあります。

コードをデバッグした後、取得されたビットマップ (bmp) の幅は 514 で、四角形 (rect) の幅は 640 のようです。したがって、ビットマップは四角形に収まりません。

ビットマップを四角形に正確に合わせる方法を教えてください。

注:画像をピンチズームする必要もあります。

ありがとう、よろしくヤミニ。

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

wpf - WPF のパフォーマンス。間違ったダーティ rect の計算

私は現在、WPF リッチ クライアント LOB アプリケーションのパフォーマンスの問題に関連する顧客の割り当てで働いています。

問題は、アプリケーションの実行が非常に遅い/遅いことです。特に、データ テーブルの処理 (スクロール、並べ替え、選択) は非常に遅く、アプリケーションが使用できなくなります。

いくつかのテキストボックス、コンボボックス、およびラベルを含む 1 つのタブが開かれ、アイドル状態 (ユーザーの入力待ち) になったときのシステム状態を分析しました。

これらは私の発見です:

  • すべてのレンダリングは GPU で計算されます
  • アニメーション、ビットマップ効果、透明度などのパフォーマンスの高い機能はありません。
  • タブがアイドル状態の場合 (フォーカスされたテキスト ボックス内でカーソルのみが点滅し、タブの残りの部分は静的で、データさえ含まれていません)、GPU は最大 90% 実行されます。
  • タブがフォーカスを失うたびに GPU が 0 に落ちる
  • GPU の割合は、ウィンドウ サイズに直接関係します。小さなウィンドウでは数パーセントに下がり、全画面表示ではほぼ 100% になります
  • WPF Perforator は、WPF が点滅カーソルだけでなく、タブ全体のダーティ領域を計算することを教えてくれます
  • WPF Perforator は、アイドル タブで 20/秒を超えるダーティ rect 更新レートを報告し、GPU 使用率に直接相関します

私の結論: 開発中に、システム全体のバックエンド駆動型アーキテクチャに WPF を適合させるために、多くのカスタム コード (レイアウト、イベント処理など) が導入されました。私の推測では、一部のカスタム コードが原因で、WPF の dirty-rect-mechanism が壊れています。これにより、描画アクティビティが過剰になり、GPU 使用率が非常に高くなります。これらの不必要な活動は、上記の問題につながります。

今、私は調査をどこから始めるべきかアドバイスを探しています。言い換えれば、開発者が WPF ダーティ rect 更新アルゴリズムを破るために犯す可能性のある典型的な間違いは何ですか。どんな入力でも大歓迎です。

これからもよろしくお願いします!

マヌエル

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

macos - Objective Cを使用してdirrectまたはcliprectを見つける

Objective C を使用して Mac OS でダーティ rect だけをキャプチャすることは可能ですか?

ディスプレイに画面の変更があるときに、変更された領域の汚れた四角形またはクリップ四角形だけを与える API はありますか?

画面をキャプチャし、画面の変更をサーバーに繰り返し送信する必要があります。

それを行う最良の方法は何ですか?

助けてください。

ありがとう、プリヤ