作者:黃明遠
在windows的世界裡,3D功能是一個比較熱門的話題,大多數的游戲都是基於3D的。但在*nix的世界,3D好象就不是那麼太重要的,甚至有的”大俠“級的高手,竟然不知道有3D功能的存在。本人為了將筆記本的3D功能啟動(操作系統用FreeBSD),費盡了心思,整日游蕩於sourceforge和google之間,終於經過近一個月的努力,打開了3D功能,將主要的問題羅列於下:
(聲明:本文內容皆為本人的個人理解,有很多可能是錯誤的,敬請各位高手指正)
一、FreeBSD下實現3D的原理。
其實這不僅僅是FreeBSD下的原理,也是整個*nix家族的原理。
3D功能的實現其實也是分層的,近似於OSI的分層模型。
(1)、在最上端,是應用層,就是應用程序提出3D渲染的申請。這個申請通過一個函數調用,從而調用下面一層的3D加速的調用接口。
(2)、3D加速的函數接口(API)。它將應用層的各個應用轉換為系統的調用,從而可以讓X系統去和硬件打交道。最流行的API包括:DirectX,OpenGL等。在*nix的領域,就不得不提到一個Windows領域比較陌生的名詞:MESA。最原始的Mesa就是一個OpenGL的實現,現在的Mesa在許多地方都有所突破。詳情可以參看:
而這些函數和X系統的接口,就是GLX。GLX是運行在X上的一種協議,能過它,函數調用才能和X系統打交道。
(3)、DRI。這是實現3D功能最重要的部分。
DRI是Direct Rendering Infrastructure,可以簡單得把它理解為X和硬件間的接口。但它包含很多獨立的模塊,負責從X到硬件的各個環節,包括內核。
它最主要的工作就是將Mesa或OpenGL的函數調用轉換為硬件的指令,從而指揮硬件進行渲染等工作。
(4)、DRI驅動程序。這是直接和硬件相關的程序。它提供對硬件的支持。
二、實現的條件
由前面的介紹可以知道,最重要的事情就是讓你DRI支持你的顯卡。目前為止,在FreeBSD中,DRI支持以下幾個系統的顯卡(在/usr/src/sys/i386/conf/NOTES中有介紹):
device drm # DRM core module required by DRM drivers
device i915drm # Intel i830 through i915
device mach64drm # ATI Rage Pro, Rage Mobility P/M, Rage XL
device mgadrm # AGP Matrox G200, G400, G450, G550
device r128drm # ATI Rage 128
device radeondrm # ATI Radeon
device savagedrm # S3 Savage3D, Savage4
device sisdrm # SiS 300/305, 540, 630
device tdfxdrm # 3dfx Voodoo 3/4/5 and Banshee
如果你的顯卡沒在上面列出,那麼你就要做好打不開3D的准備!
如果你的顯卡是nVidia的,那麼你不要悲傷,接著往下看,你會發現你選擇nVidia是沒錯的!
如果你的顯卡在上面列出了,那麼你也不要高興得太早,因為這些當中都有例外,就比如說我的筆記本顯卡:ATI IGP 340M,就是很難實現3D的一款。
測試你的顯卡是不是能實現3D功能,可以采取以下辦法:
(1):dmesg | grep agp,如果出現
agp0: mem 0xe0000000-0xe3ffffff at device 0.0 on pci0
的字樣,那麼你的顯卡就有可能實現3D功能。如果什麼也沒有的話,那麼恭喜你,你再也不用為3D功能而費心了,你應該毫不猶豫地關上這篇文章,並且在你得到新的顯卡前也不用再打開。
(2):kldload drm,如果沒報錯的話,那麼你的顯卡基本上就可以實現3D功能了。
如果很遺憾地報錯了,那麼你成功的機率就減小了一半,或者說希望不很大。
(3):前兩關都過了,就可以實驗了。
三、3D功能的實現。
1、普通顯卡產:
(1):安裝好Xorg和KDE(Gnom也可以)。
(3):startx。這時候會出現三個窗口和一個時鐘。有的人可能覺得是什麼地方出錯了,其實這是對的,因為這個時候,你還沒有進入KDE。
(4):退出X。在最左邊的窗口中輸入:exit。或者按ctrl+Alt+BackSpace。
(5):cat /var/log/Xorg.0.log | grep " Direct Rendering enabled",如果出現下面的字樣,
(II) RADEON(0): Direct Rendering enabled
那麼你的3D就啟用的。
如果沒有,那麼你要仔細讀/var/log/Xorg.0.log。它會在某一行告訴你沒啟用的原因的。
2、nVidia的顯卡:
安裝完成再啟動X,這時候就會在KDE之前出現一個nvidia的圖標,很快就閃過去。(但本人現在已經沒有測試環境,要不也可以用相機拍下來。)只要出現這個圖標。那就說明你已經安裝成功了。
四、3D功能的確認
也就是說,怎麼樣才能確定是3D加速啟用?
(1)最正式的是:打開一個終端,運行:glxinfo。在第二行或第三行,如果出現”Direct Rendering: YES“字樣,那就說明已經啟用3D加速了。
(2)經實踐,最好用的一個就是運行屏幕保護程序,選中帶GL的那幾個,然後測試,如果不卡,那麼就是已經啟用了。最明顯的就是:幻想。
如果能平滑地顯示,那麼就已經啟用了。
五、可能會出現的問題
(1)你的顯卡關列表中,但是還是加載不上。
解決辦法:用Google或baidu去搜吧。
(2)用共享內存的顯卡,結果老出問題。
(3)IBM r40e系統的筆記本顯卡不能用,老提示“不支持AGP”。
解決辦法:升級到6.1-Release。這可是6.1-Release的一個大改進,把我的筆記本顯卡問題給解決了。(感謝FreeBSD的開發團隊!)
(4)我的顯卡應該沒問題,但我還是不能啟用3D加速。
(5)我想啟用雙顯模式,應該怎麼辦?
解決辦法:去man吧。
(6)啟用3D加速後有什麼好處?
答:首先,你可以玩quake;其次,你的所有和圖形相關的軟件都明顯提速;第三,你可以看一個絢麗的屏保;第四,由於很多工作都讓顯卡干了,可以明顯延長你的CPU的壽命!最後,還有你自己的理由。