最近在學習opengl的相關知識。第一件事就是配環境(好煩躁)。瞭解了一下os x下的OpenGL開源庫,主要有幾個:GLUT,freeglut,GLFW等。關於其詳細的介紹能夠參考opengl網站(https://www.opengl.org/wiki/Related_toolkits_and_APIs)。因爲GLUT太老了,os x 10.9以後已經不推薦使用了。並且freeglut聽說bug有點多,在網上查了資料後仍是選擇了glfw這個開源庫。xcode
因爲mac os系統繼承了glut,xcode使用glut仍是很方便的。可是glfw使用起來就須要咱們本身配置一下環境了。原本想用百度搜一下配置方法來着,結果然是給度娘和這幫博主們跪了。翻了幾頁找到了幾個,結果還都是互相抄襲。抄襲也就算了,起碼你寫的明白點呀。無奈之下仍是看看牆外的世界吧。結果很easy的就找到了幾個安裝配置方法。這裏列舉出來.ide
1.http://handonch.in/2014/08/05/how-to-use-glfw-in-xcode/ 是一個比較詳細的教程。oop
2.http://www.youtube.com/watch?v=GHdorvcZRMg youtube 上一個安裝視頻。學習
本人是根據第一個教程配置成功的。測試
首先下載glfw的源代碼(官網:http://www.glfw.org/)。在首頁就又下載連接。根據不一樣的系統選擇不一樣的下載包。網站
下載下源代碼以後,解壓縮,解壓到任何目錄均可以,無所謂。ui
打開系統的terminal窗口。進入到源代碼的根目錄。以下圖。spa
在根目錄下執行命令:cmake . (千萬別忘了這個.)安裝cmake的放大能夠度娘3d
執行完cmake後執行命令:make(這個沒有.)code
接下來執行命令:make install
而後就會開始安裝glfw。安裝成功後會提示successful。
接下來的工做就是在xcode中配置glfw了。首先打開xcode,點擊"create a new xcode project" 新建一個console工程(這裏建什麼工程看你本身需求,我只是作一個演示)
以後鍵入工程名稱,並選擇語言,這裏我選擇了C語言。
創建工程後,以下:
先忽略下面的IOKit.framework等(一會你的就會有了)
點擊工程文件夾,選擇右邊的build phases,在Link Binary with Libraries中選擇IOKit.framework,Cocoa.framework,OPENGL.framework,CoreVideo.frame,libglfw3.a,添加進去。以下圖:
其中除了libglfw3.a都容易找到。libglfw3.a 在下面的列表中找不到。須要點擊add other 。在/usr/local/lib中選擇libglfw3.a。添加進去就能夠了。
這一步以後,點擊Build Setting,在搜索框搜索"header search paths",在header search paths中,添加"/usr/local/include/",而且設置爲recursive,以下圖:
下一步搜索"library search paths",在"library search paths",添加"/usr/local/lib/",而且設置爲recursive.
這樣,便配置好了glfw。
下面經過測試示例,來測試一個glfw是否安裝成功。
#include <GLFW/glfw3.h> int main(void) { GLFWwindow* window; /* Initialize the library */ if (!glfwInit()) return -1; /* Create a windowed mode window and its OpenGL context */ window = glfwCreateWindow(480, 320, "Hello World", NULL, NULL); if (!window) { glfwTerminate(); return -1; } /* Make the window's context current */ glfwMakeContextCurrent(window); /* Loop until the user closes the window */ while (!glfwWindowShouldClose(window)) { /* Draw a triangle */ glBegin(GL_TRIANGLES); glColor3f(1.0, 0.0, 0.0); // Red glVertex3f(0.0, 1.0, 0.0); glColor3f(0.0, 1.0, 0.0); // Green glVertex3f(-1.0, -1.0, 0.0); glColor3f(0.0, 0.0, 1.0); // Blue glVertex3f(1.0, -1.0, 0.0); glEnd(); /* Swap front and back buffers */ glfwSwapBuffers(window); /* Poll for and process events */ glfwPollEvents(); } glfwTerminate(); return 0; }
運行該程序,能夠獲得運行結果以下:
ok,搞定!