問題タブ [vsync]
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.
qt - Qt 5: vsync を無効にする
vsync
サードパーティのレンダリング システムの統合を容易にするために、QOpenGLContext 形式を無効にしたいと考えています。
QSurfaceFormat::swapInterval
Qtで唯一の関連パラメータのようです。
これを実装するためにいくつかの方法を試しQSurfaceFormat::swapInterval(0)
ましたが、初期段階 (QMainWindow
構築前) に設定しても、QOpenGLContext::create()
呼び出しはそれを復元しています。
vsync を強制的に無効にする方法はありますか?
python - Raspberry Pi で pygame を使用した画面のティアリング
画面のティアリングの問題で 1 週間ほど立ち往生しています。
ここに私の問題があります: PNG 画像のシーケンスを非常に高速 (30 fps 以上) に表示できるプログラムを作成したいと考えています。これを行うために、私は pygame ライブラリ、特にpygame.display.blit
andを使用しpygame.display.flip
ます。
コードの例を次に示します (自家製の遅延関数を使用)。
タイマーを使用すると、画面上で同じリフレッシュ レートを維持できます。私の問題は、画面のティアリングの問題があることを自分の目で確認できることです ( https://en.wikipedia.org/wiki/Screen_tearing )。pygame のドキュメントでは、画面の初期化に他のフラグを使用することを推奨しています ( http://www.pygame.org/docs/ref/display 、pygame.HWSURFACE and pygame.DOUBLEBUF
) 。どうやら、これらは画面のティアリングの問題を修正するのに役立つ可能性があります. しかし、これらのフラグを使用すると、画面のティアリングが修正されません。y.set_mode
pygame が X11 で vsync を処理できないことをどこかで見たことがあります。これは、HWSURFACE および DOUBLEBUF フラグとの違いが見られない理由を説明しています。
Raspberry Pi でこの vsync の問題に遭遇した人はいますか? 「config.txt」ファイルに入れるパラメータはありますか? これらの画面のティアリング効果を回避するために、実際の vsync 情報を取得する方法はありますか?
作成されたウィンドウで pyglet が vsync を処理できることを見てきましたが、不明な理由で pyglet ウィンドウに画像を表示できず、特に Raspberry が処理できない場合、問題が解決するかどうかは本当にわかりません今すぐvsync。
c++ - Linux で Vsync フェーズを照会する方法
次の Vsync 間隔までの秒数を浮動小数点値として返す C++ 関数を作成する必要があります。
なんで?
マウス カーソルに追従する四角形を表示するプログラムを作成しています。表向きは、OpenGL は glXSwapBuffers 関数で vsync メカニズムを提供しますが、これは信頼できないことがわかりました。一部のカード ドライバでは、vsync が得られます。あなたがしない他の人と。一部では vsync が得られますが、余分な 2 フレームのレイテンシも得られます。
しかし、これは OpenGL のバグではありません。仕様は意図的にあいまいです。「その後、バック バッファーの内容は未定義になります。更新は通常、glXSwapBuffers が呼び出された直後ではなく、モニターの垂直リトレース中に行われます。」キーワードは「通常」です...基本的にglXSwapBuffersは、vsyncに関してスクワットを約束しません。図に行きます。
この基本的な問題を解決するための私の現在の試みでは、現在、初期の vsync 時間を推測しており、その後、位相が現在のモニターと同期しているように見える経過時間 MOD 1/(59.85Hz) に等しいと仮定しています。しかし、私は実際に初期段階を知らないため、これはうまく機能しません。だから涙が一粒出ます。少なくとも動きません。しかし、私が本当に必要としているのは、現在の vsync フェーズを何らかの方法で測定することです。
いいえ、OpenGL 呼び出しに依存して vsync を実行したくありません。仕様が曖昧なため、これにより OpenGL の実装に必要なだけのレイテンシを追加することができます。
いいえ、SGI 拡張機能や、動作させるためにインストールしなければならないその他のものに依存したくありません。これはグラフィックス 101 です。その状態を照会する方法が必要なだけです。組み込みの常にインストールされる API には、これが必要です。
どうにかして Vsync を待機し、これが発生した時間を記録するセカンダリ スレッドを作成できますか? ただし、次のシーケンスに注意してください。
Debian では動作しません。結果:
デバイスからフェーズを読み取る方法、またはその他の OpenGL 呼び出しを行う方法が必要です。OpenGL は、グラフィックのためのものです。Vsync はグラフィックス 101 です。
助けてください。
rendering - HaxeFlixel c++ ターゲットを使用して、実行時に v-sync を切り替えます
実行時にプロジェクトのvsync
オン/オフを切り替えることはできますか? HaxeFlixel
または、別の実行可能ファイルを作成する必要がありますか (1 つは vsync を有効にし、もう 1 つはvsync
無効にします) 。
IntelHD のバグに対処した後、次のビルド設定を使用して C++ ターゲットを無効にする必要がありました。 vsync
ゲームメニューから切り替えればいいので、実行時に有効/無効にできるAPIがあればいいなと思っていvsync
ます。
java - Java - GC アプリケーションの実行が遅くなった後
JVM で実行するアプリケーション (ゲーム) があります。
ゲームの更新ロジック (毎秒 60 回実行) は、「タイム スライス」 (1/60 秒) の約 25% を使用して終了し、残りの 75% をスリープ状態にします。しかし、GC コレクターが実行されると、75 ~ 200% まで上昇し、残りの実行中はその状態が続きます。
ゲームは約 70Mb のヒープを使用し、約 1-2mb/s で成長します。GC が実行されると 70Mb に戻るため、真のメモリ リークはありません。将来的にはこの数値を下げるように努めますが、この範囲では問題にならないはずです。
ランタイム引数やフラグなしで JVM 8 を使用していますが、どの GC が私に与えるのかわかりません。
ヒープを別のサイズに設定してみましたが、この現象には影響しません。
これがなぜなのかについては、次の 2 つの理論があります。
GC は意図せずにヒープを断片化し、更新ループでキャッシュの破棄を引き起こします。データがループして更新されるため、データの近接性から大きな恩恵を受けるロジックがあります。一部のデータを古い領域にシャッフルし、一部を若い領域 (苗床) に保持している可能性がありますか?
突然の GC 処理が OS をトリガーし、メインの更新スレッドが現在ほど多くの CPU リソースを必要としないことを OS に認識させ、その優先度を下げます。(ただし、thread.sleep() をスキップして未使用の CPU 使用率からスリープしても現象は持続します。
どう思いますか。私の理論はもっともらしいですか、それらについて何かできることはありますか、それとも C 言語に切り替える必要がありますか? GC に関する私の知識は限られています。
PS 補足として、通常、update() はポスト GC の 75% で終了します。200% のような数値が得られるのは、VSync を使用している場合です。
c++ - SDL/OpenGL ゲームが 144Hz 画面で実行される速度が速すぎます。vsync を使用できません
これは私がゲームループを処理する方法です:
これは 60FPS にロックされた固定タイムステップ ゲーム (SNES ゲームの再作成されたエミュレーションです) を意図していますが、私の 144hz 画面では 144 タイムステップで実行され、速すぎます。Vsync はこれを解決できません。