
(一)GLTools 和 glew 安裝
1. 安裝 homebrew(已安裝可跳過(guò))
homebrew 的官方網(wǎng)站: http://brew.sh/
在 Mac 中打開(kāi) Termal 并輸入以下命令進(jìn)行安裝 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 查詢已經(jīng)安裝的軟件包
- brew update 更新
- brew deps 顯示包依賴(lài)
2. 利用 homebrew 安裝 cmake(已安裝可跳過(guò))
安裝命令:
brew install cmake
如果一切正常就到下一步,這里可能報(bào)下面錯(cuò)誤:
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(已安裝可跳過(guò))
安裝命令:
brew install glew
安裝成功后,可以在 /usr/local/Cellar/glew/ 目錄下找到 glew 的各個(gè)版本的包,選擇一個(gè)版本進(jìn)去,會(huì)看到:


4. 編譯 gltools (已編譯可跳過(guò))
依次執(zhí)行以下命令:
$ git clone https://github.com/HazimGazov/GLTools
$ cd GLTools
$ cmake .
$ make
$ sudo make install
進(jìn)入到 /usr/local/include/ 目錄下,可以看到 gltools 頭文件都已經(jīng)有了,在 /usr/local/lib/ 目錄下,libgltools.dylib 已生成完畢,????????大功告成


把所有需要的鏈接庫(kù)拷貝到一個(gè)文件夾中,方便我們導(dǎo)入到項(xiàng)目中:

(二)Xcode 項(xiàng)目環(huán)境搭建
1. 創(chuàng)建 Mac 項(xiàng)目


2. 添加 .framework 包和 .dylib 鏈接庫(kù)


3. 配置鏈接庫(kù)頭文件路徑


4. 構(gòu)建程序入口


拷貝測(cè)試代碼到 main.cpp:
#include <iostream>
#include <GLShaderManager.h>
#include <GLTools.h>
#include <glut/glut.h>
GLBatch triangleBatch;
GLShaderManager shaderManager;
//窗口大小改變時(shí)接受新的寬度和高度,其中0,0代表窗口中視口的左下角坐標(biāo),w,h代表像素
void ChangeSize(int w, int h)
{
glViewport(0, 0, w, h);
}
//為程序作一次性的設(shè)置
void SetupRC()
{
//設(shè)置背影顏色
glClearColor(0.0f, 0.0f, 1.0f, 1.0f);
//初始化著色管理器
shaderManager.InitializeStockShaders();
//設(shè)置三角形,其中數(shù)組vVert包含所有3個(gè)頂點(diǎn)的x,y,笛卡爾坐標(biāo)對(duì)。
GLfloat vVerts[] = {
-0.5f,0.0f,0.0f,
0.5f,0.0f,0.0f,
0.0f,0.5f,0.0f,
};
//開(kāi)始批次處理
triangleBatch.Begin(GL_TRIANGLES, 3);
//拷貝頂點(diǎn)數(shù)據(jù)
triangleBatch.CopyVertexData3f(vVerts);
//結(jié)束批次處理
triangleBatch.End();
}
//開(kāi)始渲染
void RenderScene(void)
{
//清除一個(gè)或一組特定的緩沖區(qū)
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
//設(shè)置一組浮點(diǎn)數(shù)來(lái)表示紅色
GLfloat vRed[] = {1.0f, 0.0f, 0.0f, 1.0f};
//傳遞到存儲(chǔ)著色器,即GLT_SHADER_IDENTITY著色器,這個(gè)著色器只是使用指定顏色以默認(rèn)笛卡爾坐標(biāo)第在屏幕上渲染幾何圖形
shaderManager.UseStockShader(GLT_SHADER_IDENTITY, vRed);
//提交著色器
triangleBatch.Draw();
//將在后臺(tái)緩沖區(qū)進(jìn)行渲染,然后在結(jié)束時(shí)交換到前臺(tái)
glutSwapBuffers();
}
//程序入口
int main(int argc, char* argv[])
{
//設(shè)置當(dāng)前工作目錄,針對(duì)MAC OS X
gltSetWorkingDirectory(argv[0]);
//初始化GLUT庫(kù)
glutInit(&argc, argv);
/*初始化雙緩沖窗口,其中標(biāo)志GLUT_DOUBLE、GLUT_RGBA、GLUT_DEPTH、GLUT_STENCIL分別指
雙緩沖窗口、RGBA顏色模式、深度測(cè)試、模板緩沖區(qū)*/
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH | GLUT_STENCIL);
//初始化窗口大小
glutInitWindowSize(800,600);
//創(chuàng)建窗口
glutCreateWindow("Triangle");
//注冊(cè)回調(diào)函數(shù)
glutReshapeFunc(ChangeSize);
glutDisplayFunc(RenderScene);
//確保驅(qū)動(dòng)程序的初始化中沒(méi)有出現(xiàn)任何問(wèn)題。
GLenum err = glewInit();
if(GLEW_OK != err) {
fprintf(stderr, "glew error:%s\n", glewGetErrorString(err));
return 1;
}
//初始化設(shè)置
SetupRC();
//進(jìn)入調(diào)用循環(huán)
glutMainLoop();
return 0;
}
現(xiàn)在,是時(shí)候來(lái)運(yùn)行一波看看效果了,O(∩_∩)O哈哈~:

搞了這么多,終于把 Mac 的 OpenGL 環(huán)境搭建好了,
??ヽ(°▽°)ノ??
??ヽ(°▽°)ノ??
這里是源碼:github->openGLDemo->01-environment
實(shí)際上,還有另外一種方法進(jìn)行配置,這里就不寫(xiě)了,具體可參考:
001--OpenGL在Mac 上的環(huán)境搭建(作者:CC老師_MissCC)
兩種方法對(duì)比起來(lái)的各有優(yōu)劣,我個(gè)人偏向于上面安裝 GLTools 和 glew 的方法,這樣如果 GLTools 或者 glew 那邊更新了,也可以很簡(jiǎn)單的進(jìn)行升級(jí)。