問題タブ [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.

0 投票する
4 に答える
72515 参照

opengl - openglで垂直同期を有効にする方法は?

垂直同期を有効にするにはどうすればよいですか?

こんなにシンプルなものglEnable(GL_VSYNC)ですか?(ただし、glEnableが受け入れるオプションにはGL_VSYNCなどはありません)。

または、openglでこれを行う標準的な方法はありませんか?

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

apache-flex - Vsync in Flex/Flash/AS3?

I work on a 2D shooter game with lots of moving objects on the screen (bullets etc).

I use BitmapData.copyPixels(...) to render entire screen to a buffer:BitmapData. Then I "copyPixels" from "buffer" to screen:BitmapData. The framerate is 60.

The problem is that the sprites are tearing apart: some part of a sprite got shifted horizontally.

It looks like a PC game with VSYNC turned off.

Did anyone solve this problem?

UPDATE: the question is not about performance, but about getting rid of screen tearing.

[!] UPDATE: I've created another question and here you may try both implementations: using Flash way or BitmapData+copyPixels()

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

graphics - Linux/X11でpygameでティアリングを回避する方法

私は(Debian / Lennyで)pygameで遊んでいます。ブリットの厄介な引き裂き(フルスクリーンまたはウィンドウモード)を除いて、うまく機能しているようです。

デフォルトのSDLX11ドライバーを使用しています。グーグルは、X11がvsync機能を提供しないことはSDLの既知の問題であり(FULLSCREEN|DOUBLEBUF|HWSURFACEフラグで作成されたディスプレイでも)、代わりに「dga」ドライバーを使用する必要があることを示唆しています。

ただし、実行中

でpygameの初期化をスローします

xdpyinfoXFree86-DGA拡張機能が存在することを示していますが)。

だから:涙のないvsyncedフリップを取得するための秘訣は何ですか?このdgaを機能させるか、他のメカニズムを使用しますか?

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

c++ - OpenGL で VSYNC を有効にする方法

WGL_EXT_swap_control 拡張機能を使用すると、Windows でこれを実行できますが、同じことをリモートでクロスプラットフォームで行っても何も見つかりません。つまり、バッファ スワップを画面の更新と同期します。私のアプリケーションは GLEW を使用しているため、GLEW によって提供されるものが望ましいでしょう。Linux、Mac、および Windows のクロスプラットフォーム サポートが必要ですが、同期を設定できなくても (たとえば、ユーザーがグラフィックス ドライバーで強制的にオフにした場合)、私のアプリケーションは壊れません。

有効な答えとして、GLEWを使用して、多くのプラットフォームでそれを行うプログラムコードを受け入れます。

0 投票する
2 に答える
630 参照

iphone - CADisplayLinkクラスをサポートできるハードウェアは何ですか?

iPhoneでゲームを作っています。iPhoneOS3.1がCADisplayLinkクラスでv-syncをサポートしていることがわかりました。v-syncはゲームグラフィックスにとって理想的なソリューションだと思います。これだけを使用します。(NSTimerへのフォールバックはありません)しかし、SDKドキュメントはこれも述べています。CADisplayLinkは、OS3.1でのみサポートされています。

CADisplayLinkクラスをサポートできないハードウェアモデルはありますか?

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

windows-7 - 高速スクリーン キャプチャと失われた Vsync

実行中の 3D アプリケーションが占有する画面の一部で高速スクリーン キャプチャを行う自作アプリケーションを使用して、リアルタイムでムービーを生成したいと考えています。

このためのいくつかのアプリケーション (FRAPS や Taksi など) や専用の DirectShow フィルター (UScreenCapture など) が既に存在することは承知していますが、これを自分の外部アプリケーションで作成する必要があります。

正しくセットアップ (UScreenCapture + ffdshow) すると、全画面を圧縮してキャプチャしても、予想されるほど多くの CPU を消費せず (約 15%)、3D アプリのパフォーマンスを損なうことはありません。

外部アプリケーションからキャプチャを実行する際の問題は、3D アプリケーションが Vsync を失い、毛むくじゃらで使いにくい 3D アプリケーションを作成することです (3D アプリは画面の小さな部分にのみ表示され、残りは GDI、DirectX です)。

FRAPS は、一度に 1 つのアプリケーション (フォーカスのあるアプリケーション) のみをキャプチャできるようにすることで、この問題を解決します。使用されているテクノロジー (OpenGl、DirectX、GDI) に応じて、Vsync をフックし、摂動を乱すことなく (glReadPixels などを使用して) キャプチャを行います。これを行っても問題は解決しません。完全に構成された画面イメージ (3D などを含む) とスムーズな 3D アプリが必要だからです。

UScreenCapture は高速な DirectX 呼び出しを使用して画面全体をキャプチャしているようですが、openGL 3D アプリはまだ同期していません。

BitBlt の実行は遅すぎて、リアルタイムで 30 fps の取得を行うには CPU を消費します (少なくとも Windows XP では、7 ではわかりません)。

私の質問は、Windows 7 で私の目標を達成する方法があり、それがまったく新しい DirectX 合成エンジンであるかどうかを知ることです。

Windows 7 では、すべてのアプリのライブ VSynced 複製プレビューを (タスクバーに) 表示することに成功しているため、3D OpenGL アプリのレンダリングを乱すことなく、現在表示されている画面バッファーにアクセスする方法が必要です。

他の提案、技術はありますか?ありがとうございました

0 投票する
5 に答える
16984 参照

directx - D3DウィンドウアプリでVSYNCを有効にする方法は?

したがって、ウィンドウ化されたアプリケーションでD3Dを使用しています。

次のパラメータを使用してD3Dを初期化しました。

OnPaintが呼び出されるたびに、画像をバックバッファーにレンダリングして前面に表示します。

私の知る限り(そしてMSDNもそう言っています)、一度設定D3DPRESENT_INTERVAL_ONEすると、vsyncは機能します。

ただし、この場合、水平方向にドラッグすると画像が破れます。

(画像全体に線があるようです。線の下の画像がモニターに表示され、上の部分が続きます。)

一部のサイトでは、D3DPRESENT_INTERVAL_ONEはウィンドウ化されたアプリケーションでは機能しないと述べています。

とにかくvsyncを有効にするにはどうすればよいですか?

psついに、D3D vsyncが有効になっていることがわかりましたが、一部のウィンドウ設定が正しくないため、ウィンドウ自体が同期されていない可能性があります。しかし、私は設定を覗き見していません。

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

visual-c++ - MFCおよびGDI+でのV-Sync

こんにちは私は中期プロジェクトにMFCSDIアプリケーションを使用しています。しかし、シーンを(GDIを使用して)描画して「invalidate()」するたびに、フリックが発生します。

ダブルバッファリングとフリックの削除にDWMを使用していますが、ほとんど発生しません。問題は垂直同期にあると思います。仮想同期を有効にするにはどうすればよいですか。

0 投票する
2 に答える
3195 参照

opengl - 軽量 OpenGL ゲームの完璧な V-sync 実装: ちょっとした情報が必要

私たちのインターネットで組み立てられたチームがプログラミングしているゲームでは、視聴者全員がゲーム内で全速力を超えていると想定しています。

したがって、ビデオ RAM を節約し、できればグラフィック カードのアイドル時間をもう少し増やすには、ダブル バッファリングなしで V-sync を使用するのが最善の選択肢です。したがって、OpenGL では、その方法を知る必要があります。

私の理解では、V-sync とは、グラフィック カードが 1 つのフレームのレンダリングを完了してから、そのフレームがディスプレイ デバイスに送信されるまで一時停止することです。ダブル バッファリングは、レンダリング操作を一時停止しません (または、一時停止するか、または実装固有である可能性があります。不明です)。これは、代わりに、フレーム バッファーにコピーする前に 2 番目のバッファーに描画するため、モニターがフル フレームを取得するか、またはまったく取得しないためです。新しいフレーム (具体的には、フレーム バッファに最後に保存された画像)。グラフィックカードが必要なときにのみフレームバッファに書き込む限り、その機能は必要ありません。

これはかなり遅いオンライン ゲームです (しかし、非常にクリエイティブです ^_^)。リアルタイムのアクションはほとんどありません。したがって、非常に正確なユーザー入力は必要ありません。フレームをレンダリングする前に、いつでも OS から単一のユニットとしてキャプチャできます。

したがって、これを正確に行うには、OpenGL から「フレームがモニターへの送信を終了しました」というメッセージを取得できる必要があります。出来ますか?そうでない場合、最良の代替手段は何ですか?

ゲームは現時点では Windows 用にのみプログラムされていますが、数か月以内に Linux 用に作業が完了するはずです。