C++/OpenGL 入门(1):关于VS2017 中OpenGL部分安装过程
参考书目:Computer Graphics Programming in OpenGL Using C++ by V Scott Gordon John L Clevenger (z-lib.org)
下载方式: zlibrary 网站(https://zh.ng1lib.org/)中搜索书名OpenGL 官方帮助手册,网址:https://www.opengl.org/sdk/docs/man
书中的例子需要 GLM 库,在附录有教安装步骤,GLM 库 的文档,网址:
https://glm.g-truc.net/0.9.9/index.htmlSOLI 库:用来加载图片纹理图像,网址: https://github.com/SpartanJ/soil2
3D 图形变成相关的书籍推荐:
• (Sellers et al.) OpenGL SuperBible [SW15]
• (Kessenich et al.) OpenGL Programming Guide [KS16] (the “red book”)
• (Wolff) OpenGL 4 Shading Language Cookbook [WO13]
• (Angel and Shreiner) Interactive Computer Graphics [AS14]
• (Luna) Introduction to 3D Game Programming with DirectX 12 [LU16]如何查找电脑的显卡能否支持什么版本的OpenGL
① 计算机管理 -> 设备管理器 -> 显示适配器 -> Interl® HD Graphics 620
用测试工具GPU_Caps_Viewer查看显卡支持的OpenGL的版本号,可能是 4.1.书中说最好支持4.3以上,所以不确定是否有影响
下载了 GLview 免费软件,查看版本号,图中显示,可以支持 4.4的版本,应该能满足书中的要求,GLview 的压缩包,解压打开直接用即可,不需要安装
确保 OpenGL 的版本号之后,需要编译 GLFW, 编译之前,需要安装 cmake,cmake 网址在:https://cmake.org
cmake 下载, 网址:https://cmake.org/download/
公众号安装教程: https://mp.weixin.qq.com/s/6Pu9qQgwoaT2WvX37uK_aw
下载 GLFW
下载 glfw-3.3.6,网址是:https://www.glfw.org/
位置:E:\pg\code\220124 computer graphic\glfw-3.3.6
下载 cmake,网址是:https://cmake.org/download/
位置:F:\cmake\cmake-3.22.1-windows-x86_64\bin
貌似直接打开 cmake-gui.exe 就能用,不需要安装,但是在电脑 cmd 输入 cmake –version看不到 cmake的信息。以下是 cmake 的界面
打开cmake, 用 cmake 编译 glfw 文件夹,具体步骤是,
①“where is the source code”输入 glfw 文件夹所在位置“E:/pg/code/220124 computer graphic/glfw-3.3.6/glfw-3.3.6”
②“where to build the binaries”输入 cmake生成文件想要存储的位置“E:/pg/code/220124 computer graphic/CmakeGLFW”
③点击 “configure”,由于电脑装的是 vs2017, 注意跳出的窗口要选择 VS2017
④ 编译成功后,选择“generate”,在生成的文件夹中可以看到 “GLFW.sln”,用vs2017打开
⑤ VS2017 打开 “GLFW.sln”后,直接点击“本地 Windows 编译器”,即可直接编译
图 cmake 界面
图 点击 configure 后弹窗,需要选择电脑安装的VS版本,电脑安装2017VS,所以选择2017
图 cmake 编译 GLFW 后生成的文件夹,其中 GLFW.sln 文件需要用 VS2017打开
图 VS2017 成功打开 GLFW.sln 后,直接点击 “本地 Windows 编译器”,VS开始编译
结果:上述步骤,主要生成了三个文件,在后续工作中会用到
① 库 “glfw3.lib”位置 “E:\pg\code\220124 computer graphic\CmakeGLFW\src\Debug”,就是在cmake 编译 glfw 文件后生成的文件夹 CmakeGLFW 中
② 两个头文件,在 GLFW 文件夹中,位置是: 就是在,网上下载的 glfw 的文件夹 include 中,有 GLFW文件夹
E:\pg\code\220124 computer graphic\glfw-3.3.6\glfw-3.3.6\include\GLFW
下载 GLEW
网址:http://glew.sourceforge.net/
① 注意下载的 window 版本下的,而不是普通的 zip
② 位置:E:\pg\code\220124 computer graphic\glew-2.1.0-win32
③ 需要的文件
文件 glew32.dll 位置: bin 文件夹 -> Release 文件夹 -> x64 文件夹
库 glew32.lib 位置: lib 文件夹 -> Release 文件夹 -> x64 文件夹
文件夹 GL 位置: include 文件夹 -> GL 文件夹
下载 GLM
网址:https://github.com/g-truc/glm/releases/tag/0.9.8.0
版本:0.9.8.0
Csdn 参考教程: https://blog.csdn.net/Wonz5130/article/details/83116009
教程过程:
步骤是,在 VS 创建的项目所在文件夹中,将下载的 glm-0.9.8.0 复制进去,在 VS 界面中,将这个项目的属性中,“添加包括的目录 Additional Include Directories ”添加 glm 的文件夹,然后在项目的源代码里面输入头文件:
//glm
#include <glm/glm.hpp>
#include <glm/gtc/matrix_transform.hpp> //需要什么变换,就导入什么文件,具体可以去官网看
#include <glm/gtc/type_ptr.hpp>
需要的文件:压缩包解压后,glm文件夹
下载 SOIL2 库
首先下载 premake 工具,需要用 premake5.exe
Premake 下载网址 : https://premake.github.io/download
SOIL2 下载网址: https://github.com/SpartanJ/soil2
SOLIL2 和 premake 下载后的压缩包存储位置: E:\pg\code\220124 computer graphic
将 premake5.exe 复制到 SOIL2 文件夹,然后在 SOIL2 文件夹的路径上 更改为 cmd,调出在这个路径下的命令窗口:
图 如何在 SOIL2 文件夹中,调出该路径下的命令窗口
在 SOIL2 库所在路径下的cmd 窗口 输入:premake5 vs2017
打开 SOIL2 文件夹 -> make 文件夹 -> windows 文件夹 ,位置为:
E:\pg\code\220124 computer graphic\SOIL2-master\SOIL2-master\make\windows
右键用 VS2017 打开 SOIL2.sln
打开 VS2017后,右键点击左边栏 “soil2-static-lib”-> “生成”
如果报错:
MSB8036 找不到 Windows SDK 版本 8.1。请安装所需版本的 Windows SDK,或者在项目属性页中或通过右键单击解决方案并选择“重定解决方案目标”来更改 SDK 版本。
解决方法:
参考网址:
https://blog.csdn.net/weixin_44981971/article/details/122035658?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1.pc_relevant_aa&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1.pc_relevant_aa&utm_relevant_index=2
实际步骤:
① “项目” -> “重定解决方案目标”
② 在弹出窗口,默认选项,直接按确定
③ 右键选定 “soil2-static-lib”,选择“重定向项目”,弹窗中按照默认选项,选择确认
④ 重复报错前的那一步,右键点击左边栏 “soil2-static-lib”-> “生成”,此时就没有报错了
建立自己的 lib 库 和 include 库
在自己喜欢的电脑储存位置上,建立一个文件夹,这里命名为 0126 template, 文件夹下再建立两个文件夹,分别命名 “lib”和“include”。另外,将 glew32.dll 文件复制进该文件夹,复制来源:
glew32.lib: E:\pg\code\220124 computer graphic\glew-2.1.0-win32\glew-2.1.0\bin\Release\Win32
“lib”文件夹中,三个文件:glew32.lib , glfw3.lib, soil2-debug.lib, 位置分别在:
glew32.lib:E:\pg\code\220124 computer graphic\glew-2.1.0-win32\glew-2.1.0\lib\Release\x64
glfw3.lib:E:\pg\code\220124 computer graphic\CmakeGLFW\src\Debug
soil2-debug.lib: E:\pg\code\220124 computer graphic\SOIL2-master\SOIL2-master\lib\windows
“include”文件夹中,四个文件夹,GL, GLFW, glm, SOIL2, 位置分别在:
GL: E:\pg\code\220124 computer graphic\glew-2.1.0-win32\glew-2.1.0\include
GLFW: E:\pg\code\220124 computer graphic\glfw-3.3.6\glfw-3.3.6\include
glm: E:\pg\code\220124 computer graphic\glm-0.9.8.0
SOIL2: E:\pg\code\220124 computer graphic\SOIL2-master\SOIL2-master\src
将所有文件复制完后的结构:
以上为 PDF 370 – PDF 374 的内容,是附录A的内容
调试pdf 29 页的程序
新建项目后,如何将现有文件夹加入vs项目中
参考教程:https://blog.csdn.net/weixin_44378800/article/details/106697612
如何将现有 lib 库导入项目,右键项目,选择“添加”-> 现有项,将 lib 导入
VS2017出现C4996 ‘fopen’: This function or variable may be unsafe. Consider using fopen_s instead.错误
参考教程:https://blog.csdn.net/qq_28114615/article/details/85683550
解决办法:
项目——属性——C/C++——预处理器——预处理器定义——右侧下拉框中“编辑”——在第一个编辑框中添加_CRT_SECURE_NO_WARNINGS——大功告成
错误“main 函数已经在main.obj 文件中定义过”,解决办法:右键选中 main, 选择“查找所有引用”,查到 dummy.cpp 文件中也有一个 main 函数定义,由于 dummy.cpp 文件中没有任何有用信息,所以更改 里面的mian 函数名称为 main_dummy,重新编译解决问题
编译报错,定义的 display 函数中调用了 glClearColor 和 glClear 函数,“无法解析的外部符号”,所以在项目属性中,配置属性 -> 链接器 -> 输入 -> 附加依赖项中,增加一个 OpenGL32.lib -> 确定 -> 确定
需要XXX.lib或XXX.dll库。手动添加,项目->属性->配置属性->链接器->输入 然后在附件依赖项添加XXX.lib,再生成第一个无法解析的外部符号错误消失了。
增加 OpenGL32.lib 附加依赖项之后,运行报错,vs运行时提示:应用程序无法正常启动(oxc000007b)。请单击"确定"关闭应用程序
打开生成的 “220126 template.exe”,位置是:
E:\pg\code\220124 computer graphic\220126 template\220126 template\Debug
这个exe 文件无法顺利打开,报错是“找不到 glew32.dll”
注意,这里是将 win32 文件夹中的 glew32.dll 放入电脑的 SysWOW64 文件夹中,也就是将32位的 dll 文件放入 系统对应存储64位的文件夹里。
就是从 E:\pg\code\220124 computer graphic\glew-2.1.0-win32\glew-2.1.0\bin\Release\Win32 文件夹中,复制 “glew32.dll” ,在C:\Windows\SysWOW64 文件夹中,粘贴刚刚复制的 dll 文件。
这样就可以顺利生成,结果如下:
分析2.1代码
#include "include\GL\glew.h"
#include "include\GLFW\glfw3.h"#include <iostream>
using namespace std;
void init(GLFWwindow* window) { }
void display(GLFWwindow* window, double currentTime) {glClearColor(1.0, 0.0, 0.0, 1.0);glClear(GL_COLOR_BUFFER_BIT);
}
int main(void) {if (!glfwInit()) { exit(EXIT_FAILURE); }glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4);glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);GLFWwindow* window = glfwCreateWindow(600, 600, "Chapter2 - program1", NULL, NULL);glfwMakeContextCurrent(window);if (glewInit() != GLEW_OK) { exit(EXIT_FAILURE); }glfwSwapInterval(1);init(window);while (!glfwWindowShouldClose(window)) {display(window, glfwGetTime());glfwSwapBuffers(window);glfwPollEvents();}glfwDestroyWindow(window);glfwTerminate();exit(EXIT_SUCCESS);
glClearColor(1.0, 0.0, 0.0, 1.0);
// 四个数 (1,0,0,1)是 RGBA的格式
GLFW
和 GLEW
库激活函数:
glfwInit()
glewInit()
glfwCreateWindow() :
用来创造 GLFW 窗口,长,宽,顶部的标题和 对应的内容
window hints 窗口提示:提示机制必须兼容 openGL 4.3,就是代码中的:
major = 4
minor = 3
glfwSwapInterval() and glfwSwapBuffers()
: 用来垂直同步?
glfwMakeContextCurrent() :
用来使得窗口的内容显示出来
display()
: 循环函数
glfwSwapBuffers()
: 涂屏幕窗口 paint the screen
glfwPollEvents()
: 对类似键盘被按下的事件做出反应
glfwGetTime()
: 返回GLFW 初始化的时间
glClear(GL_COLOR_BUFFER_BIT);
意思是,将颜色缓存器的颜色清理掉,重新提供预设好的颜色
glClearColor()
就是在清理颜色缓存器之前,要提供一个颜色,以便清理缓存器后提供
glfwDestroyWindow() and glfwTerminate()
结束这个窗口并停止
PDF31
补充知识点:
vs中,include 其他文件夹的头文件时候,需要用 双引号 而不是<>,同时,创建名为test的解决方案项目时候,有一个文件夹 test,里面有 test.sln 和 test 文件夹,需要引用的头文件在子文件夹 test 中,那么就写作 include “GL/xxx.h”,其中 GL文件夹就在 test 子文件夹中。
C++/OpenGL 入门(1):关于VS2017 中OpenGL部分安装过程相关推荐
- 如何在简中版 MathType 安装过程中,就能输入产品密匙?
该问转载于:https://bbs.kafan.cn/thread-2031670-1-1.html 感谢原创作者提供的分享!本人也做一次搬运工,将好的东西分享给大家. 之前的三种方法见下面的地址: ...
- [Office]Win7(x64)旗舰版安装Office 2013专业版的过程中提示在安装过程中出错
博主在重装系统之后准备安装Office 2013,结果在快安装结束的时候提示:Micrsoft Office Professional Plus 2013 在安装过程中出错. 紧接着就出现Micros ...
- openGL入门(二)用openGL绘制带有对角线的正六边形
配置好openGL的环境之后我们就可以进行简单的绘图工作了,我的第一个绘图任务是通过点之间的连线绘制带有特定对角线的正六边形. 前人工作 在绘制正六边形之前找了一些绘制线.多边形的教程,以及画正n边形 ...
- vs2017中Nunit的安装
1.Installation-联机: Step1 : 工具->扩展和更新 Step2:联机->搜索"Nunit"->下载下面三项 Step3:下载完毕之后关闭vs ...
- 虚拟机中CentOS 7安装过程
首先我们打开虚拟机软件 这里用到的是VM 9,不同版本虚拟机界面没有太大的区别. 这里就是虚拟机打开后的界面,我们点击:文件--新建虚拟机 点击之后,我们选择高级,当然了标准也可以,按照的是默认虚拟机 ...
- Linux中Redis的安装过程
一.下载redis redis官网地址:http://www.redis.io/ 下载地址:http://download.redis.io/releases/ redis中文文档地址:http:// ...
- linux ftp 工作过程,linux中ftp的安装过程记录[运维篇]
安装FTP的全过程记录,对于相同情况希望有所帮助.[centOS] 1.查询本机是否安装vsftpd: rpm -qa |grep vsftpd : 2.安装ftp服务 yum install vsf ...
- vision安装过程中出错_scrapy安装过程中之Twisted的安装遇到的坑
先简单描述scrapy的整个安装过程,网上很多,所以直接拿过来说了: ①安装lxml,直接pip install lxml即可: ②安装安装zope.interface ,同样pip install ...
- 视频教程-OpenGL入门2019版-其他
OpenGL入门2019版 在大学期间系统的学习了opengl.计算机图形学.计算机视觉的算法,与2013年加入4399,任职暗黑战神项目组主程,2015年3月底离职创业,创办了战火信息科技有限公司, ...
- OpenGL学习笔记:第一个OpenGL程序完全注释
运行环境: CentOS7 g++ (GCC) 4.8.5 20150623 (Red Hat 4.8.5-16) OpenGL实现厂商的名字:VMware, Inc. 渲染器标识符:Gallium ...
最新文章
- QQ和新浪微博登陆第三方的简单实现
- while/do while
- Linux系统检测工具 三(Free,Top,ps,Vmstat,Sysstat)
- 07.敏捷项目管理——推测阶段笔记
- 补码,反码,原码的范围总结
- 21、2010年中兴面试题
- python 正则表达式的应用
- easyui动态修改required
- 反欺诈概念库-物联卡/物联网卡/流量卡
- 1.5 极限的存在准则和两个重要极限
- 【Linux云计算架构:第二阶段-Linux必会的20多种服务】第22章——-源码编译安装LAMP
- Eclipse报错:The project: WMY which is referenced by the classpath, does not exist.
- MicroPython_ESP8266_IoT——第四回 初入联网(接入了贝壳物联)
- JS操作word文档
- 新浪云计算平台应用开发
- windows10企业版开启RDP多用户同时登录
- Centos-7使用的性能监控工具
- css设置竖排字体时letter-spacing无法有效设置字体间距
- UIButton 获取网络图片的排版技巧
- 如何让更多游客参与到景区夜游光影秀