OpenGL 學習 01 Mac 搭建 OpenGL 環境

執著丶執念發表於2018-06-02

OpenGL 學習 01   Mac 搭建 OpenGL 環境

(一)GLTools 和 glew 安裝

1. 安裝 homebrew(已安裝可跳過)

homebrew 的官方網站: http://brew.sh/

在 Mac 中開啟 Termal 並輸入以下命令進行安裝 homebrew:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
複製程式碼

下面是 homebrew 的一些命令:

  • brew search 搜尋軟體包
  • brew install 安裝軟體包
  • brew uninstall 解除安裝軟體包
  • brew info 查詢軟體包資訊
  • brew list 查詢已經安裝的軟體包
  • brew update 更新
  • brew deps 顯示包依賴

2. 利用 homebrew 安裝 cmake(已安裝可跳過)

安裝命令:

brew install cmake
複製程式碼

如果一切正常就到下一步,這裡可能報下面錯誤:

Error: The brew link step did not complete successfully
The formula built, but is not symlinked into /usr/local
Could not symlink share/man/man7/cmake-buildsystem.7
/usr/local/share/man/man7 is not writable.
複製程式碼

解決方法:

sudo chown -R $(whoami) /usr/local
brew link cmake
複製程式碼

3. 利用 homebrew 安裝 glew(已安裝可跳過)

安裝命令:

brew install glew
複製程式碼

安裝成功後,可以在 /usr/local/Cellar/glew/ 目錄下找到 glew 的各個版本的包,選擇一個版本進去,會看到:

OpenGL 學習 01   Mac 搭建 OpenGL 環境

OpenGL 學習 01   Mac 搭建 OpenGL 環境

4. 編譯 gltools (已編譯可跳過)

依次執行以下命令:

$ git clone https://github.com/HazimGazov/GLTools
$ cd GLTools
$ cmake .
$ make 
$ sudo make install
複製程式碼

進入到 /usr/local/include/ 目錄下,可以看到 gltools 標頭檔案都已經有了,在 /usr/local/lib/ 目錄下,libgltools.dylib 已生成完畢,????大功告成

gltools 標頭檔案

gltools 連結庫

把所有需要的連結庫拷貝到一個資料夾中,方便我們匯入到專案中:

OpenGL 學習 01   Mac 搭建 OpenGL 環境

(二)Xcode 專案環境搭建

1. 建立 Mac 專案

OpenGL 學習 01   Mac 搭建 OpenGL 環境

刪除專案中不需要的檔案

2. 新增 .framework 包和 .dylib 連結庫

OpenGL 學習 01   Mac 搭建 OpenGL 環境

OpenGL 學習 01   Mac 搭建 OpenGL 環境

3. 配置連結庫標頭檔案路徑

配置 glew 和 gltools 路徑

我們還需要新增這些標頭檔案的路徑到專案中

4. 構建程式入口

建立 main.cpp 檔案

OpenGL 學習 01   Mac 搭建 OpenGL 環境

拷貝測試程式碼到 main.cpp:

#include <iostream>
#include <GLShaderManager.h>
#include <GLTools.h>
#include <glut/glut.h>

GLBatch triangleBatch;

GLShaderManager shaderManager;

//視窗大小改變時接受新的寬度和高度,其中0,0代表視窗中視口的左下角座標,w,h代表畫素
void ChangeSize(int w, int h)
{
    glViewport(0, 0, w, h);
}

//為程式作一次性的設定
void SetupRC()
{
    //設定背影顏色
    glClearColor(0.0f, 0.0f, 1.0f, 1.0f);
    
    //初始化著色管理器
    shaderManager.InitializeStockShaders();
    
    //設定三角形,其中陣列vVert包含所有3個頂點的x,y,笛卡爾座標對。
    GLfloat vVerts[] = {
        -0.5f,0.0f,0.0f,
        0.5f,0.0f,0.0f,
        0.0f,0.5f,0.0f,
    };
    
    //開始批次處理
    triangleBatch.Begin(GL_TRIANGLES, 3);
    //拷貝頂點資料
    triangleBatch.CopyVertexData3f(vVerts);
    //結束批次處理
    triangleBatch.End();
}

//開始渲染
void RenderScene(void)
{
    //清除一個或一組特定的緩衝區
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);

    //設定一組浮點數來表示紅色
    GLfloat vRed[] = {1.0f, 0.0f, 0.0f, 1.0f};
    
    //傳遞到儲存著色器,即GLT_SHADER_IDENTITY著色器,這個著色器只是使用指定顏色以預設笛卡爾座標第在螢幕上渲染幾何圖形
    shaderManager.UseStockShader(GLT_SHADER_IDENTITY, vRed);
    
    //提交著色器
    triangleBatch.Draw();
    
    //將在後臺緩衝區進行渲染,然後在結束時交換到前臺
    glutSwapBuffers();
}

//程式入口
int main(int argc, char* argv[])
{
    //設定當前工作目錄,針對MAC OS X
    gltSetWorkingDirectory(argv[0]);
    
    //初始化GLUT庫
    glutInit(&argc, argv);
    
    /*初始化雙緩衝視窗,其中標誌GLUT_DOUBLE、GLUT_RGBA、GLUT_DEPTH、GLUT_STENCIL分別指
     雙緩衝視窗、RGBA顏色模式、深度測試、模板緩衝區*/
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH | GLUT_STENCIL);
    
    //初始化視窗大小
    glutInitWindowSize(800,600);
    //建立視窗
    glutCreateWindow("Triangle");
    
    //註冊回撥函式
    glutReshapeFunc(ChangeSize);
    glutDisplayFunc(RenderScene);
    
    //確保驅動程式的初始化中沒有出現任何問題。
    GLenum err = glewInit();
    if(GLEW_OK != err) {
        fprintf(stderr, "glew error:%s\n", glewGetErrorString(err));
        return 1;
    }
    
    //初始化設定
    SetupRC();
    
    //進入呼叫迴圈
    glutMainLoop();
    return 0;
}
複製程式碼

現在,是時候來執行一波看看效果了,O(∩_∩)O哈哈~:

OpenGL 學習 01   Mac 搭建 OpenGL 環境

搞了這麼多,終於把 Mac 的 OpenGL 環境搭建好了,

✿✿ヽ(°▽°)ノ✿✿

✿✿ヽ(°▽°)ノ✿✿

這裡是原始碼:github->openGLDemo->01-environment

實際上,還有另外一種方法進行配置,這裡就不寫了,具體可參考: 001--OpenGL在Mac 上的環境搭建(作者:CC老師_MissCC)

兩種方法對比起來的各有優劣,我個人偏向於上面安裝 GLTools 和 glew 的方法,這樣如果 GLTools 或者 glew 那邊更新了,也可以很簡單的進行升級。

相關文章