什么是Mesa3D图形库

简单来说Mesa3D图形库就是OpenGL API的一种开源实现. 众所周知, OpenGL API是定义了一个跨编程语言、 跨平台的应用程序接口(API)的规范, 它用于生成2D和3D图像, 而它仅仅是定义了一种API, 并没有任何实现细节. 而OpenGL API的具体实现有很多, 主要分为开源实现和闭源实现, 闭源实现如各大GPU厂商自己实现的闭源OpenGL图形库, 例如AMD显卡的Catalyst闭源驱动; 而开源实现便是Mesa3D, 它是由Brian Paul在1993年8月开始开发的一个实现了OpenGL API的开源图形库. 它目前隶属于freedesktop.org, 广泛运用在Liunx, BSD等操作系统.

PS: 其实最新版本的Mesa3D图形库也支持Direct3D9的, Mesa3D除此之外还支持OpenCl, OpenGL ES等等.

Mesa3D图形库相关资源

关于Mesa3D图形库的资源可以说是非常的少,即使是英文资源也是少的可怜,这里把我最近找到的一些参考资源都列举下来,如果大家有更好的学习资源可以留言跟我说一下.

  • Mesa3D官网: 这个网站是Mesa3D的官方网站,是最权威最有用的网站,一定要把上面所有的内容都看一遍.
  • Mesa3D维基百科:这个网站主要会介绍一些Mesa3D的前世今生,比如历史版本信息以及支持的OpenGL版本信息.
  • Iago Toral博客: 这个网站是一个老外的博客网站,上面介绍了很多Linux系统图形栈以及Mesa3D的分析.
  • tuituji博客:这个网站是一个国人的博客园博客,上面介绍了AMD显卡编程相关的东西,因为Mesa3D采用硬件加速,所以可以了解以下显卡的编程模型.另外,tuituji的github上也有一些好东西,可以学习一下.
  • Gallium3D: Gallium3D是Mesa3D的一个非常重要组成部分,这个网站是Gallium3D的较为官方的介绍网站,值得学习.

Mesa3D图形库基本结构

以10.1.4版本的Mesa3D为例,主要由mesa主模块、gallium模块、egl模块、glsl模块和glx等模块组成. 其中最重要的模块就是主模块,它主要包括mesa/和mapi/这两个folder. mapi/负责所有API的初始化工作,为各个API设置分发表等;mesa/则是整个Mesa3D图形库的核心,它负责的有vbo相关工作、非Gallium3D支持的驱动DRI实现以及软件实现渲染管道等等. gallium模块则是Mesa3D整合原开源项目Gallium的结果,主要实现驱动无关的硬件加速. egl模块用来实现EGL库,glsl模块用来实现GLSL编译器,glx模块用来实现GLX库.

- EOF -

声明:本文采用BY-NC-SA协议进行授权.转载请注明: Mesa3D图形库基本介绍



comments powered by Disqus

Hitwebcounter.com Free