歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Unix知識 >> Unix教程

FreeBSD下3D功能的實現

FreeBSD

  在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: <VIA 82C691 (Apollo Pro) host to PCI bridge> mem 0xe0000000-0xe3ffffff at device 0.0 on pci0

  的字樣,那麼你的顯卡就有可能實現3D功能。如果什麼也沒有的話,那麼恭喜你,你再也不用為3D功能而費心了,你應該毫不猶豫地關上這篇文章,並且在你得到新的顯卡前也不用再打開。

  (2):kldload drm,如果沒報錯的話,那麼你的顯卡基本上就可以實現3D功能了。如果很遺憾地報錯了,那麼你成功的機率就減小了一半,或者說希望不很大。

  (3):前兩關都過了,就可以實驗了。

  三、3D功能的實現

  1、普通顯卡產:(1):安裝好Xorg和KDE(Gnom也可以)。

  (2):Xorg -configure。這樣在我的home裡有一個xorg.conf.new的文件,把這復制到/etc/X11/xorg.conf。

  (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的顯卡:如果你用的是nVidia的顯卡,那就到去下載最新的FreeBSD的官方驅動,下載後直接安裝。

  安裝完成後,用kldstat 查看,會多了linux的模塊。nVidia的說明書上說這是為了兼容而設的。FreeBSD的驅動是一個純FreeBSD的驅動,不是linux兼容的。可以將它去掉。(/boot/load.conf)。

  安裝完成再啟動X,這時候就會在KDE之前出現一個nvidia的圖標,很快就閃過去。(但本人現在已經沒有測試環境,要不也可以用相機拍下來。)只要出現這個圖標。那就說明你已經安裝成功了。

Copyright © Linux教程網 All Rights Reserved