ダブルバッファリング
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/08/27 05:14 UTC 版)
「Bit Block Transfer」の記事における「ダブルバッファリング」の解説
「en:Multiple buffering」も参照 CPUからVRAMに対する直接アクセスはCRTCからのアクセスの干渉などハードウェア的な制約が多いため、メインメモリに対するアクセスよりも低速であることが多い。このため[疑問点 – ノート]、画像操作の度にVRAMにアクセスを行うことは描画速度を低下させるばかりか、描画途中で画面のフレームが切り替わってしまう状況を生じやすく、ちらつき(フリッカー)、ティアリング、カクつき(スタッタリング)を発生させる原因となる。これらの問題の解決方法の一つとして、モニターに表示するための表画面となる画像データ領域をVRAMに、そして裏画面となる同サイズのデータ領域をメインメモリに確保しておき、画像操作は裏画面にて行ない、最終的に裏画面のデータを表画面に一括転送するというダブルバッファリング手法がある。この転送時にビットブロック転送が利用される。Windows API(GDI)におけるBitBlt関数のように、グラフィックスデバイス(グラフィックスチップ、GPU)によるハードウェアアクセラレーション機能を備えるものもある。CPUの代わりにDMAコントローラを用いてメインメモリからVRAMにビットマップを転送するアーキテクチャ[要説明]も存在する。Macintoshでは「オフスクリーン描画」と呼ぶのが普通で、"Bit Block Transfer"や"BitBlt"という語句はめったに出てこない。 ダブルバッファリングの裏画面用に確保したメモリ領域はオフスクリーン、オフスクリーンバッファあるいはバックバッファと呼ぶ。またわかりやすく仮想画面と呼ぶこともある。 Direct3DやOpenGLなどのグラフィックスハードウェアアクセラレーションに対応したAPIを利用してGPU上で画像処理を行なう場合は、メインメモリを介することなくVRAM上で直接画像データを高速に操作できるが、表画面に対する直接操作は依然としてちらつきの問題を生じるため、VRAM上に裏画面を用意しておき、フリップ(スワップ)機能を用いてダブルバッファリングを行なうのが通例である。同様に、メインメモリの一部をVRAMとしてGPUと共用するオンボードグラフィックスなどの環境であっても、ダブルバッファリングが必要である。
※この「ダブルバッファリング」の解説は、「Bit Block Transfer」の解説の一部です。
「ダブルバッファリング」を含む「Bit Block Transfer」の記事については、「Bit Block Transfer」の概要を参照ください。
- ダブルバッファリングのページへのリンク