在 macOS 上设置现代 OpenGL 4.1(Xcode GLFW 和 GLEW)
1.安装 GLFW
第一步是创建一个 OpenGL 窗口。GLFW 是一个开源的多平台库,用于使用 OpenGL 创建窗口,安装 GLFW 首先从 www.glfw.org 下载其文件
提取 GLFW 文件夹,其内容将如下所示
下载并安装 CMake 以构建 GLFW。转到 www.cmake.org/download/ ,下载 CMake 并安装 MAC OS X.
如果没有安装 Xcode。从 Mac App Store 下载并安装 Xcode。
创建一个新的文件夹中生成的 GLFW 文件夹中
打开 CMake,单击 Browse Source 按钮选择 GLFW 文件夹(确保 CMakeLists.txt)位于该文件夹内。之后,单击 Browse Build 按钮并在上一步中选择新创建的 Build 文件夹。
现在单击 Configure 按钮并选择 Xcode as generator with Use default native compilers 选项,然后单击 Done 。
勾选 BUILD_SHARED_LIBS 选项,然后再次单击“ 配置” 按钮,最后单击“ 生成” 按钮。
生成后,CMake 应该是这样的
现在打开 Finder 并转到 / usr ,创建一个本地文件夹名称( 如果尚未存在)。打开本地文件夹并创建两个文件夹 include 和 lib( 如果尚未存在)。
现在打开 GLFW 文件夹并转到 Build (CMake 已经构建了文件)。在 Xcode 中打开 GLFW.xcodeproj 文件。
选择安装>我的 Mac ,然后单击运行 (播放形状按钮)。
它现在已成功安装(忽略警告)。
要确保 Open Finder 和 goto / usr / local / lib 文件夹以及三个 GLFW 库文件已经存在(如果没有那么打开 GLFW 文件夹中的 Build 文件夹并转到 src / Debug 将所有文件复制到 / usr / local / lib )
打开 Finder 并转到 / usr / local / include 和一个 GLFW 文件夹,其中有两个头文件,名称为 glfw3.h 和 glfw3native.h
2.安装 GLEW
GLEW 是一个跨平台的库,可以帮助查询和加载 OpenGL 扩展。它提供了运行时机制,用于确定目标平台上支持哪些 OpenGL 扩展。它仅适用于现代 OpenGL(OpenGL 3.2 及更高版本,需要在运行时确定功能)。要安装,首先从 glew.sourceforge.net 下载其文件
提取 GLFW 文件夹,其内容将如下所示。
现在打开终端,导航到 GLEW 文件夹并键入以下命令
make
sudo make install
make clean
现在 GLEW 已成功安装。要确保安装它的 Open Finder,请转到 **/ usr / local / include,**并且其中已经存在一个 GL 文件夹,其中包含三个头文件,名称为 glew.h , glxew.h 和 wglew.h
打开 Finder 并转到 / usr / local / lib ,GLEW 库文件将在那里出现
3.测试并运行
现在我们已经成功安装了 GLFW 和 GLEW。是时候编码了。打开 Xcode 并创建一个新的 Xcode 项目。选择**命令行工具,**然后继续,选择 C++ 作为语言。
Xcode 将创建一个新的命令行项目。
单击项目名称,然后在 Build Settings 选项卡下从 Basic 切换到 All ,在 Search Paths 部分下,在 Header Search Paths 中添加 / usr / local / include 并在 Library Search Paths 中添加 / usr / local / lib
单击项目名称,在 Build Phases 选项卡下,在 Link With Binary Libraries 下添加 OpenGL.framework ,并从 / usr / local / lib 添加最近创建的 GLFW 和 GLEW 库 ****
现在我们准备使用 C++和 Xcode 在 macOS 上使用 Modern Open GL 4.1 进行编码。以下代码将使用带有空白屏幕输出的 GLFW 创建一个 OpenGL 窗口。
#include <GL/glew.h>
#include <GLFW/glfw3.h>
// Define main function
int main()
{
// Initialize GLFW
glfwInit();
// Define version and compatibility settings
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 2);
glfwWindowHint(GLFW_OPENGL_PROFILE,GLFW_OPENGL_CORE_PROFILE);
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
glfwWindowHint(GLFW_RESIZABLE, GL_FALSE);
// Create OpenGL window and context
GLFWwindow* window = glfwCreateWindow(800, 600, "OpenGL", NULL, NULL);
glfwMakeContextCurrent(window);
// Check for window creation failure
if (!window)
{
// Terminate GLFW
glfwTerminate();
return 0;
}
// Initialize GLEW
glewExperimental = GL_TRUE; glewInit();
// Event loop
while(!glfwWindowShouldClose(window))
{
// Clear the screen to black
glClearColor(0.0f, 0.0f, 0.0f, 1.0f); glClear(GL_COLOR_BUFFER_BIT);
glfwSwapBuffers(window);
glfwPollEvents();
}
// Terminate GLFW
glfwTerminate(); return 0;
}