VSYNC・リフレッシュレートとは何か?
VSYNC・リフレッシュレートとは何かについて述べたいと思います。
上図は私のPCのグラフィックボード(NVIDIA製)のドライバー付属ツールの画面解像度設定の画面の一部です。
「リフレッシュレート」という所がそうです。
見ると「60Hz」とあります。
「リフレッシュレート」とは、グラフィックボードやディスプレイが全ての画面を書き換えたり表示したりするのに掛かる最短の時間です。
Hz(ヘルツ)は以前に音のウンチクの所でも述べましたが1秒間に1回の振動が1Hzです。
よって私のPCの場合、1/60秒で1920×1080ドットの表示が完了する、又はグラフィックボードがその分のデータをディスプレイに転送できるということになります。
この数値が高いほど、より高速に画面を更新できたり、より多くの(細かい)ドットで表示ができたりします。
テレビゲーム機の画面とパソコンの画面で、表示できるドット数が大幅に違ったのはこれが原因です。
かつてのアナログテレビはパソコンの1/2~1/3程度のリフレッシュレート(テレビ的には垂直同期などと言ったりもした)しかなく、そのためにパソコンの1/2~1/3程度のドット数しか表示できなかったのです。
このように表示できるドット数に影響する他、画面書き換えの頻度にも影響するので、例えば動画とかを再生した場合、リフレッシュレートが高いとより滑らかな動きになり、低いとカクカクした動画になります。
そして「VSYNC」は、この画面書き換えの準備ができた、直前に送られたグラフィックデータの表示がすべて終わったよーという合図の信号です。
これを無視してグラフィックボードやディスプレイにグラフィックデータを送ると、まだ表示途中あるいは書き換え途中のものが表示されてしまいます。
例えば上半分は以前のグラフィックデータ、下半分は書き換え後の新しいグラフィックデータというように。
横スクロールのシューティングゲームなどでこれをやると非常に良くわかります。
画面のスクロールが上半分と下半分で微妙にズレるからです。
これを防止してより完璧なスクロールをさせるために、通常はVSYNCを確認して、おkだったら新しいグラフィックデータをプログラムで更新します。
これがグラフィックドライバーの設定画面などにある「VSYNC」のON/OFFの設定の意味です。
3Dバリバリのゲームなどで、自分のPCのグラフィックカードやディスプレイの性能が不足している場合、このVSYNCをOFFにしてやると、ゲームがスムーズにできるようになることがあります、画面表示は乱れるかもしれませんが。
VSYNCをONにしていると、性能不足で遅い書き換えをプログラムが待ってしまうからです。
CPUは次のプログラムの実行ができるのに、画面表示が終わらないので一時停止状態になってしまう。
だからゲームが遅くなるのです。
VSYNCをOFFにしてやると、画面の表示が終わっていようがなかろうが、お構いなしに画面関係のプログラムが先へ進むので、それ以外の処理も遅れる事無くCPUの能力を100%生かしたスピードで動けるようになるのです。
ただし先にも述べたように、以前の画面データが表示しきれてない、あるいは書き換え終わってないうちに新しいデータが送られるので、画面表示が乱れる可能性があります。
上半分と下半分で画面が微妙にズレるみたいな。
あるいはもっと酷いと、画面がちらついたりします。
まぁそこまで酷くなる事は今のPCだと無いと思いますけど。
ちなみにこのVSYNCですが、割り込み信号扱いです。
よってプログラム的に言えば、画面書き換えの処理をVSYNCの割り込み処理にしてしまえば、他の処理が滞る事はありません。
割り込み処理とは、文字通り今実行中のプログラムに割り込んで、別の処理をさせる事です。
割り込み信号が発生すると、CPUは今実行中のプログラムを一時中断します。
そして指定された割り込み処理を実行し、それが終わったら一時中断していたプログラムの実行を再開するのです。
これは画面更新以外にも、サウンドの処理でも昔から使われています。
この辺はプログラマ、しかもマシン語レベルで作る人以外には必要ない知識かもしれません。
ともかく一般人にとっては以下の事だけ知っていれば良いと思います。
・リフレッシュレートは高いほど細かくて綺麗なグラフィックが表示できるので、ディスプレイやグラフィックボードを購入する際は、なるべくこれの上限が高いものを選ぶ。
・動画が滑らかになる。
・動作が遅いゲームなどは、グラフィックドライバーのVSYNC設定をOFFにすると速くなる場合がある。
そんな感じです。
上図は私のPCのグラフィックボード(NVIDIA製)のドライバー付属ツールの画面解像度設定の画面の一部です。
「リフレッシュレート」という所がそうです。
見ると「60Hz」とあります。
「リフレッシュレート」とは、グラフィックボードやディスプレイが全ての画面を書き換えたり表示したりするのに掛かる最短の時間です。
Hz(ヘルツ)は以前に音のウンチクの所でも述べましたが1秒間に1回の振動が1Hzです。
よって私のPCの場合、1/60秒で1920×1080ドットの表示が完了する、又はグラフィックボードがその分のデータをディスプレイに転送できるということになります。
この数値が高いほど、より高速に画面を更新できたり、より多くの(細かい)ドットで表示ができたりします。
テレビゲーム機の画面とパソコンの画面で、表示できるドット数が大幅に違ったのはこれが原因です。
かつてのアナログテレビはパソコンの1/2~1/3程度のリフレッシュレート(テレビ的には垂直同期などと言ったりもした)しかなく、そのためにパソコンの1/2~1/3程度のドット数しか表示できなかったのです。
このように表示できるドット数に影響する他、画面書き換えの頻度にも影響するので、例えば動画とかを再生した場合、リフレッシュレートが高いとより滑らかな動きになり、低いとカクカクした動画になります。
そして「VSYNC」は、この画面書き換えの準備ができた、直前に送られたグラフィックデータの表示がすべて終わったよーという合図の信号です。
これを無視してグラフィックボードやディスプレイにグラフィックデータを送ると、まだ表示途中あるいは書き換え途中のものが表示されてしまいます。
例えば上半分は以前のグラフィックデータ、下半分は書き換え後の新しいグラフィックデータというように。
横スクロールのシューティングゲームなどでこれをやると非常に良くわかります。
画面のスクロールが上半分と下半分で微妙にズレるからです。
これを防止してより完璧なスクロールをさせるために、通常はVSYNCを確認して、おkだったら新しいグラフィックデータをプログラムで更新します。
これがグラフィックドライバーの設定画面などにある「VSYNC」のON/OFFの設定の意味です。
3Dバリバリのゲームなどで、自分のPCのグラフィックカードやディスプレイの性能が不足している場合、このVSYNCをOFFにしてやると、ゲームがスムーズにできるようになることがあります、画面表示は乱れるかもしれませんが。
VSYNCをONにしていると、性能不足で遅い書き換えをプログラムが待ってしまうからです。
CPUは次のプログラムの実行ができるのに、画面表示が終わらないので一時停止状態になってしまう。
だからゲームが遅くなるのです。
VSYNCをOFFにしてやると、画面の表示が終わっていようがなかろうが、お構いなしに画面関係のプログラムが先へ進むので、それ以外の処理も遅れる事無くCPUの能力を100%生かしたスピードで動けるようになるのです。
ただし先にも述べたように、以前の画面データが表示しきれてない、あるいは書き換え終わってないうちに新しいデータが送られるので、画面表示が乱れる可能性があります。
上半分と下半分で画面が微妙にズレるみたいな。
あるいはもっと酷いと、画面がちらついたりします。
まぁそこまで酷くなる事は今のPCだと無いと思いますけど。
ちなみにこのVSYNCですが、割り込み信号扱いです。
よってプログラム的に言えば、画面書き換えの処理をVSYNCの割り込み処理にしてしまえば、他の処理が滞る事はありません。
割り込み処理とは、文字通り今実行中のプログラムに割り込んで、別の処理をさせる事です。
割り込み信号が発生すると、CPUは今実行中のプログラムを一時中断します。
そして指定された割り込み処理を実行し、それが終わったら一時中断していたプログラムの実行を再開するのです。
これは画面更新以外にも、サウンドの処理でも昔から使われています。
この辺はプログラマ、しかもマシン語レベルで作る人以外には必要ない知識かもしれません。
ともかく一般人にとっては以下の事だけ知っていれば良いと思います。
・リフレッシュレートは高いほど細かくて綺麗なグラフィックが表示できるので、ディスプレイやグラフィックボードを購入する際は、なるべくこれの上限が高いものを選ぶ。
・動画が滑らかになる。
・動作が遅いゲームなどは、グラフィックドライバーのVSYNC設定をOFFにすると速くなる場合がある。
そんな感じです。