前言
本篇文章对VS2022配置OpenGL环境进行概述,侧重点主要是实际配置操作步骤,部分理论较少。看别人的文章太乱了,而且有时候侧重点太过于理论,老是找不到一篇自己想要的文章,索性自己写一篇,有不足之处还望海涵。
目的:快速配置OpenGL环境,windows上的配置步骤都大差不差,so,得此篇者得天下!
下面是搭建OpenGL环境涉及的环境(包括:windows、集成开发环境IDE)、用于查看电脑系统自带的OpenGL版本的工具GLView、本人电脑系统自带OpenGL版本、配置环境涉及的库(GLFW、GLEW、GLM、SOIL2)以及生成SOIL2库所需的辅助工具premake。
- 环境
- windows:10
- IDE:Microsoft Visual Studio 2022
- 查看当前电脑OpenGL版本
- GLView:7.2.8
- OpenGL:4.4
- 配置环境涉及的库
- GLFW:3.4
- GLEW:2.1.0
- GLM:1.0.1
- SOIL2:1.20
- 辅助工具
- premake:5
接下来对GLView、GLFW、GLEW、GLM、SOIL2、premake进行一个概述,有助于了解它们到底是有什么用,既然要使用它就要知道它们都是干什么的对吧!
OpenGL环境配置涉及两个工具,一个是GLView,一个是premake
GLView:用于查看OpenGL版本
premake:用于生成SOIL2静态库
OpenGL Extension Viewer是一款显卡测试工具,可以快速,有效地帮助用户查询,测试出显卡的FPS,对绘图处理器、OpenGL API的侦测等,检测OpenGL计算能力,是款非常值得信赖的软件。
说白了,就是可以用该软件测试当前显卡支持的OpenGL版本。
- 官方下载地址:OpenGL Extension Viewer
- 下载安装步骤:
- 点击上述链接进入官网后,可以选择不同的GLview版本(有windows、Mac等不同的操作系统对应版本,分4.x,5.x,6.x等),我这边选择的是最新的(进入网页之后应该也是最新的,不需要选择)。
- 选择好下载版本之后,点击[Download],下载安装包;
- 下载完成之后,以管理员身份启动安装程序;
- 选择语言:中文(简体),点击[OK];
- 进入安装向导后,点击[下一步];
- 许可证协议:点击[我接受];
- 选择组件:点击[下一步];(如果熟悉这个软件的话,可以自行选择组件)
- 选择安装位置:在选择好安装位置(看个人情况吧,C盘空间多那就不用修改了,不然的话就改到系统盘以外),点击[安装]即可;
- 安装结束后,点击[完成];
- 使用GLView查看当前电脑的OpenGL版本。
软件的使用也比较简单,直接运行软件之后,GLView会自动分析电脑当前信息。
Premake是一款开源的命令行工具,用于生成构建配置文件。它读取用脚本定义的软件项目,并使用这些定义来执行构建配置任务或生成适用于多种工具集(如Visual Studio、Xcode和GNU Make)的项目文件。
(大概意思就是用于生成库的辅助工具,感觉应该跟cmake差不多。在本文中的作用就是辅助生成SOIL2静态链接库。)
- 官方下载地址:premake
- 下载安装步骤:
- 点击上述链接进入官网后可以看到premake也分不同的操作系统,选择对应的操作系统[windows]后,会直接跳转到下载;
- 下载完成之后,解压;
- 解压之后得一个可执行程序premakeX.exe;
(X表示版本,常见的有premake4.exe、premake5.exe,不出意外应该是都可以用的。)
(premake是不需要安装的,解压缩出来就可以直接使用)
这里不列举premake的使用,在后面配置SOIL2库的时候会讲述如何使用premake生成SOIL2静态链接库。
概述
- GLFW:跨平台的窗口创建和管理库
- GLEW:跨平台的C++扩展库,基于OpenGL图形接口
- GLM:基于GLSL规范的C++数学库
- SOIL2:图像加载库SOIL的分支版本,用于读取图片并做出相应的处理
个人建议:按照下述步骤准备各种动态链接库的时候,可以按照如下图示结构存放,避免文件太杂乱。
比如下方的截图就是我按照上述图示结构存放获取相关库的路径:
- 官方下载地址:GLFW
- 获取步骤:
- 点击上述链接进入官网以后,可以看到有[Source package]和不同操作系统的[binaries],也就是说官方很贴心的为我们准备了两种选择,要么下载源文件[Source package],然后自行在操作系统上进行编译,要么直接下载对应操作系统已经编译好的[binaries],直接使用即可。
[Source package]操作难度较大,像我这种小趴菜,当然是选择[binaries]啦!!!
注:并不是64位windows就需要选择64-bit的GLFW。选择哪个取决于你的项目的实际需要的架构。比如构建win32或者x86的项目,那就需要一个32-bit的二进制文件。如果构建的是64位或者x64的应用,那可能就需要选择64-bit的二进制文件。- 下载完成之后,解压;
- 解压之后得到如下文件列表,此时就完成了GLFW库的准备工作。
- 官方下载地址:GLEW
- 获取步骤:
- 点击上述链接进入官网以后,可以看到目前的最新版本信息,也是分为[Source]和[Binaries]两种资源,有经验的大佬可以自行下载[Source],进行相应的编译操作。
我呢?老规矩,这里直接下载[Binaries]。- 点击下载之后会有一个跳转界面的过程,不要慌,等待它几秒钟后就会提示下载;
- 下载完成之后,解压;
- 解压之后得到如下文件列表,此时就完成了GLEW库的准备工作。
- 官方下载地址:GLM
- 获取步骤:
- 点击上述链接进入官网以后(咦?怎么进GitHub上获取?这TM不会是三方发布吧?正规么?放心好了,GLM库就是用GitHub库作为发布平台的,包正规的!),往下翻会有其他版本的GLM库,一般的话直接点击[Code],然后点击[Download ZIP]下载到本地即可;
- 下载完成之后,解压;
- 解压之后得到如下文件列表,此时就完成了GLM库的准备工作;
- 官方下载地址:SOIL2
- 获取步骤:
- 点击上述链接进入官网以后,SOIL2也是通过GitHub发布,跟GLM下载相同,也是点击[Code],然后点击[Download ZIP],开始下载。
- 下载完成之后,解压;
- 解压完成之后得到如下文件列表,此时就完成了个der,还没弄完呢,SOIL2库与其他的库不同,需要使用premakeX.exe处理一下,然后再手动生成一下,继续继续;
下面是解压之后的文件列表;- 将premakeX.exe拷贝到与premakeX.lua同路径下(比如我下载的是premake5.exe,那么就把premake5.exe拷贝到该路径下,有的可能下载的是premake4.exe,没关系,因为该路径下还有一个premake4.lua,也是可以用的);
- 拷贝过来之后,通过指令使用premake5来生成Visual Studio 2022的项目文件。
- premake5.exe对应指令:
premake5 vs2022
- premake4.exe对应指令:
premake4 vs2022
注:通过运行这个指令,premake5将会生成适用于Visual Studio 2022的项目配置文件,以便在Visual Studio中打开和构建项目。
- 普通执行步骤:按下键盘[win]+[r],输入cmd,点击[确定],启动命令提示符后通过cd指令进入对应文件夹路径下,执行上述指令即可;
- 简单执行步骤:直接在文件夹的路径位置输入cmd,按下键盘[Enter],直接执行上述指令即可;
(1).在当前路径下,鼠标点击一下图示路径位置;
(2). 直接输入cmd;
(3). 按下键盘[Enter],启动命令提示符;
(4). 拷贝上述指令,直接粘贴到命令行中;
(5). 按下键盘[Enter],等待执行结束;
- 进入…\make\windows文件夹中,使用VS2022打开SOIL2.sln;
- 选择对应的配置(比如我的是在win32项目上测试,我选择的win32,你也可以选择x64,由你后面创建的OpenGL项目决定),然后生成一下soil2-static-lib项目(右击[soil2-static-lib],点击[生成]);
- 此时查看生成的输出内容,就能找到生成的lib库在哪个路径下,此时就完成了SOIL2库的准备工作;
OpenGL的环境配置就是配置GLFW、GLEW、GLM、SOIL2,目前我的配置的就是这四个库,后续如果有其它更好的库并且可以应用,将更新到该文章中。
创建文件夹结构存放对应的头文件、lib、dll,为了方便使用。
- 按照如下文件结构创建各文件夹;
- 准备GLFW库
- include:按照下图所示,将准备的GLFW文件路径下的.\\include\\GLFW整个文件夹拷贝到上述文件结构中的.\\OpenGLTemplate\\include路径下;
- lib:按照下图所示,将准备的GLFW文件路径下的.\\lib-vc2022\\glfw3.lib文件拷贝到上述文件结构中的.\\OpenGLTemplate\\lib路径下;
- 准备GLEW库
- include:按照下图所示,将准备的GLEW文件路径下的.\\include\\GL整个文件夹拷贝到上述文件结构中的.\\OpenGLTemplate\\include路径下;
- lib:按照下图所示,将准备的GLEW文件路径下的.\\lib\\Release\\Win32\\glew32.lib文件拷贝到上述文件结构中的.\\OpenGLTemplate\\lib路径下;
- dll:按照下图所示,将准备的GLEW文件路径下的.\\bin\\Release\\Win32\\glew32.dll文件拷贝到上述文件结构中的.\\OpenGLTemplate\\dll路径下;
- 准备GLM库
include:按照下图所示,将准备的GLM文件路径下的.\\glm整个文件夹拷贝到上述文件结构中的.\\OpenGLTemplate\\include路径下;
- 准备SOIL2库
- include:按照下图所示,将准备的SOIL2文件路径下的.\\src\\SOIL2整个文件夹拷贝到上述文件结构中的.\\OpenGLTemplate\\include路径下;
- lib:按照下图所示,将按照文章中3.4中生成的lib拷贝到对应文件夹中;
比如我的是从准备的SOIL2文件路径下的.\\lib\\windows\\soil2-debug.lib文件拷贝到上述文件结构中的.\\OpenGLTemplate\\lib路径下。
- 启动VS2022,创建新项目;
- 创建新项目:选择控制台应用,点击[下一步];
- 配置新项目:输入项目名称,选择项目路径,勾选[将解决方案和项目放在同一目录中],点击[创建];
- 将文章4.1中创建的库文件夹OpenGLTemplate拷贝到新创建项目的解决方案同路径下;
- 回到创建的项目中,将解决方案平台设置为x86;
- 右键解决方案,点击[属性];
- 点击[VC++ 目录],点击[包含目录],点击[编辑];
- 将下述路径添加到"包含目录"中,点击[确定];
.\OpenGLTemplate\include
- 继续在属性中,展开[链接器],点击[常规],点击[附加库目录],点击[编辑];
- 将下述路径添加到"附加库目录"中,点击[确定];
.\OpenGLTemplate\lib
- 点击[输入],点击[附加依赖项],点击[编辑];
- 将下述.lib添加到"附加依赖项"中,点击[确定];
glfw3.lib
glew32.lib
opengl32.lib
soil2-debug.lib
- 点击[应用],点击[确定],此时就完成了OpenGL环境的配置;
完成了OpenGL环境配置后,可以使用如下代码简单调试。
#include <iostream>
#include <GL/glew.h>
#include <GLFW/glfw3.h>
#include <glm/glm.hpp>
#include <glm/gtc/matrix_transform.hpp>
#include <glm/gtc/type_ptr.hpp>
void display() {
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_TRIANGLES);
glColor3f(1.0f, 0.0f, 0.0f);
glVertex2f(-0.5f, -0.5f);
glVertex2f(0.5f, -0.5f);
glVertex2f(0.0f, 0.5f);
glEnd();
}
void main() {
glfwInit();
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 6);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
#ifdef __APPLE__
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
#endif
GLFWwindow* window = glfwCreateWindow(800, 600, "LearnOpengl", NULL, NULL);
if (window == NULL)
{
std::cout << "Failed to create CLFW window" << std::endl;
glfwTerminate();
return;
}
glfwMakeContextCurrent(window);
//GLAD
/*if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)) {
std::cout << "Fail to initialize GLAD";
return;
}*/
// 使用glm库进行矩阵变换示例
glm::mat4 transform = glm::mat4(1.0f);
transform = glm::translate(transform, glm::vec3(0.0f, 0.0f, 0.0f));
//渲染循环
int count = 0;
float red = 1.0f, green = 0.0f, blue = 0.0f;
while (!glfwWindowShouldClose(window))
{
if (glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS)
glfwSetWindowShouldClose(window, true);
count++;
switch (count)
{
case 1200:
glClearColor(1.0f, 0.0f, 0.0f, 1.0f);
break;
case 2400:
glClearColor(0.0f, 1.0f, 0.0f, 1.0f);
break;
case 3600:
glClearColor(0.0f, 0.0f, 1.0f, 1.0f);
count = 0;
break;
default:
break;
}
glClear(GL_COLOR_BUFFER_BIT); //状态使用
display(); //渲染
// glfw:交换缓冲区和轮询IO事件(按键按下或释放,鼠标移动等)
glfwSwapBuffers(window);
glfwPollEvents();
}
//回收前面分配的GLFW资源
glfwTerminate();
}
- 将上述代码直接拷贝到"项目.cpp"文件中(如果项目.cpp中有main函数,记得删掉),右击解决方案,点击[生成];
- 生成之后,运行即可查看如下运行结果(界面红、绿、蓝三色交替),即为环境配置成功!
到此就完成了OpenGL的VS2022环境配置,仅仅是做了一个例子,后面可以根据上手的项目自由处理,比如可以生成模板,在创建新项目的时候可以直接使用模板创建项目,就可以省去这些配置过程。
即:一劳永逸。
提示:请勿发布广告垃圾评论,否则封号处理!!