在看完 1980、1990 年代錯綜複雜的 2D 圖形發展之後,接下來我們要進入當今顯示卡主要的用途-3D 立體圖形的世界了。
Table of Contents
還沒有 3D 圖形加速卡的時代
首先我要特別強調,本篇所謂的「3D 圖形」指的是「即時運算 3D 物體的外觀並顯示在螢幕上」的意思,並不是指單純的立體圖形 (立體圖形並不是後來才有的東西,差不多早在電腦可以顯示圖形以後不久,就可以在電腦螢幕上見到所謂的 3D 立體圖形了,因為其實靜態的 3D 立體圖形只是角度改變跟上了光影的 2D 圖形罷了)。
所以在還沒有發展出獨立的 3D 圖形加速卡之前,實際上電腦就已經有能力進行 3D 物體外觀的即時運算了 (當時沒有特化的專用晶片,所以是通通丟給 CPU 負責),只是速度慢到人們難以接受的地步而已,更別提要搞出動畫效果或是看起來像影片順暢撥放的等級了。
3D 圖形 API 的發展
在 1980 年以前,基本上要開發一套可以在各種系統之間通用的 2D、3D 圖形程式是非常困難的,因為每台電腦使用的顯示設備可能都不一樣,每家圖形晶片廠商設計出來的產品具備的特性也各有不同,因此在 1980 年代的軟體工程師得針對各式各樣的電腦撰寫不同的程式碼版本,這顯然是很浪費精神與體力的一件事情。
還記得前面我們提過在 Windows 3.0 時期,微軟在作業系統中加入了 GDI 這玩意兒嗎?從那之後廠商們只需要針對 GDI 這個 API 介面進行優化,並撰寫驅動程式給作業系統用來負責硬體與 GDI 層之間的通訊即可,這讓顯示卡的通用性與開發難度都獲得了相當程度的改善。
而在 3D 圖形的世界裡人們也做了類似的事情,從早期的各自為政開始逐步發展為幾套大家共同使用的 3D 圖形 API,在開始介紹 3D 圖形之前我想先談談這些當今或歷史上曾經扮演重要角色的 API (不過我在這邊只先談發展緣起,各版本的功能在之後介紹顯示卡時才會點到)。
早期的 3D 圖形 API-PHIGS 與 IRIS GL
在 1990 年代初期,即時 3D 圖形演算基本上還沒有進入個人電腦領域,而當時在工作站與伺服器的世界裡最主要使用的 3D 圖形 API 有 PHIGS 與 IRIS GL 兩種。
IRIS GL
IRIS GL 由當時業界的領導者 Silicon Graphics, Inc. (SGI,是一家成立於 1981 年的公司,以設計繪圖工作站與專業繪圖領域晶片聞名,後於 2009 年申請破產保護並被一家叫做 Rackable Systems 的公司所併吞) 所提出,全稱為 Integrated Raster Imaging System Graphics Library,是一款私有的 (封閉原始碼) 2D/3D 圖形 API,主要用於 SGI 自家的 IRIS 繪圖工作站上 (基於 MIPS 架構,使用 SGI 自家發展的 IRIX 作業系統)。
PHIGS
而全稱為 Programmer’s Hierarchical Interactive Graphics System 的 PHIGS 則是 IRIS GL 最主要的競爭對手,這款 API 最大的特色是 PHIGS 是一款開放的 API 標準因此獲得不少大廠的支持 (特別是 SGI 的競爭對手),許多知名科技大廠都有推出自家產品適用的 PHIGS 版本,例如 IBM 的 graPHIGS、Sun 的 SunPHIGS 等。
這兩款 API 在 1995 年以前互有競爭,而 PHIGS 更是在 1997 年正式成為了國際 ISO 標準 (ISO/IEC 9592;1997),但 PHIGS 最終因為不支援立即模式 (Immediate Mode,指工作站接收到繪圖指令後就立即使用幾何圖形產生器繪製出物體圖形的能力) 與使用上比起 IRIS GL 來說困難、複雜許多 (我想從英文全名上就看得出這點了 XD),因此在接下來的發展中漸漸沒落。