ubuntu 上安装mesa

来源:互联网 发布:ftp软件安卓版 编辑:程序博客网 时间:2024/05/16 05:55

最近上图形学的课,使用OPENGL

在windows上安装好了,可以使用,但是还感觉需要在linux上用一下才行,不然不舒服。

于是就在网上找了资料,发现在linux上但opengl和windows上的不一样。

是一个开发源码库mesa的东西


具体步骤详细参考

http://www.cnblogs.com/leon032/archive/2012/07/18.html


在http://mesa3d.sourceforge.net/上下载了mesalib7.10 和 mesaGLU7.10的源码包

解压 tar zxvf MesaLib-7.10.tar.gz 

然后就是 ./configure

然后就是没执行一次脚本 ,就提示出错,然后根据提示出错,安装缺少的软件包

我好像安装了

talloc

x11

libdrm

glproto

xext

xdamge

xfixes

expat

xt

当然,在最后,提示一切顺利,完成

提示可以执行make

将mesalib安装完成后,还需要在GLU安装好,使用同样安装方法,在这个版本安装的使用,要讲lib和GLU放在同一个文件夹下面解压比较好,因为,最后两个包会合并在一起,安装的时候会更方便。

此时,因为因为已经安装好了lib,核心函数库已经编译且复制到了usr目录下了,然后,把刚刚解压好的GLU,和lib在一个文件夹树里面,然后再次如同刚才一般 configure  ,然后make,然后make install ,这期间

我又出现了依赖包的问题 记得好像是xt-dev,然后安装了,再接着configure ,make,  make install,

   安装好了。

但是目前 ,因为没有安装glut工具包,就不能编译跨平台的opengl程序

如下程序:    窗口系统用的是X window,而三维数据的计算用的是mesa函数库。

(这个程序是网上copy来的,谢谢哪位仁兄了)


//  guad.c

#include<stdio.h>
#include<stdlib.h>
#include<X11/X.h>
#include<X11/Xlib.h>
#include<GL/gl.h>         
#include<GL/glx.h>
#include<GL/glu.h>

Display                 *dpy;
Window                  root;
GLint                   att[] = { GLX_RGBA, GLX_DEPTH_SIZE, 24, GLX_DOUBLEBUFFER, None };
XVisualInfo             *vi;
Colormap                cmap;
XSetWindowAttributes    swa;
Window                  win;
GLXContext              glc;
XWindowAttributes       gwa;
XEvent                  xev;

void DrawAQuad() {
 glClearColor(1.0, 1.0, 1.0, 1.0);
 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

 glMatrixMode(GL_PROJECTION);
 glLoadIdentity();
 glOrtho(-1., 1., -1., 1., 1., 20.);

 glMatrixMode(GL_MODELVIEW);
 glLoadIdentity();
 gluLookAt(0., 0., 10., 0., 0., 0., 0., 1., 0.);

 glBegin(GL_QUADS);
  glColor3f(1., 0., 0.); glVertex3f(-.75, -.75, 0.);
  glColor3f(0., 1., 0.); glVertex3f( .75, -.75, 0.);
  glColor3f(0., 0., 1.); glVertex3f( .75,  .75, 0.);
  glColor3f(1., 1., 0.); glVertex3f(-.75,  .75, 0.);
 glEnd(); }
 
int main(int argc, char *argv[]) {

 dpy = XOpenDisplay(NULL);
 
 if(dpy == NULL) {
     printf("\n\tcannot connect to X server\n\n");
        exit(0); }
        
 root = DefaultRootWindow(dpy);

 vi = glXChooseVisual(dpy, 0, att);

 if(vi == NULL) {
    printf("\n\tno appropriate visual found\n\n");
        exit(0); }
 else {
    printf("\n\tvisual %p selected\n", (void *)vi->visualid); }/* %p creates hexadecimal output like in glxinfo */


 cmap = XCreateColormap(dpy, root, vi->visual, AllocNone);

 swa.colormap = cmap;
 swa.event_mask = ExposureMask | KeyPressMask;
 
 win = XCreateWindow(dpy, root, 0, 0, 600, 600, 0, vi->depth, InputOutput, vi->visual, CWColormap | CWEventMask, &swa);

 XMapWindow(dpy, win);
 XStoreName(dpy, win, "VERY SIMPLE APPLICATION");
 
 glc = glXCreateContext(dpy, vi, NULL, GL_TRUE);
 glXMakeCurrent(dpy, win, glc);
 
 glEnable(GL_DEPTH_TEST);
 
 while(1) {
     XNextEvent(dpy, &xev);
        
        if(xev.type == Expose) {
            XGetWindowAttributes(dpy, win, &gwa);
                glViewport(0, 0, gwa.width, gwa.height);
            DrawAQuad();
                glXSwapBuffers(dpy, win); }
                
    else if(xev.type == KeyPress) {
            glXMakeCurrent(dpy, None, NULL);
         glXDestroyContext(dpy, glc);
         XDestroyWindow(dpy, win);
         XCloseDisplay(dpy);
         exit(0); }
    } /* this closes while(1) { */
} /* this is the } which closes int main(int argc, char *argv[]) { */

然后编译该文件    gcc  guad.c  -o guad.out  -lglut     // 错误,还没有安装glut,所以不能使用

                                gcc   guad.c -o guad.out  -lGLU   //这种方法才是可以的

安装glut,在和mesa配套的glut

安装freeglut3和freeglut3-dev这两个依赖包。

然后就可以使用gcc  guad.c  -o guad.out  -lglut
——————————————————————————————————————————————————————————————————————

配置完成

——————————————————————————————————————————————————————————————————

在这里,明显的看出,整个mesa的流程。因为ubuntu在安装的时候,我没有安装源码。所以在安装的过程中需要下载了很多的GUI源码。

OPOENGL 核心功能包和与GUI联系的辅助功能包,这两大部分

————————————————————————————————————————



原创粉丝点击