問題タブ [tearing]
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.
wpf - vsyncのwpf待機(イメージ)
カメラ フィードを ImageSource に更新する UDP API を使用します。ViewModel の ImageSource を更新するタイマーがあり、WPF が画面上の画像をデータバインドします。
タイマーにはリフレッシュレートと同じ回数の間隔がありますが、これは画面の更新と同期していることを意味しないので、涙が出ます.
SlimDX、XNA opengl などを使用すると、リフレッシュ レートに簡単に同期できますが、WPF でどのように解決すればよいですか?
java - Linux での Java 2D ページフリッピング
Java 2D アプリケーションを Linux で実行すると、画面のティアリングが発生します。Windows での実行時にティアリングは発生しません。コードの分析にかなりの時間を費やしましたが、まだ原因が見つかりません。私は決して自分のコードに問題があるとは断言できませんが、問題が Linux 上の Java 2D レンダリング パイプラインにある可能性も楽しみにしています。ところで、Java 6 と Java 7 の両方でティアリングが見られることに注意してください。Java 7 で実行すると、XRender パイプラインを有効にするかどうかに関係なく、ティアリングが見られます。
もちろん、 によるダブルバッファリングを使用していBufferStrategy
ます。呼び出したときに取得するBufferStrategy
実装Frame.createBufferStrategy(2)
はjava.awt.Component$FlipSubRegionBufferStrategy
. さらに、 を呼び出すisPageFlipping()
とtrue がBufferStrategy
返され、機能を呼び出すと false が返されます。全画面排他モードで実行していませんが、実行しようとしましたが、問題は解決しませんでした。 戻ります(しかし、それは関係ないと思います)。BufferCapabilities
isFullScreenRequired()
BufferCapabilities.getFlipContents()
FlipContents.UNDEFINED
ページ フリッピングはおそらくサポートされており、BufferStrategy
(ブリッティング戦略ではなく) ページ フリッピングを取得しているため、レンダリング パイプラインがテアリングを引き起こしているとは思いません。しかし、2006 年に Chet Haase によって書かれたメーリング リスト メッセージを見つけました。これは、画面のティアリングの問題に対処するもので、次のように述べています。リフレッシュ アーティファクトにぶつかる BltBufferStrategy です。」
取得しているフリップ戦略が実際にページをめくっていないかどうかを判断するにはどうすればよいですか?
Chet はまた、「BufferStrategy を使用してフルスクリーンを実行することは、これを回避する適切な方法です。プラットフォームと状況に応じて、通常はディスプレイの垂直方向の更新と同期するフリップ戦略を提供します。引き裂かないようにしてください。」
戦略がディスプレイの垂直リフレッシュと同期しているかどうかを確認するにはどうすればよいですか?
(上記で参照した Chet Haase からの完全なメッセージについては、http://www.mail-archive.com/java2d-interest@capra.eng.sun.com/msg03743.htmlを参照してください)
c# - カメラをすばやく動かすと極端に裂ける
私はMinecraftのクローンを作成していますが、カメラを少しでも速く動かすと、次のようにチャンクの間に大きな裂け目があります。
各チャンクは32x32x32キューブであり、重要な場合に備えて、キューブの種類ごとに1つの頂点バッファーがあります。画面にも2Dテキストを描いていますが、描画の種類ごとにグラフィックデバイスの状態を設定する必要があることを学びました。これが私が立方体を描く方法です:
私がじっと立っていれば、世界は元気に見えます。これはウィンドウモードになっているためかもしれないと思いましたが、全画面表示に切り替えても問題は解決しませんでした。また、XNAはそれ自体で二重にバッファリングされていると思いますか?またはそうグーグルは私に言った。
qt - EGLでレンダリングするときのOpenGLティアリング効果
ARMボードのEGL実装によって提供されるサーフェス上でOpenGLを使用してレンダリングされたQtアプリケーションがいくつかあります。レンダリングで何らかのティアリングが発生しています。
読んでみると、vsyncに関連する問題である可能性があることがわかったので、EGL呼び出しeglSwapInterval(eglDisplay、1)を使用しましたが、それでもティアリングが持続します。その呼び出しは、引き裂きを取り除くのに十分ですか?その呼び出しはそのような効果を完全に取り除くべきですか?多少の破れが残っている可能性はありますか?
android - アプリのライフサイクル全体で画像や背景がランダムに欠落または正しくない
私は、ここの誰かがこの種の行動の原因を知っていることを望んでいました:
私のアプリケーション全体で、一見ランダムな場所とランダムな条件で、この奇妙な UI の問題を観察しています。画像が黒 (正しい境界) で読み込まれたり、不適切な画像ソース (再び正しい境界) で読み込まれたりすることがあります。これは、カラー リソースへの参照を含むタグに影響ImageViews
を与え、影響を与えてきました。android:background
私のアプリケーションは 6 つのライブラリ プロジェクトに依存しており、サービスを介してネイティブ コードを実行し、アプリのアクティビティは GlSurfaceViews を使用します (ただし、問題を表示するすべてのアクティビティに OpenGL コンポーネントが含まれているわけではありません)。問題は、これらの場所のいずれか、または大量のメモリを使用することによるそれらの組み合わせにあると思われます。
この動作は、次のスクリーン ショットで確認できます。
これは実際には、ImageView に誤って描画された 6 ピクセル程度の幅の列区切り画像です (ImageView 自体のサイズが正しく設定されているようです)。
アプリケーションから出てから再び(繰り返し)戻ると、代わりに次のように表示されました(そして残りました):
Force Clear と Clear App Data の後、正しい形式に戻りました。
また、横にある拡大鏡の画像も見られるように、これらのそれぞれに問題なく表示されています。これらの画像や背景が見つからない/正しくないという問題は、アプリケーションのライフサイクル全体でランダムに発生するようで、再現する方法を見つけることができませんでした。
これらの画像のレイアウトは特別なものではありません。レンダリングのライフサイクル中に面白いことは何もしていません (オーバーライドonDraw()
などはしていませんonMeasure()
)。これらの画像のソースは動的に設定されるのではなく、XML 経由で設定されます。
上記の例からわかるように、インストール間ではなくアプリのライフサイクル間で発生するため、ビルドの問題ではありません。Samsung 8.9、Acer Iconia Tab、Motarola XOOM、
参照テーブルに何らかのエラーがあるように思えますが、ネイティブ コードによって微調整された可能性がありますか? それとも、アプリケーションのいくつかの段階でメモリを使いすぎたことが影響しているのでしょうか?
上記の例の XML ソースは次のとおりです。
たまたまスクリーンショットを取得した別のそのような出来事を取り巻くコード/レイアウトのより完全な説明:
Activity
新しい設定の詳細を保存した後にアプリを再起動する「設定」があります。を停止し、新しい(スプラッシュ アクティビティ) をService
呼び出して終了することでこれを行います。Activity
ほとんどの場合 (およびほとんどのデバイスで)、これは正常に機能し、スプラッシュ アクティビティには正しく読み込まれる画像が含まれています。ただし、一部のデバイスでは、スプラッシュ アクティビティが正しくないリソース (私のテスターが「逆さまの Nike ティック」と呼んでいるもの) または空白のボックス (以下に示すように) をロードすることがあります。誰かが理由を知っていますか?
スプラッシュ ページのレイアウトは次のとおりです。非常にシンプルで驚くことはありません。
理論が検証され、証明された:
これは、スプラッシュ画面が終了して次のアクティビティに移動する前にレイアウトが完全に描画されていないプロセッサ/メモリの問題である可能性があると理論付けたので、次のコードを挿入しました。
上記のコードにより、開始ページに移動する前に画像が確実に読み込まれることが期待されますが、目に見える効果はないようです。
別の理論
また、これが R.id / R.colour / R.drawable リソースによって引き起こされている可能性があるかどうかも疑問に思っていました。なぜそれが起こるのか誰にも分かりません。
Android が正しく割り当てていない一部のメモリ アドレスでネイティブ コードが暴走している可能性はありますか?
誰かが以前にこれに気づいたことがありますか?または、おそらくこの動作が発生する理由を知っていますか?
opengl - C ++のOpenGLでのUbuntu垂直同期
Ubuntu の OpenGL アプリケーションでティアリングの問題が発生しました。どうすれば解決できますか? (私のノートブックには Intel ビデオカードが内蔵されています)
c# - WinForms C# でアニメーションを引き裂く
WinForm要素の動きをアニメーション化できるライブラリを使用しています(以下にリンクされています)。これを使用してフォーム(画像の背景を持つ)を横切って透明なパネルを移動すると、途方もない量の引き裂きがあります。
修正は、遅れることなく30fpsのレートでwinformsを更新することだと思います. This.Refresh();
1秒間に30回タイマーを設定しようとしましたが、読み込みが遅くなりました。では、フォームのリフレッシュ レートを適切にするにはどうすればよいでしょうか。
上記のリンクはこちら -> http://code.google.com/p/dot-net-transitions/wiki/CodingWithTransitions#Creating_a_transition_that_works_on_a_single_property
引き裂きの一例です。パネルの背景色が「透明」に設定されているという事実と関係があるかもしれません http://screencast.com/t/XIr3NkGI
opengl - OpenGL ウィンドウ システムの画面ティアリング防止
私の OpenGL アプリケーションでは、明らかな理由で画面のティアリングを防止したいと考えています。これまでは vsync を使用していました。しかし、パフォーマンスを向上させるために、ページ フリッピング バッファー スワップ (値を変更する代わりにモニターのデータへのポインターを変更する) に置き換えたいと考えています。私の質問は次のとおりです。重要なウィンドウ システム (Windows、Cocoa、X11) は、この種のバッファー スワップをサポートしていますか? また、明示的に要求する必要がありますか、それともデフォルトの動作ですか?
javascript - jQueryの涙画像アニメーション効果はありますか?
今日、jQuery を使用した何らかの引き裂き画像アニメーション効果が存在するのだろうか? 何百万ものピースにするのではなく、写真をバラバラに引き裂くような効果ですか?側面に向かって移動します。それとも、これは Flash アニメーションを使用する必要があるものですか?? ありがとう!
android - BitmapFactory.Options.inBitmap により、ImageView ビットマップを頻繁に切り替えるとティアリングが発生する
画像が非常に速く切り替わるスライドショーで画像を表示しなければならない状況に遭遇しました。画像の数が非常に多いため、JPEG データをメモリに保存し、表示したいときにデコードしたいと思います。ガベージ コレクターを簡単にするために、BitmapFactory.Options.inBitmapを使用してビットマップを再利用しています。
残念ながら、これはかなり深刻なティアリングを引き起こします。同期、セマフォ、2〜3ビットマップの交互など、さまざまな解決策を試しましたが、問題を解決するものはないようです。
この問題を示すサンプル プロジェクトを GitHub にセットアップしました。https://github.com/Berglund/android-tearing-example
ビットマップをデコードし、UI スレッドに設定し、5 ミリ秒スリープするスレッドがあります。
私の考えでは、 ImageView.setImageBitmap(Bitmap) は次の vsync でビットマップを描画しますが、おそらくこれが発生したときに次のビットマップを既にデコードしているため、ビットマップ ピクセルの変更を開始しました。私は正しい方向に考えていますか?
ここからどこへ行くべきかについてのヒントはありますか?