在osx中,OpenGL库在系统中已经自带了,要想查看当前系统中的OpenGL库的版本,可以在App Store中安装OpenGL Extensions Viewer
安装第三方包
依赖工具:homebrew,cmake。
这两个工具的具体安装方式网上有很多,google一下很容易找到。
- GLFW
GLFW是一个小型的C库,它可以让你创建和管理窗口、OpenGL和OpenGL ES上下文和Vulkan表面,枚举显示器和视频模式,以及处理键盘、鼠标、操纵杆、剪贴板和时间等输入。
GLFW主要针对那些唯一的图形输出是通过OpenGL、OpenGL ES或Vulkan的应用程序,提供了一个简单的、多平台的抽象层。因此GLFW在开发多平台OpenGL应用时非常有用,但单平台开发者也可以从避免处理笨拙的平台特定API中获益。
像GLFW这样的库非常有用,因为OpenGL和OpenGL ES本身并没有提供任何机制来创建必要的上下文、管理窗口、用户输入、定时等。正如OpenGL 3.1规范(第2章,第1段)所述。
OpenGL只涉及渲染到帧缓冲区(以及读取存储在该帧缓冲区中的值)。不支持有时与图形硬件相关的其他外设,如鼠标和键盘。程序员必须依靠其他机制来获取用户输入。
安装命令:
bash brew install glfw3
- GLEW
OpenGL Extension Wrangler Library(GLEW)是一个跨平台的开源C/C++扩展加载库。GLEW提供了高效的运行时机制,用于确定目标平台上支持哪些OpenGL扩展。OpenGL核心和扩展功能在一个头文件中暴露出来。GLEW已经在各种操作系统上进行了测试,包括Windows、Linux、Mac OS X、FreeBSD、Irix和Solaris。
安装命令:
bash brew install glew
上面是用包管理器来安装。需要依赖工具homebrew和编译工具cmake,如果没有安装这两个工具,可以google一下安装方式来安装一下。
第一个Hello World
网上很多教程到这里后,就会教你配置vs studio或者xcode,由于我本人的习惯问题,很少使用这些ide,所以这里我还是基于cmake编译工具来写第一个hello world程序。主要目的是熟悉配置include和lib目录。
新建一个文件夹,比如叫test_opengl,目录中新建一个main.cpp,添加如下代码:
#include <iostream>
#include <GL/glew.h>
#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(640, 480, "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))
{
/* Render here */
/* Swap front and back buffers */
glfwSwapBuffers(window);
/* Poll for and process events */
glfwPollEvents();
}
glfwTerminate();
return 0;
}
保存后,在新建一个CMakeLists.txt文件。这个文件是cmake使用的,用于指定编译时的目录、链接的库、以及编译选项等。对于本项目,添加简单的如下内容:
cmake_minimum_required(VERSION 2.8)
project(test_opengl)
set(CMAKE_VERBOSE_MAKEFILE OFF)
# glfw和glew的头文件目录,这是我的路径,你可以换成你自己的
include_directories(/usr/local/include)
aux_source_directory("./" SRCS)
set(CMAKE_CXX_FLAGS "-g -std=c++11 -Wformat")
# glew的库目录路径
link_directories(/usr/local/Cellar/glew/2.1.0/lib)
# glfw的库目录路径
link_directories(/usr/local/Cellar/glfw/3.3/lib)
add_executable(test_opengl ${SRCS} ${HDRS})
# 指定glew库
target_link_libraries(test_opengl GLEW)
# 指定glfw库
target_link_libraries(test_opengl GLFW)
编写完之后,在main.cpp同级目录下建立一个build目录,然后
cd build
cmake ..
make
然后测试是否能编译成功。如果编译成功,会出现一个test_opengl 可执行程序,然后运行:
./test_opengl
这时会看到一个hello world的窗口。
至此,你已经利用OpenGL编写了第一个程序。恭喜,你已经入门了。