在 macOS 上设置现代 OpenGL 4.1(Xcode GLFW 和 GLEW)

1.安装 GLFW

第一步是创建一个 OpenGL 窗口。GLFW 是一个开源的多平台库,用于使用 OpenGL 创建窗口,安装 GLFW 首先从 www.glfw.org 下载其文件

StackOverflow 文档

提取 GLFW 文件夹,其内容将如下所示

StackOverflow 文档

下载并安装 CMake 以构建 GLFW。转到 www.cmake.org/download/ ,下载 CMake 并安装 MAC OS X.

StackOverflow 文档

如果没有安装 Xcode。从 Mac App Store 下载并安装 Xcode。

StackOverflow 文档

创建一个新的文件夹中生成的 GLFW 文件夹中

StackOverflow 文档

打开 CMake,单击 Browse Source 按钮选择 GLFW 文件夹(确保 CMakeLists.txt)位于该文件夹内。之后,单击 Browse Build 按钮并在上一步中选择新创建的 Build 文件夹。

StackOverflow 文档

现在单击 Configure 按钮并选择 Xcode as generator with Use default native compilers 选项,然后单击 Done

StackOverflow 文档

勾选 BUILD_SHARED_LIBS 选项,然后再次单击“ 配置” 按钮,最后单击“ 生成” 按钮。

StackOverflow 文档

生成后,CMake 应该是这样的

StackOverflow 文档

现在打开 Finder 并转到 / usr ,创建一个本地文件夹名称( 如果尚未存在)。打开本地文件夹并创建两个文件夹 includelib( 如果尚未存在)。

现在打开 GLFW 文件夹并转到 Build (CMake 已经构建了文件)。在 Xcode 中打开 GLFW.xcodeproj 文件。

StackOverflow 文档

选择安装>我的 Mac ,然后单击运行 (播放形状按钮)。

StackOverflow 文档

它现在已成功安装(忽略警告)。

要确保 Open Finder 和 goto / usr / local / lib 文件夹以及三个 GLFW 库文件已经存在(如果没有那么打开 GLFW 文件夹中的 Build 文件夹并转到 src / Debug 将所有文件复制到 / usr / local / lib

StackOverflow 文档

打开 Finder 并转到 / usr / local / include 和一个 GLFW 文件夹,其中有两个头文件,名称为 glfw3.hglfw3native.h

StackOverflow 文档

2.安装 GLEW

GLEW 是一个跨平台的库,可以帮助查询和加载 OpenGL 扩展。它提供了运行时机制,用于确定目标平台上支持哪些 OpenGL 扩展。它仅适用于现代 OpenGL(OpenGL 3.2 及更高版本,需要在运行时确定功能)。要安装,首先从 glew.sourceforge.net 下载其文件

StackOverflow 文档

提取 GLFW 文件夹,其内容将如下所示。

StackOverflow 文档

现在打开终端,导航到 GLEW 文件夹并键入以下命令

make
sudo make install 
make clean

现在 GLEW 已成功安装。要确保安装它的 Open Finder,请转到 **/ usr / local / include,**并且其中已经存在一个 GL 文件夹,其中包含三个头文件,名称为 glew.hglxew.hwglew.h

StackOverflow 文档

打开 Finder 并转到 / usr / local / lib ,GLEW 库文件将在那里出现

StackOverflow 文档

3.测试并运行

现在我们已经成功安装了 GLFW 和 GLEW。是时候编码了。打开 Xcode 并创建一个新的 Xcode 项目。选择**命令行工具,**然后继续,选择 C++ 作为语言。

StackOverflow 文档

Xcode 将创建一个新的命令行项目。

单击项目名称,然后在 Build Settings 选项卡下从 Basic 切换到 All ,在 Search Paths 部分下,在 Header Search Paths 中添加 / usr / local / include 并在 Library Search Paths 中添加 / usr / local / lib

StackOverflow 文档

单击项目名称,在 Build Phases 选项卡下,在 Link With Binary Libraries 下添加 OpenGL.framework ,并从 / usr / local / lib 添加最近创建的 GLFWGLEW 库 ****

StackOverflow 文档

现在我们准备使用 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;
}

StackOverflow 文档