mac下搭建OpenGL ——XCode

轉(zhuǎn)自:搭建Mac OpenGL開發(fā)環(huán)境 - 簡書??http://www.reibang.com/p/891d630e30af

(涉及到GLTools請參考:http://www.reibang.com/p/00642d9e83c5

這是OpenGL基礎(chǔ)說明,我將每天學(xué)習(xí)的內(nèi)容碾局,遇到的問題分享給大家政供,如果想要看文檔請看這里 :https://learnopengl-cn.github.io

下邊就開始搭建環(huán)境均牢。

1.安裝brew

在終端輸入:(我是之前安裝過brew 這里只是大概的說明安裝流程崭倘,沒有安過的可以百度一下很多的)

$ gcc --versionruby -e"$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"$ brew doctor$brew update

2桌吃、安裝GLEW和GLFW庫

$ brew install glew

$ brew install glfw3

3.下載GLAD庫

① 打開GLAD的在線服務(wù):http://glad.dav1d.de如圖設(shè)置 OpenGL使用的是3.3 版本 至于為什么使用3.3 請看https://learnopengl-cn.github.io這里鞋既。

5.png

點(diǎn)擊生成并下載 glad.zip 并解壓

包含兩個(gè)頭文件目錄鼓拧,和一個(gè)glad.c文件囊卜。將兩個(gè)頭文件目錄(glad和KHR)復(fù)制到Include文件夾中(路徑"/usr/local/include")(可以使用cmd + shift + g )娜扇。

4、新建一個(gè)工程


輸入Product Name边败,Organization Identifier也必須輸入(所填內(nèi)容為本人百度)

刪除相關(guān)文件如圖所示

image.png

5袱衷、設(shè)置

build setting 找到 header search paths(直接在搜索框中搜索Header Search Paths即可,然后雙擊后面空白處添加)


->添加“/usr/local/include”路徑到Header Search Paths

->添加“$(inherited)”

“/usr/local/Cellar/glfw/3.2.1/lib”

“/usr/local/Cellar/glew/2.2.0/lib”路徑到Header Search Paths

Build Phases 找到 Link Binary With Libraries? 增加如下內(nèi)容(最好還要加一下GLUT.framework)

將我們下載的glad.zip 解壓的glad.c 文件拖進(jìn)項(xiàng)目(后續(xù)選項(xiàng)默認(rèn)即可)


新建一個(gè)c++? main.cpp 程序 如圖(跳出的選項(xiàng)默認(rèn)即可):




#include<stdio.h>

//glad 一定要在 glfw 上邊

#include

#include

intmain(){

? ? return0;

}

cmd +B 編譯一下success 表示環(huán)境搭建完成笑窜。

測試一下: 注意全copy致燥!

#include<stdio.h>

#include

#include

#include

intmain(intargc,char**argv){

? ? usingstd::cout;? ? usingstd::endl;

? ? glfwInit();

? ? //? ? 主版本

? ? glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR,3);

? ? //? ? 次版本

? ? glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR,3);

? ? //? ? 告訴glfw 我們使用的是core_profile 核心模塊

? ? glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);

? ? //? ? 向前兼容

? ? glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);

? ? //? ? 創(chuàng)建一個(gè)GLFW 窗口? 寬 高? 窗口名字? 后邊兩個(gè)暫時(shí)不用管

? ? GLFWwindow* window = glfwCreateWindow(800,600,"LearnOpenGL",NULL,NULL);

? ? if(window ==NULL)

? ? {

? ? ? ? std::cout <<"Failed to create GLFW window"<< std::endl;

? ? ? ? glfwTerminate();

? ? ? ? return-1;

? ? }

? ? //? ? 通知GLFW將我們窗口的上下文設(shè)置為當(dāng)前線程的主上下文了

? ? glfwMakeContextCurrent(window);


? ? //? ? GLAD 是用來管理openGL 的函數(shù)指針的。所以在調(diào)用任何openGL函數(shù)之前我們都需要初始化GLAD排截。

? ? //? ? 我們給GLAD傳入了用來加載系統(tǒng)相關(guān)的OpenGL函數(shù)指針地址的函數(shù)嫌蚤。GLFW給我們的是glfwGetProcAddress,它根據(jù)我們編譯的系統(tǒng)定義了正確的函數(shù)断傲。

? ? if(!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress))

? ? {

? ? ? ? std::cout <<"Failed to initialize GLAD"<< std::endl;

? ? ? ? return-1;

? ? }

? ? //? ? 創(chuàng)建渲染的視口: 我們必須要告訴OpenGl 需要渲染的尺寸大小脱吱,即為視口 viewport(),這樣openGL 才能知道根據(jù)窗口大小顯示數(shù)據(jù)和坐標(biāo)。

? ? //? ? glViewport 前兩個(gè)參數(shù)控制視口左下角位置认罩,后兩個(gè)參數(shù)控制視口的寬和高

? ? //? ? openGL 幕后使用的是glViewport 定義的 位置和寬高進(jìn)行2D轉(zhuǎn)換

? ? glViewport(0,0,800,600);

? ? //? ? 窗口調(diào)整的時(shí)候 視口應(yīng)該也被調(diào)整? 對窗口注冊一個(gè)回調(diào)函數(shù)每次窗口大小被調(diào)整的時(shí)候會(huì)被調(diào)用

? ? voidframebuffer_size_callback(GLFWwindow *window,intwidth,intheight);



? ? //? 通過 glfwSetFramebufferSizeCallback glfw 函數(shù) 當(dāng)窗口frame 變化時(shí)會(huì)調(diào)用箱蝠。

? ? //? ? 對于視網(wǎng)膜屏 Retain 屏? 寬度和高度明顯比原輸入值更高一點(diǎn)。

? ? glfwSetFramebufferSizeCallback(window, framebuffer_size_callback);


? ? voidprocessInput(GLFWwindow *window);


? ? //? 為了防止 渲染的圖像一出現(xiàn)就退出 我們使用while 循環(huán) 垦垂。我們可以稱之為Render Loop

? ? //? ? glfwWindowShouldClose 每次循環(huán)開始前檢查一次GLFW 是否被要求退出 是true 的話渲染便結(jié)束了宦搬。

? ? while(!glfwWindowShouldClose(window))

? ? {

? ? ? ? //輸出控制

? ? ? ? processInput(window);

? ? ? ? //? ? ? ? glfwSwapBuffers 會(huì)交換顏色緩沖(他是存儲(chǔ)著GLFW 窗口每一個(gè)像素色值的大緩沖),將會(huì)作為輸出顯示在屏幕上

? ? ? ? //? ? ? ? 當(dāng)程序退出的時(shí)候 使用一個(gè)自定義的顏色清空屏幕? 在每個(gè)新的渲染迭代可是的時(shí)候我們總希望清屏否則總是看到上次渲染的結(jié)果劫拗。

? ? ? ? //? ? ? ? 我們可以使用glClear? GL_COLOR_BUFFER_BIT间校,GL_DEPTH_BUFFER_BIT和GL_STENCIL_BUFFER_BIT。 我們清空顏色 页慷。

? ? ? ? glClearColor(0.5f,0.1f,0.0f,1.0f);

? ? ? ? glClear(GL_COLOR_BUFFER_BIT);

? ? ? ? glfwSwapBuffers(window);

? ? ? ? //? ? ? ? glfwPollEvents 檢查函數(shù)有沒有觸發(fā)什么事件 鍵盤輸入 鼠標(biāo)移動(dòng) 并調(diào)用對應(yīng)函數(shù)

? ? ? ? glfwPollEvents();

? ? }



? ? glfwTerminate();


? ? return0;

}

voidframebuffer_size_callback(GLFWwindow* window,intwidth,intheight)

{

? ? glViewport(0,0, width, height);

}

voidprocessInput(GLFWwindow *window)

{

? ? //

? ? if(glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS)

? ? ? ? glfwSetWindowShouldClose(window,true);

}

出現(xiàn)下邊界面就表示我們的環(huán)境搭建完成

PS:

在學(xué)習(xí)《OpenGL超級寶典》時(shí)憔足, 其中的例子用到了GLTools庫胁附,需要自行安裝。MAC下GLTools的安裝方法如下:

1. git clone https://github.com/HazimGazov/GLTools

2. cd GLTools/build

3. cmake ..

4. make

5. sudo make install

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末滓彰,一起剝皮案震驚了整個(gè)濱河市控妻,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌找蜜,老刑警劉巖饼暑,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異洗做,居然都是意外死亡弓叛,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進(jìn)店門诚纸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來撰筷,“玉大人,你說我怎么就攤上這事畦徘”献眩” “怎么了?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵井辆,是天一觀的道長关筒。 經(jīng)常有香客問我,道長杯缺,這世上最難降的妖魔是什么蒸播? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮萍肆,結(jié)果婚禮上袍榆,老公的妹妹穿的比我還像新娘。我一直安慰自己塘揣,他們只是感情好包雀,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著亲铡,像睡著了一般才写。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上奖蔓,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天琅摩,我揣著相機(jī)與錄音,去河邊找鬼锭硼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛蜕劝,可吹牛的內(nèi)容都是我干的檀头。 我是一名探鬼主播轰异,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼暑始!你這毒婦竟也來了搭独?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤廊镜,失蹤者是張志新(化名)和其女友劉穎牙肝,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體嗤朴,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡配椭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了雹姊。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片股缸。...
    茶點(diǎn)故事閱讀 38,605評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖吱雏,靈堂內(nèi)的尸體忽然破棺而出敦姻,到底是詐尸還是另有隱情,我是刑警寧澤歧杏,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布镰惦,位于F島的核電站,受9級特大地震影響犬绒,放射性物質(zhì)發(fā)生泄漏旺入。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一懂更、第九天 我趴在偏房一處隱蔽的房頂上張望眨业。 院中可真熱鬧,春花似錦沮协、人聲如沸龄捡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽聘殖。三九已至,卻和暖如春行瑞,著一層夾襖步出監(jiān)牢的瞬間奸腺,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工血久, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留突照,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓氧吐,卻偏偏與公主長得像讹蘑,于是被迫代替她去往敵國和親末盔。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評論 2 348

推薦閱讀更多精彩內(nèi)容

  • mean to add the formatted="false" attribute?.[ 46% 47325/...
    ProZoom閱讀 2,694評論 0 3
  • 上一節(jié)中我們獲取并編譯了GLFW和GLEW這兩個(gè)開源庫座慰,現(xiàn)在我們就可以使用它們來創(chuàng)建一個(gè)OpenGL繪圖窗口了陨舱。 ...
    IceMJ閱讀 1,936評論 0 1
  • shader網(wǎng)站: http://glslsandbox.com/ http://glslb.in/ https:...
    一川煙草i蓑衣閱讀 928評論 0 0
  • 本來更想在windows下開發(fā) 無奈自己的本本被某人順到國外去了(吐血), 平時(shí)在公司只能用Mac所以有了此文版仔。 ...
    Xeu閱讀 821評論 1 3
  • (萬尚學(xué)習(xí)會(huì))打卡第32天 姓名:徐娟 部門:人事部 組別:待定 【知~學(xué)習(xí)】 誦讀《活法》第一章 描繪夢想使人生...
    徐娟Wellin閱讀 353評論 0 0