热门关键字:  ubuntu  分区  Fedora  linux系统进程  函数

FreeBSD下3D功能的实现

来源: 作者: 时间:2007-08-23 Tag: 点击:
在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在许多地方都有所突破。详情可以参看:
  http://www.mesa3d.org/
  而这些函数和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,如果出现

QUOTE:
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):前两关都过了,就可以实验了。


相关文章:
totem-xine 缺少解码器问题(感谢阿朱少年侠客)
audacious支持ape和cue了
在Linux下面玩neogeo游戏
Linux下面玩街机
在Linux下面玩PS1游戏
H.264与MPEG4区别
mplayer两个问题
Amarok中文乱码问题的解决
让Amarok支持RealyPlayer的所有媒体格式
在Linux上面装上了MPlayer
linux 视频聊天
二个Linux系统常青树游戏
想在Linux下玩游戏可以玩Extreme Tux Racer
Songbird集播放器与浏览器于一身发布0.4版
Linux 2D 游戏收集
用XMAME模拟器在Linux上玩游戏
如何把spca5xx驱动安装到Redhat9上
Linux下使用摄像头
mplayer解码
Linux中安装Alsa声卡驱动的一些经验心得
关于MPlayer安装过程中的问题及解决方法
Linux声音系统和PulseAudio简介
在Linux操作系统下将CD转录为WAV的方法
Linux系统下简洁而朴实的Mesk音乐播放器
Linux操作系统下的几个小游戏模拟器
Linux操作系统中的Flash录制工具Vnc2swf
Ubuntu上的三个赛车游戏(组图)
全方位接触 Linux的声音系统
Mplayer完美安装手册
解决ubuntu 7.04(10)识别了声卡 喇叭显示正常 没