前置准备

创建项目和基础配置

创建空项目

image-20211117091748215

右键解决方案中的源文件,新建 C++源文件

image-20211117092043134
image-20211117092132268

接下来,我们来配置 OpenGL 基础环境,以下配置均在 项目->【项目名称】属性 中完成

一定要注意首先将x64改为x86

image-20211117103427873

image-20211117092411448

  1. 在 C/C++ -> 常规 -> 附加包含目录 -> 下拉按钮 -> 编辑 -> 右上角的新建按钮 -> 点击省略号按钮设置 glfw 和 glew 的 include 路径

  1. 链接器 -> 常规 -> 附加库目录 -> 编辑 -> 添加 -> 根据 vs 版本添加 lib-vc20xx

  1. 链接器 -> 输入 -> 附加依赖项 -> 编辑 -> 在编辑框内输入

    opengl32.lib
    glew32s.lib
    glfw3.lib

  1. glew/bin/release/win32下的glew32.dll复制到main.cpp同级文件夹下,点击显示所有文件,右键点击glew32.dll,选择包括在项目中
image-20211117103043951
image-20211117103123116
  1. 测试一下 OpenGL 的 Hello World 吧!在main.cpp中放入以下代码:

    #include <iostream>
    //GLEW
    #define GLEW_STATIC
    #include <GL/glew.h>
    //GLFW
    #include <GLFW/glfw3.h>
    const GLint WIDTH = 800, HEIGHT = 600;
    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); // must for Mac
     glfwWindowHint(GLFW_RESIZABLE, GL_FALSE);
     GLFWwindow* window = glfwCreateWindow(WIDTH, HEIGHT, "Hello OpenGL", nullptr,
         nullptr);
     // next two lines are for mac retina display
     int screenWidth, screenHeight;
     glfwGetFramebufferSize(window, &screenWidth, &screenHeight);
     if (nullptr == window)
     {
         std::cout << "Failed to create GLFW window" << std::endl;
         glfwTerminate();
         return -1;
     }
     glfwMakeContextCurrent(window);
     glewExperimental = GL_TRUE;
     if (GLEW_OK != glewInit())
     {
         std::cout << "Failed to initialise GLEW" << std::endl;
         return -1;
     }
     glViewport(0, 0, screenWidth, screenHeight);
     while (!glfwWindowShouldClose(window))
     {
         glfwPollEvents();
         glClearColor(0.2f, 0.3f, 0.3f, 1.0f);
         glClear(GL_COLOR_BUFFER_BIT);
         glfwSwapBuffers(window);
     }
     glfwTerminate();
     return 0;
    }

    成功编译并出现窗口!

    image-20211117104728476

SOIL 纹理

为了使用适合自己平台的 SOIL2 库,我们需要自己编译一份 SOIL2

  1. 下载SOIL2Premake并解压至一个文件夹
  2. 打开 cmd 或 power shell 终端,进入上述文件夹,运行.\premake5.exe vs2022命令,vs 版本根据实际情况填写即可(不会使用终端的查一查终端打开某一文件夹即可)
image-20211117110316561
  1. 此时 SOIL2 的文件夹多出个新文件夹 make,make 下有个文件夹 windows,windows 文件夹里面又有一个SOIL2.sln文件,打开它
  2. 进入解决方案资源管理器,对soil2-static-lib右键,点击生成
image-20211117110621315
  1. 根据输出,找到soil2-debug.lib文件

  2. 对于生成的我们真正需要的文件,我的做法是,在 CG 文件夹下创建 SOIL2 文件夹,其中包含两个文件夹:lib 和 include 文件夹,lib 下放入上述 lib 文件。

  3. 对于 include 文件夹,我们进入先前编译的 SOIL 源代码根目录,在它包含的src文件夹里的整个SOIL2文件夹,把它移动到我们刚刚新建的SOIL2文件夹的include文件夹里

  4. 配置项目:C/C++ -> 常规 -> 附加包含目录 -> 设置 SOIL2 的 include 路径,链接器 -> 常规 -> 附加库目录 -> 添加上述的 lib 文件夹,链接器 -> 输入 -> 附加依赖项 -> 输入soil2-debug.lib

image-20211117111853131
image-20211117111917502
image-20211117111936356
  1. 测试一下,在先前的程序中添加#include <SOIL2/SOIL2.h>测试是否能够通过编译

glm 配置

  1. 这里下载 glm 最新版的库,解压到你喜欢的地方,我解压在我图形学的根目录下
  2. C/C++ -> 常规 -> 附加包含目录 -> 添加 glm 路径
image-20211117112844262

间歇性踌躇满志,持续性混吃等死