問題タブ [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.
c++ - vsync をオンにして glTexImage2D を実行すると奇妙な遅延が発生する
次のコードでフレームを表示するために Qt の QGLWidget を使用しているビデオ ソフトウェアをプログラミングしています。
vsync を使いたいので、swapInterval を 1 に設定します。上記のコードを実行する時間を測定しました。予想どおり、updateGL の実行には約 16 ミリ秒かかります。私を悩ませているのは、glTexImage2D も VBLANK 信号を待っているかのように、実行に 1..16ms の時間がかかることです。swapInterval を 0 にして vsync をオフにすると、glTexImage2D の実行には約 1 ミリ秒しかかかりません。ここで、vsync が提供するはずのプログラム全体の 16 ミリ秒の遅延の代わりに、最悪でも 32 ミリ秒の遅延が発生します。updateGL と glTexImage2D の両方が VBLANK を待機する理由がわかりません。遅延をできるだけ少なくしたいので、誰かがここで何が起こっているのか説明してもらえますか?
c++ - OpenGL で glut を使用した vsync の問題
Vsync を OpenGL アプリケーションで動作させるのに必死に苦労しています。重要な統計は次のとおりです。
私は Windows を使用しており、C++ OpenGL でコーディングしています。また、OpenGL コンテキスト (ダブル バッファリング) に FreeGLUT を使用しています。Windows でスワップ バッファが垂直同期を待機するには、wglSwapIntervalEXT() を呼び出す必要があることを認識しています。
私のコードはこれを呼び出します (以下で説明します) が、まだ縦方向の引き裂きが発生しています。私がそれを止めることができた唯一の方法は glFinish() を呼び出すことです。もちろん、これには重大なパフォーマンスのペナルティが伴います。
main() 関数の関連部分は次のようになります。
wglInitSwapControlARB 関数からの戻り値は true であるため、拡張機能がサポートされていることを指摘しておく必要があります。
opencv - 欠落やテアリングのない OpenCV 表示ビデオ
私の英語で申し訳ありません。
固定 FPS でティアリングせずにフレームごとにビデオを表示する必要があります。(表示は 50p モードで動作し、毎秒 50 の異なるフレームを表示したい)。
ソフトタイマーを使用していますが、何も機能しません (ストロボ効果)。
OpenGL なしで cv::imshow を使用します。
何をすべきか教えてください。
opengl - OpenGL GPU を CPU 同期に実装する方法
OpenGL Wiki は、Swap Intervalトピック ページの最後の段落で、GPU/CPU 同期に関して興味深いことを述べています。
GPU<->CPU 同期が必要な場合は、バッファ スワップ後に glFinish ではなく、高精度/マルチメディア タイマーを使用する必要があります。
glFinish()
引用されたテキストで示唆されているように、またはglFenceSync()
ベースのアプローチはうまく機能していません。これらの高精度/マルチメディア タイマーは、OpenGL 仕様の一部ではないと思います。そう:
V-Synchedディスプレイでのバッファスワップの直後にCPUコードを呼び出す(おそらくタイムスタンプを取得する)ために、高精度/マルチメディアタイマーを使用する方法を知っている人はいますか?
私は C++ で記述され、Linux でコンパイルされたソリューションをターゲットにしていますが、ライブラリ名、コード ビット、または直感が非常に役立ちます。
objective-c - CVDisplayLink 定数 outputTime 値
CVDisplayLink API のドキュメントがないという私と同じ問題を他の誰かが抱えている場合に備えて、この記事を書いています。
はじめに:
私の CVDisplayLink コードでは、次のコードを使用して、コールバックの呼び出し間の deltaSeconds 値を取得しています。
このコード行は、さまざまなアプリやエンジンで広く使用されているようです。
問題:
OpenGL アプリを実行しているときに、この値が一定になっていることに気付きました (0.016669
正確には)。Mavericks と新しい開発ツールを使用する以外は、この動作の変更を説明するための大きな変更は行っていません。
原因を見つけることは、これまで失われた原因でした。
qt - QT - Vsync と複数の QGLWidget を適切に処理する方法
同じメイン スレッドで 3 つの異なる QGLWidgets を使用しています。できれば 60fps でレンダリングしますが、20fps を超えることはできません。これは、各ウィジェットがおそらく独立してリフレッシュ レートと同期しようとするため、Vsync が原因であると思われるため、何らかの形でロックされます。ウィジェットを 2 つだけ使用すると、30fps に達します。または、1 つのウィジェットの更新レートを 10 fps に固定すると、他のウィジェットでは 25 fps に達します (10+25+25=60)。swapInterval()
で設定した値に関係なく、常に 0 を返しますsetSwapInterval(int)
。何か案は?Vsync を無効にできますか? それとも、別の原因で問題が発生している可能性がありますか?
actionscript-3 - ENTER_FRAME は、垂直ブランキング信号の終わりまたはウィンドウの開始時に送出されますか?
ENTER_FRAME は、垂直ブランキング信号 (vblank または vsync) の最後 (画面上のフレームの実際の開始時) にディスパッチされますか、またはフラッシュ ウィンドウの開始時 (stage3D アプリがウィンドウ モードの場合)、または不正確なタイミングでディスパッチされます(フラッシュの内部のムードに応じて)?
(純粋な AS3 と Stage3D を 3D GPU レンダリングで使用しています - 2D 表示オブジェクト、Flash タイムライン、ムービークリップなどはありません)。
編集: 関連する質問を参照してください: ENTER_FRAME を見逃すか、リスナーが遅延して受信できますか?