歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Fedora和Ubuntu下安裝OpenGL開發環境配置

Fedora和Ubuntu下安裝OpenGL開發環境配置

日期:2017/2/28 13:56:59   编辑:Linux教程

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出現一個畫了白色矩形的窗口:

===

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的用法,可以參考 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

《OpenGL編程指南(原書第8版)》——計算著色器 http://www.linuxidc.com/Linux/2015-08/122232.htm

OpenGL編程指南(原書第8版) 中英文PDF 高清晰版 http://www.linuxidc.com/Linux/2015-08/122230.htm

OpenGL編程指南(原書第7版)中文掃描版PDF 下載見 http://www.linuxidc.com/Linux/2012-08/67925.htm

OpenGL超級寶典 第4版 中文版PDF+英文版+源代碼 見 http://www.linuxidc.com/Linux/2013-10/91413.htm

OpenGL 渲染篇 http://www.linuxidc.com/Linux/2011-10/45756.htm

Ubuntu 13.04 安裝 OpenGL http://www.linuxidc.com/Linux/2013-05/84815.htm

OpenGL三維球體數據生成與繪制【附源碼】 http://www.linuxidc.com/Linux/2013-04/83235.htm

Ubuntu下OpenGL編程基礎解析 http://www.linuxidc.com/Linux/2013-03/81675.htm

如何在Ubuntu使用eclipse for c++配置OpenGL http://www.linuxidc.com/Linux/2012-11/74191.htm

更多《OpenGL超級寶典學習筆記》相關知識 見 http://www.linuxidc.com/search.aspx?where=nkey&keyword=34581

Copyright © Linux教程網 All Rights Reserved