最近在学习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,搞定!