影片圖形陣列

視訊圖形陣列（Video Graphics Array，縮寫：VGA）是IBM的一個使用類比訊號的電腦顯示標準，在1987年隨IBM PS/2系列電腦推出。VGA是大多數PC製造商所遵循的最後一個IBM圖形標準，幾乎1990年後的所有PC圖形硬體都最低支持VGA。

當用VGA來表示解析度時，通常是指640×480。

## 顏色顯示

VGA除了擴充為256色的EGA式色版外，這256種顏色是可以改變的。可以透過VGA DAC，任意的指定為任何一種顏色。這就程度上改變了原本EGA的色版規則。因為在CGA上，只有16種無法改的色彩。在EGA上雖然仍只能顯示16種色彩，但這16種色彩其實是從64彩色盤中挑選出的。EGA分配給每個色頻（RGB）兩個位元，$2^2$=4種變化，$4^3$個色頻=64種色彩。而VGA在指定色版顏色時，一個顏色頻道有6個bit，紅、綠、藍各有64種不同的變化，因此總共有262,144種顏色。在這其中的任何256種顏色可以被選為色版顏色（而這256種的任何16種可以用來顯示CGA模式的色彩）。

這個方法最終仍然使了VGA模式在顯示EGA和CGA模式時，能夠使用前所未有的色彩，因為VGA是使用模擬的方式來繪出EGA和CGA畫面。提供一個色版轉換的例子：要把文字模式的字元顏色設定為暗紅色，暗紅色就必須是CGA 16色集合中的一種顏色（譬如說，取代CGA預設的7號灰色），這個7號位置將被指定為EGA色版中的42號，然後VGA DAC將EGA #42指定為暗紅色。則畫面上的原本的CGA七號灰色，都會變成暗紅色。這個技巧在256色的VGA DOS遊戲中，常常被用來表示載入遊戲的淡入淡出畫面。

總結來說，CGA和EGA同時只能顯示16種色彩，不過EGA有更多色盤可用。而VGA不但相容於CGA或EGA模式，更可以使用Mode 13h模式一次顯示256色版中的所有色彩，而這256種顏色是從262,144種顏色（18-bit）中挑出的。

## 記憶體定址

VGA所使用的視訊記憶體，透過一個窗口對應於PC的主記憶體，它們的真實位址為0xA000和0xC000之間的記憶體。典型地來說位址的開始點是：

- 0xA000使用於EGA/VGA圖型模式（4 KB）
- 0xB000單色文字模式（2 KB）
- 0xB800彩色文字模式和CGA相容模式（2 KB）

由於使用的區段皆不相同，在同一部機器上裝置一個單色顯示卡（MDA）和另一個彩色顯示卡（VGA、EGA或CGA）是不衝突的。在1980年代初，這種典型的搭配方式用於Lotus 1-2-3試算表上，一部高解析單色螢幕用來顯示文字，而另一部低解析的CGA螢幕用來顯示圖表。許多程式設計師也用這種配置來開發軟體，一部螢幕顯示debug細節，另一部螢幕則顯示真正的軟體運行畫面。許多商業的除錯軟體都支援這種配置，例如Borland的Turbo Debugger、由Alan J. Cox開發的D86、微軟的CodeView等，Turbo Debugger和CodeView可以甚至可拿來debug微軟的Windows軟體。也有DOS驅動程式如ox.sys模擬一個終端機來接受Windows的debug訊息，而不用真正接上另一個終端機。在DOS底下使用「單色模式」指令，使其輸出轉向單色也是可能的。另外，假如電腦上並無單色顯示卡，那麼可以使用EMM386.EXE程序讓其他程式可以使用B000-B7FF這一段記憶體。（於config.sys檔案中加入"DEVICE=EMM386.EXE I=B000-B7FF"）

## 程序技巧

一個未被紀錄但十分廣泛使用的技術稱作Mode X（由Michael Abrash導入），使程式設計師能夠使用在Mode 13h之下無法做到的解析度。他將256 KiB連續的視訊記憶體「解開」並分成四個層次，因此在256色模式時全部256 KiB的記憶體都可以使用。技術上這將使得處理變得更複雜，並且效能降低。但在一些特殊情況下，效能損失的情況可以被彌補：

- 單色的多邊形填色增快，因為一次寫入可以設定四個像素。
- VGA可以用來協助視訊記憶體之間的拷貝，有些時候會比使用8088或80286等慢速CPU更快。
- 提供更高的解析度：16色可使用704×528、736×552、768×576、甚至800×600。諸如Xlib（1990年代早期的C圖形函式庫）和ColoRIX（256色的圖形程式）支援256色下的各種解析度調和：直行256、320和360個像素，以及水平行200、240、256、400和480個像素的組合（上限的640×400幾乎用掉256 KiB中每一個byte）。不過，320×240仍然是最常被使用的，因它為典型的4:3比例，為方形像素。
- multiple video pages讓程序員能夠使用雙重緩衝（所有的16色模式都可），這在Mode 13h無法辦到。

有時候，顯示器必須降低更新頻率來滿足這些模式，這會造成眼睛的疲勞這樣的低解析度雖然在PC市場早已淡出，但在Pocket PC和PDA市場，它正逐漸成為標準。它也常被用來指稱15針的D型接頭，這種接頭仍然用來傳輸各式各樣解析度的類比訊號。

VGA曾經被IBM官方宣佈使用XGA標準所取代，但在歷史上，它其實是被其他的OEM製造商用所謂的SVGA標準所取代。

## 技術性細節

VGA中的A指的是「陣列(array)」而非「轉換器(adapter)」，因為它從一開始就被設計為一個單一的整合晶片，用來取代Motorola 6845和數十個離散的邏輯晶片組合而成的ISA母版，這種設計是之前的MDA、CGA和EGA所使用的。VGA的這個特性允許它輕易的植入PC的主機板之中，只需要額外的視訊記憶體、振盪器和一個RAMDAC，就具備顯示功能。IBM PS/2電腦系列就是採用將VGA放置於主機板上的設計。

VGA的規格表如下：

- 256 KiB的Video RAM
- 16色和256色模式
- 總共262,144種顏色的色版（紅、綠、藍三色各6bit，總共$(2^6)^3$種）
- 選擇性的25.2 MHz或28.3 MHz處理頻率
- 最多720個水平像素
- 最多480條線
- 最高70 Hz的更新頻率
- Vertical Blanking interrupt（不是所有卡都支援）
- 平面模式：最多16色（4bit面板）
- Packed-pixel模式：256色(Mode 13h)
- 順暢捲動畫面的能力
- Some "Raster Ops" support
- Barrel shifter
- 支援分割畫面

VGA支援可單獨操控像素的APA(All Points Addressable)模式，也支援字母與數字的文字模式。標準的圖形模式如下：

- 640×480×16色
- 640×350×16色
- 320×200×16色
- 320×200×256色(Mode 13h)

它也支援用模擬的方式畫出向下兼容的解析度：EGA、CGA和MDA。

## 標準文字模式

標準的VGA文字模式使用80×25或40×25個字母或數字組成的平面。每個字元的塊狀區域可以選擇16種前景色和8種背景色；8種背景色來自bit容量較低的集合（以今天的標準來說，例如ffffff或者是000000）。而字元本身也可設定是否閃爍，而字元的閃爍動作都是同時的。畫面的閃爍功能和選擇背景顏色的功能是可交換的，換句話說兩者只能擇一。以上這些選項和IBM先前生產的CGA轉換器是相同的。

VGA雖然支援黑白和彩色的文字模式，但黑白模式很少使用。大多的VGA在顯示黑白模式時使用彩色模式，即是將灰色字畫在黑色背景上。而使用VGA的單色顯示器也能很好的支援這樣的彩色模式。現代顯示器和顯示卡若連接不當，偶爾會導致顯示卡的VGA部份偵測顯示器為單色的，而這將使BIOS開機顯示為黑白模式。通常在載入作業系統和適當的驅動程式以後，顯示卡的設定被覆蓋，顯示器就會變回彩色。

在彩色的文字模式中，每個字元其實由兩個byte代表。較低的一個byte用來顯示字元，而較高的byte就用來代表彩色、閃爍等等屬性。這種成對的byte模式是從CGA就一直傳續下來的。

## VGA色版

VGA的色彩系統可以向前相容於EGA和CGA轉換器，而它在其上又新增了一種設定。CGA可以顯示16種色彩，EGA則將其擴充成從64種顏色色版選出的16色模式（即紅綠藍各2 bits）。VGA則更將其擴充成256種顏色色版，但為了向前相容，一次只能選擇256種之中的64種（例如第一個64種顏色集合、第二個...）。所以一個。它們也不相容於較老舊的顯示器，將造成諸如overscan、閃爍、垂直滾動、缺乏水平同步等等缺點。因為如此，多數的商業軟體使用的VGA調適都限制在顯示器的「安全界線」之下，例如320×400（雙倍解析度，2 video pages）、320×240（方形像素，3 video pages）和360x480（最高的相容解析度，1 video page）。