OpenGL和OpenGL ES是蘋果開發(fā)者可能會(huì)接觸到的圖形程序接口座硕。
2014年蘋果推出了Metal意乓,在四年后宣布將摒棄OpenGL,不過OpenGL在短時(shí)間內(nèi)還是不會(huì)被蘋果開發(fā)者摒棄的颂鸿,就像蘋果程序員不會(huì)短時(shí)間接受 Swift 項(xiàng)目摒棄 Object-C 項(xiàng)目一樣.
廢話不多說衬以,普及知識(shí)一大把,這里僅僅記錄環(huán)境搭建過程缓苛。
一. 確保安裝了包管理工具(homebrew)
homebrew官方網(wǎng)站:https://brew.sh/
按照上圖在終端輸入:/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" ,回車 ------->
二. 通過homebrew工具安裝cmake
CMake是一個(gè)開源的跨平臺(tái)工具系列芳撒,旨在構(gòu)建,測(cè)試和打包軟件他嫡。CMake用于使用簡單的平臺(tái)和獨(dú)立于編譯器的配置文件來控制軟件編譯過程番官,并生成可在您選擇的編譯器環(huán)境中使用的本機(jī)makefile和工作空間。CMake工具套件由Kitware創(chuàng)建钢属,以滿足對(duì)ITK(?Insight Segmentation and Registration Toolkit)和VTK(visualization toolkit)等開源項(xiàng)目的強(qiáng)大跨平臺(tái)構(gòu)建環(huán)境的需求徘熔。
官方地址:?https://cmake.org/
通過homebrew安裝cmake命令: brew install cmake
三.通過Homebrew安裝glew
GLEW,OpenGL擴(kuò)展庫是個(gè)簡單的工具淆党,用于幫助C/C++開發(fā)者初始化擴(kuò)展(OpenGL擴(kuò)展功能)并書寫可移植的應(yīng)用程序酷师。GLEW當(dāng)前支持各種各樣的操作系統(tǒng),包含Windows染乌,Linux山孔,Darwin,Irix與Solaris荷憋。
安裝命令: brew install grew
安裝成功后台颠,隨便打開一個(gè)文件夾,使用快捷鍵: Command+Shift+G進(jìn)入文件夾搜索框,輸入/usr/local/Cellar/glew/ 回車勒庄,如下圖:
可以看到如下鏈接庫:
三.通過git工具下載GLTools工具,使用Cmake工具進(jìn)行編譯
先cd到需要下載GLTools的文件夾下
?鍵入如下命令: git clone?https://github.com/HazimGazov/GLTools
進(jìn)入到克隆文件的項(xiàng)目文件夾,進(jìn)行cmake編譯:
$ cmake .
$ make?
$ sudo make install
四. 配置Xcode開發(fā)環(huán)境
1.新建Xcode項(xiàng)目快捷鍵: Command + Shift + N
2. 創(chuàng)建好項(xiàng)目后串前,刪除多余的文件
3. 將指定的庫文件移動(dòng)到項(xiàng)目文件里面
移動(dòng)GLTools工具庫到項(xiàng)目:
移動(dòng)glew庫鏈接文件到開發(fā)項(xiàng)目: 打開文件 --> Command+Shift+G ->?/usr/local/Cellar/glew ->選擇版本->將include文件夾下的文件GL文件夾以文件夾的形式拖到項(xiàng)目GLTools頭文件的include文件夾下->將lib文件夾下的libGLEW.2.1.0.dylib鏈接庫移動(dòng)至項(xiàng)目
項(xiàng)目中已經(jīng)完成移動(dòng)的文件目錄:
4.添加依賴系統(tǒng)庫 OpenGL.framework、 GLUT.framework
OpenGL.framework 是 蘋果支持的OpenGL的核心開發(fā)框架实蔽、GLUT.framework是圖像處理的子框架
5.設(shè)置頭文件路徑索引,項(xiàng)目文件索引 : Target -> Build Setting -> Header Search Paths 文件加入引入的兩個(gè)庫的頭文件路徑
6.添加main.cpp文件
拷貝如下代碼:
#include "GLShaderManager.h"
#include "GLTools.h"
#include
GLBatchtriangleBatch;
GLShaderManagershaderManager;
//窗口大小改變時(shí)接受新的寬度和高度荡碾,其中0,0代表窗口中視口的左下角坐標(biāo),w局装,h代表像素
voidChangeSize(intw,inth)
{
? ? glViewport(0,0, w, h);
}
//為程序作一次性的設(shè)置
voidSetupRC()
{
? ? //設(shè)置背影顏色
? ? glClearColor(0.5f,0.5f,1.0f,1.0f);
? ? //初始化著色管理器
? ? shaderManager.InitializeStockShaders();
? ? //設(shè)置三角形坛吁,其中數(shù)組vVert包含所有3個(gè)頂點(diǎn)的x,y,笛卡爾坐標(biāo)對(duì)劳殖。
? ? GLfloatvVerts[] = {
? ? ? ? -0.5f,0.0f,0.0f,
? ? ? ? 0.5f,0.0f,0.0f,
? ? ? ? 0.0f,-0.5f,0.0f,
? ? ? ? 0.0f,0.5f,0.0f
? ? };
? ? //批次處理
? ? triangleBatch.Begin(GL_QUAD_STRIP,4);
? ? triangleBatch.CopyVertexData3f(vVerts);
? ? triangleBatch.End();
}
// 開始渲染
voidRenderScene(void)
{
? ? // 清除一個(gè)或一組特定的緩沖區(qū)
? ? glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT|GL_STENCIL_BUFFER_BIT);
? ? // 設(shè)置一組浮點(diǎn)數(shù)來表示紅色
? ? // 傳遞到存儲(chǔ)著色器,即GLT_SHADER_IDENTITY著色器拨脉,這個(gè)著色器只是使用指定顏色以默認(rèn)笛卡爾坐標(biāo)第在屏幕上渲染幾何圖形
? ? GLfloatvRed[] = {
? ? ? ? 1.0f,0.0f,0.0f,1.0f
? ? };
? ? shaderManager.UseStockShader(GLT_SHADER_IDENTITY,vRed);
? ? //提交著色器
? ? triangleBatch.Draw();
? ? //將在后臺(tái)緩沖區(qū)進(jìn)行渲染哆姻,然后在結(jié)束時(shí)交換到前臺(tái)
? ? glutSwapBuffers();
}
intmain(intargc,char* argv[])
{
? ? //設(shè)置當(dāng)前工作目錄,針對(duì)MAC OS X
? ? gltSetWorkingDirectory(argv[0]);
? ? //初始化GLUT庫
? ? 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);
? ? //GLUT窗口大小盟广,標(biāo)題窗口
? ? glutInitWindowSize(800,600);
? ? glutCreateWindow("Triangle");
? ? //注冊(cè)回調(diào)函數(shù)
? ? glutReshapeFunc(ChangeSize);
? ? glutDisplayFunc(RenderScene);
? ? //驅(qū)動(dòng)程序的初始化中沒有出現(xiàn)任何問題。
? ? GLenumerr =glewInit();
? ? if(GLEW_OK!= err) {
? ? ? ? fprintf(stderr,"glew error:%s\n",glewGetErrorString(err));
? ? ? ? return1;
? ? }
? ? //調(diào)用SetupRC
? ? SetupRC();
? ? glutMainLoop();
? ? return0;
}
7.運(yùn)行項(xiàng)目測(cè)試瓮钥,如下圖出現(xiàn)圖形則表明成功搭建OpenGL 開發(fā)環(huán)境