VS2022 + OpenGL GLFW Windows环境配置

0. 前言

因为一些需求,我需要用OpenGL写一些东西,本来是要Linux的,这里选择在Windows上搭配宇宙第一IDE Visual Studio进行编码,然后在Linux上进行编译运行,后面会再补一个Linux的环境配置(其实也就几行)。这篇博客主要起备忘作用,以及给一些小朋友们看一下。

1. 一些介绍

首先简单介绍一下OpenGL,它仅仅是一套标准而非具体实现,它的实现是交给厂商去做的,这是基于C/C++的一个库,既然是库,就要绑定语言,此处我选择的是 宇宙最强语言 C++,上文提到OpenGL只是一个接口规范,比较常见的如GLFW、GLUT等等,那么我们就要选择库实现版本,我大概搜了一下别的教程,普遍都是选择的GLUT安装,这玩意上次更新在1998年,那时候C语言还不支持随处定义变量名,中国还没入世,我还没出生,早就被弃用的东西了,我也是不懂怎么这么多怀旧精神这么强的人
关联一些链接:
OpenGL官网
Khronos官网
GLFW官网
推荐教程
本文链接

2. Visual Studio及C++基础环境配置

本文默认你安好了,没安好的自己去官网下一个就行,一般是推荐安装2022 community(我个人是用的2022 community preview,于本文区别不大),如果你是别的版本的,自行对照后文更改就行,此处不加赘述。

3. GLFW配置

首先新建一个C++项目
在这里插入图片描述
在项目名上右键,选择管理NuGet程序包。
在这里插入图片描述
输入glfw,点击安装
在这里插入图片描述
这样就算安完了
在这里插入图片描述

4. GLAD配置

打开GLAD在线服务,选择OpenGL版本、设置Profile为Core,然后点击生成。
在这里插入图片描述
会得到这样一个压缩包,下载下来
在这里插入图片描述
解压后直接把include文件夹拖到你编译器安装位置的include里

在这里插入图片描述
找不到这个位置的同学可以在解决方案资源管理器(Ctrl + ;)的外部依赖项里面随便查看一个文件的属性
在这里插入图片描述
可以看到它的完整路径,这个include文件夹就是我们需要的位置。
在这里插入图片描述
把src文件夹拖到你的项目源文件里
在这里插入图片描述

5. Hello World!

最后测试一下我们配置好了没有,输入以下代码(测试代码来自: 链接):

#include<glad/glad.h>
#include<GLFW/glfw3.h>

#include<iostream>

void framebuffer_size_callback(GLFWwindow* window, int width, int height);
int main()
{
    glfwInit();
    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
    glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
    //glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);

    GLFWwindow* window = glfwCreateWindow(800, 600, "LearnOpenGL", NULL, NULL);
    if (window == NULL)
    {
        std::cout << "Failed to create GLFW window" << std::endl;
        glfwTerminate();
        return -1;
    }
    glfwMakeContextCurrent(window);

    if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress))
    {
        std::cout << "Failed to initialize GLAD" << std::endl;
        return -1;
    }

    glViewport(0, 0, 800, 600);

    glfwSetFramebufferSizeCallback(window, framebuffer_size_callback);

    while (!glfwWindowShouldClose(window))
    {
        glfwSwapBuffers(window);
        glfwPollEvents();
    }
    glfwTerminate();
    return 0;
}

void framebuffer_size_callback(GLFWwindow* window, int width, int height)
{
    glViewport(0, 0, width, height);
}

如果顺利出现了一个名为“LearnOpenGL”的窗口,说明配置顺利,完结撒花!
H

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐