• Fedora和Ubuntu下安装OpenGL开发环境配置


    Fedora下OpenGl开发环境配置

    开发OpenGL工程需要3个库文件和对应的头文件:

    libglut.so,libGLU.so,libGL.so, gl.h ,glu.h, glut.h

    这些库在linux系统中默认都有,使用locate命令验证都在标准库目录(/usr/lib)下:

    [root@localhost GL]# locate libglut.so
    /usr/lib/libglut.so.3
    /usr/lib/libglut.so.3.9.0
    
    [root@localhost GL]# locate libGLU.so
    /usr/lib/libGLU.so
    /usr/lib/libGLU.so.1
    /usr/lib/libGLU.so.1.3.070700
    
    [root@localhost GL]# locate libGL.so
    /usr/lib/libGL.so
    /usr/lib/libGL.so.1
    
    /usr/lib/libGL.so.1.2
    

    但是头文件是没有的,安装开发包之前使用locate验证无法找到相关文件。

    安装开发包(需要3个开发包):

    yum install mesa-libGL-devel mesa-libGLU-devel //这两个是opengl核心库
    
    yum install freeglut-devel //OpenGL Utility ToolKit
    

    安装完之后用rpm命令验证安装包和查询安装的文件以及安装在什么位置(以glut-devel为例):

    [root@localhost etc]# rpm -qa | grep glut
    
    freeglut-devel-2.6.0-1.fc12.i686
    
    [root@localhost etc]# rpm -ql freeglut-devel
    /usr/include/GL/freeglut.h
    /usr/include/GL/freeglut_ext.h
    /usr/include/GL/freeglut_std.h
    /usr/include/GL/glut.h
    /usr/lib/libglut.so
    

    由上可见安装freeglut之后在/usr/include/GL/目录下添加了glut.h,在/usr/lib/下替换了libglut.so文件。

    可以在/usr/include/GL下使用ls验证一下安装的头文件:

    [root@localhost GL]# ls
    freeglut_ext.h  freeglut_std.h  gl.h         glu.h         glut.h    glx.h     glx_mangle.h  glxproto.h   internal
    freeglut.h      glext.h         gl_mangle.h  glu_mangle.h  glxext.h  glxint.h  glxmd.h       glxtokens.h
    

    好了,相关库和头文件都一切就绪,我们可以来写一个最简单的例子程序:

    #include <GL/glut.h>
    void display(){
        glClear(GL_COLOR_BUFFER_BIT);
        glBegin(GL_POLYGON);
        glVertex2f(-0.5,-0.5);
        glVertex2f(-0.5,0.5);
        glVertex2f(0.5,0.5);
        glVertex2f(0.5,-0.5);
        glEnd();
        glFlush();
    }
    int main(int argc,char *argv[]){
        glutInit(&argc,argv);
        glutCreateWindow("Simple");
        glutDisplayFunc(display);
        glutMainLoop();
        return 0;
    
    }
    

    使用如下命令编译:

    gcc simple.c -o app -lglut -lGL -lGLU -lm -lX11 -lm
    

    运行./app出现一个画了白色矩形的窗口:

    本文引用地址:http://blog.sciencenet.cn/blog-623402-546787.html 此文来自科学网霍振华博客,转载请注明出处。

    ===

    Ubuntu下安装OpenGL配置

    OpenGL 是一套由SGI公司发展出来的绘图函式库,它是一组 C 语言的函式,用于 2D 与 3D 图形应用程式的开发上。OpenGL 让程式开发人员不需要考虑到各种显示卡底层运作是否相同的问题,硬体由 OpenGL 核心去沟通,因此只要显示卡支援 OpenGL,那么程式就不需要重新再移植,而程式开发人员也不需要重新学习一组函式库来移植程式。

    安装

    首先不可或缺的就是编译器与基本的函式库,如果系统没有安装的话,依照下面的方式安装:

        $ sudo apt-get install build-essential
    

    安装OpenGL Library

        $ sudo apt-get install libgl1-mesa-dev
    

    安装OpenGL Utilities

        $ sudo apt-get install libglu1-mesa-dev
    
       OpenGL Utilities 是一组建构于 OpenGL Library 之上的工具组,提供许多很方便的函式,使 OpenGL 更强大且更容易使用。
    

    安装OpenGL Utility Toolkit

        $ sudo apt-get install libglut-dev
    
           OpenGL Utility Toolkit 是建立在 OpenGL Utilities 上面的工具箱,除了强化了 OpenGL Utilities 的不足之外,也增加了 OpenGL 对于视窗介面支援。
           注意:在这一步的时候,可能会出现以下情况,shell提示:
    
        Reading package lists... Done
        Building dependency tree
        Reading state information... Done
        E: Unable to locate package libglut-dev
    

    将上述$ sudo apt-get install libglut-dev命令改成$ sudo apt-get install freeglut3-dev即可。

    测试

    示例test.c源码:

        #include <GL/glut.h>
    
        void init(void)
        {
            glClearColor(0.0, 0.0, 0.0, 0.0);
            glMatrixMode(GL_PROJECTION);
            glOrtho(-5, 5, -5, 5, 5, 15);
            glMatrixMode(GL_MODELVIEW);
            gluLookAt(0, 0, 10, 0, 0, 0, 0, 1, 0);
    
            return;
        }
    
        void display(void)
        {
            glClear(GL_COLOR_BUFFER_BIT);
            glColor3f(1.0, 0, 0);
            glutWireTeapot(3);
            glFlush();
    
            return;
        }
    
        int main(int argc, char *argv[])
        {
            glutInit(&argc, argv);
            glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
            glutInitWindowPosition(0, 0);
            glutInitWindowSize(300, 300);
            glutCreateWindow("OpenGL 3D View");
            init();
            glutDisplayFunc(display);
            glutMainLoop();
    
            return 0;
        }
    

    编译程式时,执行以下指令:

        $ gcc -o test test.c -lGL -lGLU -lglut
    

    执行:

        $ ./test
    

    配置IDE,用cmake作为构建工具

    其实opengl的程序的cmake写法很简单,因为在linux下,头文件已经自动放到系统include路径了,因此只需要在链接的时候加入链接库,和前面用gcc/g++编译的设定几乎一致,无非是把参数写在CMakeLists.txt中。比如用clion作为IDE,那么对应的CMakeLists.txt为:

    cmake_minimum_required(VERSION 3.3)
    project(hello)
    
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
    
    set(SOURCE_FILES main.cpp)
    add_executable(hello ${SOURCE_FILES})
    target_link_libraries(${PROJECT_NAME} GL GLU glut)   #此行为新增
    

    当然,如果你觉得写makefile很容易,那也可以去写的,关键点还是链接库要加入 GL GLU glut三个。

    关于cmake的用法,可以参考10分钟搞定cmake 。如果进一步想看看pkg-config是怎么玩的,可以参考pkg-config的用法 ,即在/usr/lib64/pkgconfig路径下查看对应的pc文件。

    glew.h头文件

    目前还没有用到glew.h头文件,前面fedora的安装中也没有相关的安装。安装方法:

    sudo dnf install glew-devel
    #会安装glew-devel 和 libGLEWmx两个rpm包
    

    如果是ubuntu,看起来应该这样安装:

    sudo apt-get install libglew-dev
    
  • 相关阅读:
    Elasticsearch节点下线(退役)and unassigned shards
    详解Hbase架构原理
    docker安装(yum方式)
    矩形的逆时针蛇形填数
    CentOS7安装iptables防火墙
    Linux:-bash: ***: command not found
    两个大数相乘JAVA版
    SQL Server 2012时出现命名管道提供程序: 无法打开与 SQL Server 的连接
    jstl函数库及自定义函数库
    This Android SDK requires Android Developer Toolkit version 23.0.0 or above
  • 原文地址:https://www.cnblogs.com/zjutzz/p/4886147.html
Copyright © 2020-2023  润新知