[OpenGL] 环境搭建 – 在 Mac + Clion 环境下配置 GLFW 与 GLEW 创建窗口

这是一篇 HelloWorld 文章,讲解 OpenGL 从搭起环境到创建一个窗口。此系列文章除了 Android 部分其余将基于 C/C++ 语言进行编写。

GLFW 与 GLEW

GLFW 是一个专门针对 OpenGL 的C语言库,它提供了一些渲染物体所需的最低限度的接口。它允许用户创建 OpenGL 上下文,定义窗口参数以及处理用户输入。

GLEW 是为了解决驱动开发商为了特定显卡设计的实现过于多较难在编译时确定下来,用来管理函数指针的, GLEW 是目前最流行的解决此问题的库。

安装 GLFW 与 GLEW

我们在 Mac 中,可以通过 Homebrew 进行安装。Homebrew 可以通过以下命令安装:

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

然后通过以下命令安装 GLFW 与 GLEW:

brew install glew
brew install glfw

此时 GLFW 与 GLEW 就安装到了 /usr/local/Cellar/glew 和 /usr/local/Cellar/glfw 中。

你好,窗口

此部分内容为按照此文进行总结性的在 Mac + Clion 下的一些叙述,更详细的内容到此链接内查看。

#include <glew.h>
#include <glfw3.h>
#include <iostream>

using namespace std;

int main() {
    // 初始化 GLFW
    glfwInit();
    // 告诉 GLFW 我们使用的版本号 MAJOR-主版本号,MINOR-次版本号
    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
    // 使用核心模式
    glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
    // 不允许用户调整窗口大小
    glfwWindowHint(GLFW_RESIZABLE, GL_FALSE);
    // MAC 还需要此代码初始化配置
    glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);

    // 创建窗口
    GLFWwindow *window = glfwCreateWindow(800, 600, "york1996", nullptr, nullptr);
    if (window == nullptr) {
        cout << "创建GL窗口失败" << endl;
        glfwTerminate();
        return -1;
    }
    // 上下文设置为此窗口
    glfwMakeContextCurrent(window);

    glewExperimental = GL_TRUE;
    // 在调用任何 OpenGL 的函数前需要初始化 GLEW
    if (glewInit() != GLEW_OK) {
        cout << "初始化 GLEW 失败" << endl;
        return -1;
    }

    int width, height;
    // 直接从 GLFW 获取宽高
    glfwGetFramebufferSize(window, &width, &height);
    // 设置窗口的维度
    glViewport(0, 0, width, height);

    // 游戏循环
    while (!glfwWindowShouldClose(window)) {
        glfwPollEvents();// 检查函数是否触发事件并调用相应回调函数
        glfwSwapBuffers(window); // 交换颜色缓冲
    }

    glfwTerminate();// 释放内存
    return 0;
}

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注