Bit Block Transfer

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動先: 案内検索

Bit Block Transfer(びっと・ぶろっく・とらんすふぁー)は、コンピュータにおける描画アルゴリズムの一つ。描画する画像データ (ビットマップ) を一旦メインメモリに蓄え、最終的な画像データだけをVRAMにまとめて転送する。BitBlt (読みは「ビットブリット」) と略されるが、これをドライバやゲームの設定ファイルなどでBitBit(lではなくてi)と表現してしまう間違いも多く見られる。 また、BitBlit(lの後にiを挿入)と間違っている例もある。

概要[編集]

CPUからVRAMに対する直接アクセスはCRTCからのアクセスの干渉などハードウェア的な制約が多いため、メインメモリに対するアクセスよりも低速であることが多い。このため、画像操作の度にVRAMにアクセスを行うことは描画速度を低下させるばかりか、描画途中で画面のフレームが切り替わってしまう状況を生じやすく、ちらつきを発生させる原因となる。これらの問題の解決方法の一つとして Bit Block Transfer が利用される。CPUの代わりにDMAコントローラを用いてメインメモリからVRAMビットマップを転送するアーキテクチャも存在する。 Macintoshでは「オフスクリーン描画」と呼ぶのが普通で、Bit Block Transfer や BitBlt という語句はめったに出てこない。

Bit Block Transfer 用に確保したメモリ領域はオフスクリーンまたはオフスクリーンバッファと呼ぶ。またわかりやすく仮想画面と呼ぶこともある。

逸話[編集]

当初は、PARCで開発されたAlto向けに開発されたSmalltalkシステムで、ポップアップするメニューやオーバーラップするウインドウを有するGUIの効率化を図るためにダン・インガルスらにより考案・実装されたものだが、後にマイクロコード化され、Altoの組み込みの機能としてSmalltalk以外のGUIシステムでも広く利用されるようになった。Smalltalkシステムでは、GUIウィジェットの通常描画の他にも、タートルグラフィックス、フォントの複数のスタイル(ボールド、イタリック、アンダーライン、取り消し線)の自動生成、あるいは、描画ツールでドット単位の部分編集を可能にする拡大表示、図形の回転処理などを行なう際などに活用された。なお、1979年時点でのSmalltalkでは隠れたウインドウの見える部分だけの描画更新処理は行なっていなかったのだが、おそらく前述マイクロコード化などのハードウエア支援も手伝って比較的に高速にウインドウ処理をこなすSmalltalkシステムのデモを見たビル・アトキンソンが思い込みで、不定形領域を対象にでき、しかもソフトウエアのみで部分的な再描画を行なっているものと誤解。その認識のまま、後にAppleLisaMacintoshでGUI描画の中核を担う、“リージョン”の扱いと比較的高速な描画が可能なQuickDrawとして、ついに完成させてしまった逸話がある。

関連項目[編集]