OpenGL运行环境搭建学习00篇【Related to https://learnopengl-cn.github.io/】
前情提要(为什么,是什么):
我主要实操的内容是
Transformation (几何变换) | 3D 图形的基础操作,就是把模型移动、旋转、放大缩小,再调整相机视角,让 3D 物体能正确、清晰地显示在屏幕上 |
Illumination and Shading (光照与着色) | 模拟物体被光照亮的效果,比如哪里亮、哪里暗、高光在哪里,能让平面的模型瞬间变得立体、有真实质感 |
Texture Mapping (纹理映射) | 给 3D 模型 “贴皮肤”,比如木纹、图片贴纸、皮肤纹理,不用手动画复杂的颜色,就能让模型表面有丰富的细节 |
Depth & Transparency (深度与透明效果) | 前者解决 3D 物体前后遮挡错乱的问题,后者实现半透明、叠加效果,是让画面看起来真实、不穿帮的基础配置 |
Ray Tracing (光线追踪) | 模拟真实世界里光线的传播、反射、折射,能生成电影级别的逼真光影、镜面反射和透明效果 |
使用的编译器/开发工具:
Visual Studio2022版
链接:https://pan.baidu.com/s/1qU0JlTEJxXq7EfucDxW1ZQ?pwd=1408 提取码:1408
GLFW(Graphics Library Framework)_64位
轻量级的跨平台库,主要用于创建OpenGL上下文、管理窗口和处理输入
GLEW(OpenGL Extension Wrangler Library)_64位
OpenGL扩展管理库,负责加载OpenGL规范中定义的扩展功能。
GLM(OpenGL Mathematics)_1.0.3
基于GLSL 语法风格的C++数学库,提供线性代数计算功能
注:glm 是 header-only 库,include 就能用,不需要编译、不需要链接、不需要 CMake find_package。只要确保编译器能找到头文件路径就行。
访问以下官网下载预编译库或源码自行编译: GLFW:https://www.glfw.org/ GLEW:http://glew.sourceforge.net/ GLM:https://glm.g-truc.net/ 我是用这种 | 从GitHub获取最新Release版: GLFW:https://github.com/glfw/glfw/releases GLEW:https://github.com/Perlmint/glew-cmake/releases GLM:https://github.com/g-truc/glm/releases |
还有最重要的是搞清楚我们配置环境要怎么用
方法一:保存为项目模板(推荐,最省事)
步骤
先把当前项目配置好(包含目录、库目录、链接器都设好)
文件 → 导出模板选择项目模板→ 下一步
模板名称填
OpenGL_Project勾选自动导入到 Visual Studio→ 完成
以后怎么用
新建项目时:
plain
文件 → 新建 → 项目 → 搜索 "OpenGL_Project"直接基于这个模板创建,所有配置都自带。
我主要是这样子用
方法二:保存属性表(.props)
适合多个项目共享同一套配置,但不想用模板。
步骤
视图 → 属性管理器(或视图 → 其他窗口 → 属性管理器)展开你的项目 → 右键Debug | x64→添加现有属性表...→ 没有就新建
右键添加新属性表...→ 命名为
OpenGL.props双击
OpenGL.props打开,在里面配置:
C/C++ → 常规 → 附加包含目录:
$(ProjectDir)include链接器 → 常规 → 附加库目录:
$(ProjectDir)lib链接器 → 输入 → 附加依赖项:
glfw3.lib;glew32.lib;opengl32.lib保存
以后怎么用
新建项目后:
视图 → 属性管理器右键Debug | x64→添加现有属性表...
选择你保存的
OpenGL.props配置自动生效
方法三:直接复制整个项目文件夹
最简单粗暴,适合作业:
把配置好的项目文件夹复制一份
重命名文件夹和里面的
.sln、.vcxproj用记事本批量替换文件名(可选)
打开
.sln直接改代码这个做作业会经常碰到别人或者老师给你直接发项目包,我们起码要能看懂
还有一个建议了解的环境配置文件属性:
软件安装和环境配置(如何做)
同样,我之前c盘空间富裕的时候下载过一次,这次依旧找了一下有没有什么残留(注册表总会伴随下载位置问题,我也去查了一下)
安装前可以去删一下
1.注册表:
按win+R,输入regedit打开注册表,输入或找到计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\Setup,右键CachePath和SharedInstallationPath,把这两个删除掉,删除之后,重新下载时可以修改“下载缓存和共享组件、工具和SDK”的位置。
安装VS2022
通过网盘分享的文件:VisualStudio2022Setup.exe
链接: https://pan.baidu.com/s/1w6dEONW2HeZAN23renKvXQ?pwd=1408 提取码: 1408
下载并打开setup应用程序
这里我们继续
这个setup将会安装一个installer软件
通常会直接下载到C:\Program Files (x86)\Microsoft Visual Studio\Installer这个位置
Installer是Visual Studio 安装程序的引导器和更新引擎,它的路径被硬编码在注册表、Windows Installer 数据库和多个系统服务中。不推荐移动,如果空间紧张,Installer 目录里的
packages缓存文件夹,可以安全清理缓存。(实在想移动可以考虑借助符号链接地址指向)
进入下方这个界面,在工作负荷中找到“使用C++的桌面开发”(有其他需求斟酌下载)
安装位置我都修改到了D盘,不过我没有全部修改到同一文件夹下,如果想要更便捷的管理可以考虑统一路径文件夹,比如(标色:建议同时省略;下划线:随便省略):
D:\Program Files\MicrosoftVisual Studio\2022\Community(本体)
D:\Program Files\MicrosoftVisual Studio\2022\Packages(缓存)
D:\Program Files\MicrosoftVisual Studio\2022\Shared(共享)
修改完之后点击右下角下载时安装
下载完成后弹出登录页面,可以选择用GitHub或者微软账号登录。
GitHub登录每次都都需要页面重定向会软件,有点麻烦。
选择喜欢的主题之后就进入项目创建页面了
这里我已经打开过项目了
配置OpenGl环境
VisualStudio内:紫色
依赖:蓝色
创建一个VS空项目。“将解决方案文件与项目置于同一目录”(这个根据自己需求勾选)
注:勾选后,解决方案文件(.sln)和项目文件(.vcxproj)放在同一层目录,路径更短更清爽。单个项目建议勾选。
单项目的解决方案就是一个"包装纸",里面只有一行地址指向真正的项目文件。它的存在是为了让 VS 的工程体系保持一致,无论项目大小都能用同一套逻辑管理。
这里地址也可以一并管理
D:\Program Files\MicrosoftVisual Studio\2022\source\repos
| 简单情况(一个项目) | 复杂情况(多个项目) | 简单情况勾选之后 |
学 OpenGL 做单项目作业,解决方案和项目几乎没区别。勾选"放在同一目录"就行
在项目目录下新建文件夹 "lib", "include",分别用于存放库文件和头文件。
具体在哪?
就是与解决方案文件(.sln)同级别,。
OpenGL 本身不分 32/64 位,但 GLFW、GLEW 等库分。由于GLFW64位预编译文件资料较少,一般使用 32 位。我这里适应教学资源需求配置64位,两者配置操作是一样的。
准备依赖
我这里先是下载编译好的,后续会重新配置一次
网盘也有以下安装文件压缩包,可以考虑是否直接使用:
链接: https://pan.baidu.com/s/15SOEB-AYos73L0jHP27Wjg?pwd=1408 提取码: 1408
GLEW:GLEW: The OpenGL Extension Wrangler Library
GLFW:Download | GLFW
GLM稍后配置
把压缩包转移到项目目录下并解压
内部结构如下(左GLFW右GLEW),可以看到
解压后头文件需要的都复制在我们自己创建的头文件文件夹目录下
解压后库文件需要的都复制在我们自己创建的库文件文件夹目录下
转移好的文件夹长这样:
GLM也是一样的:Releases · g-truc/glm下载最新版本的GLM源码库压缩包
VS2022 默认是 C++14,如果用后续更新版本的glm可能需要调整C++版本。
解压之后只看到一个glm文件,内部如下
我们下载的是 GLM 源码仓库,只需要glm/文件夹里的头文件。把整个glm/复制到项目的include/目录下就能用,其他文件夹可以删掉。
ok,到这一步我们准备好了环境文件,还需要把它们和项目进行链接和配置。
项目配置
用VS打开本项目,右侧显示文件资源管理器。右击项目文件夹,打开属性配置。
配置VC++目录
此处的包含目录和库目录就是我们之前配置的“include”和“lib”文件,我们需要进行行编辑添加(添加不是覆盖,添加新行即可)
选中,点击右侧下拉菜单的编辑,先添加新行,然后选择对应文件夹即可
链接库文件中的lib
点击链接器,打开输入目录,看到附加依赖项,同样操作添加项(此处需要把所有lib文件名放进去)
glew32.lib
glew32s.lib
glfw3.lib
glfw3_mt.lib
glfw3dll.lib(中间空的是shift+enter)
这里需要注意
添加如图:
到这一步,环境配置就结束了。那么我们如何使用,或者后面怎么方便直接新建项目就可以用?
项目使用:
这里采用方法一,保存为模板方便后续直接使用。
存模板:
我们已经配置好环境,接下来导出成模板。
点击项目(P) → 导出模板(E)
这里可以两种模板都保存,各有各的用法。我选择了第一种
项目模板:
唯一可惜的就是输出目录不能修改,记得勾选自动将模板导入 Visual Studio。
使用模板
打开后新建项目就可以看到我们的模板了。
项目针对:
使用模板依然有项目对应,可以提前自查:
或者看是否有以下报错:
1.链接器错误(LNK2019),说明代码编译通过了,但 VS 找不到 OpenGL 函数的库文件。核心原因是:缺少opengl32.lib链接,在之前的链接库列表添加即可
2.运行时库冲突(LIBCMT / MSVCRT)(LNK4098)警告说明你的 GLEW 库和项目使用的运行时库类型不一致。
如果 GLEW 是静态编译的(
/MT),你的项目也要用/MT如果 GLEW 是动态编译的(
/MD),你的项目也要用/MD
所以我这个项目只需要
1/2任选,但是只能保留一个
最后
后续会使用2019或者2017配合cmake再次配置,感谢观看,使用顺利。