《OpenGL超级宝典第五版》Windows + VS2019配置
《OpenGL超级宝典第五版》Windows + VS2019配置
- 一、准备相关资源文件
- 二、编译文件
- 二、glew、 glut的准备工作
- 四、编译gltools
- 五、配置环境
- 六、测试
最近开始学习OpenGL,在网上搜索了相关的学习资料,选择了《OpenGL超级宝典第五版》。本来抱着很大的热情去学习这本书,但在第一步环境配置就遇见了困难。由于书上对这部分的介绍较少,自己利用从网上下载的各种头文件以及编译好的链接库进行配置会出现各种版本不兼容的问题。虽然网上的教程很多,但真正能解决问题并不多。经过一段时间的摸索,最后在 VS2019+windows环境下成功进行了配置。废话不多说,下面直接开始介绍具体步骤:
一、准备相关资源文件
资源文件包括glut、freeglut、glew、GLTools,这些文件可以去官网下载最新版本,也可以从下面的链接中得到。
下载地址(未编译的文件):https://pan.baidu.com/s/1wnV5tmInJnBVlxWvhMIZHQ 密码:08zm
下载地址(VS2019编译过的文件):https://pan.baidu.com/s/1ybwvFLLN-8oV0sOwwwmfww 密码:ocm2
二、编译文件
为什么要编译文件,如果下载他人编译过的文件直接使用,由于编译的平台不一样,程序运行时会出现版本不兼容的问题。所以为了更好地使下载的库文件与自己的VS版本兼容,需要我们对源码进行重新编译。
1.若下载VS2019编译后的文件可以直接跳到环境配置
2.未编译资源文件中需要自己编译的有freeglut、与GLTools。
编译freeglut
需要用到的软件cmake:https://github.com/Kitware/CMake/releases/download/v3.16.0-rc3/cmake-3.16.0-rc3-win32-x86.zip
解压Cmake压缩包,打开bin目录下的cmake-gui运行软件。然后在freeglut文件夹中新建一个build文件夹(用来存放编译结果)
在Cmake中分别选择freeglut文件夹以及build文件夹,然后点击configure
然后分别选择VS2019(编译平台,根据自己需要选择)和WIN32(我选择了32位,下面的也是),并点击finish
点击Generate
最后点击Open Project,打开VS进行编译
若无法自动打开VS可在build文件夹中点击freeglut.sln打开VS
然后选择Debug以及WIN32,并在生成中点击生成解决方案,等待Debug编译完成。
同样的选择Release、Win32,并在生成中点击生成解决方案,等待Release编译完成。
此时我们已经完成了freeglut的编译工作,接下来需要把**.h文件以及.lib文件找出来,首先新建一个文件夹gltools**(最后的环境配置需要用到),并在gltools文件夹中新建include文件夹、lib文件夹以及dll三个文件夹,最后还需要在include文件夹中新建一个GL文件夹。
在下载的文件夹中,将freeglut-3.0.0 -> include -> GL中的5个头文件(.h)复制到gltools-> include -> GL
打开编译完成的文件夹build,然后进行以下操作:
build-> lib->Debug中的 freeglut_staticd.lib、freeglutd.lib 复制到 gltools-> lib build-> lib-> Release
freeglut_static.lib、freeglut.lib复制到gltools-> lib
build->bin->Debug中的freeglutd.dll复制到gltools->dll
build->bin->Release中的freeglut.dll复制到gltools->dll
二、glew、 glut的准备工作
这个两个库文件并不要我们单独编译,直接用就可以了。同样的,需要把用到的文件复制出来,具体如下:
glew
将glew-2.1.0 -> include -> GL中的四个头文件复制到gltools-> include -> GL
glew-2.1.0 ->lib -> Release -> Win32 中的两个lib文件复制到gltools-> lib
glew-2.1.0 -> bin -> Release -> Win32中的glew32.dll复制到gltools-> dll
Glut:
打开glut文件夹,进行如如下操作:Glut.lib、glut32.lib复制到gltools-> lib
Glut.dll、glut32.dll复制到gltools-> dll
四、编译gltools
编译gltools需要前面的准备工作都已完成。首先将下载的GLTools -> include 中的11个头文件全部复制到gltools -> include (不是GL文件夹)
打开VS创建新项目-> windows 桌面向导,设置项目名字为gltools(不要随意起名字,后面需要生成一个gtloos.lib文件),位置可以随便找一个,尽量放在下载的资源包GLtools->build文件夹中,方便后续查找。
应用类型选择静态库,其他选项选为空项目,如下图:
然后添加头文件以及源文件(头文件 -> 添加 -> 现有项)
头文件:(注意路径!!!)
同样的方法添加源文件:(源文件 -> 添加 -> 现有项)
最后工程的添加结果如下:
选中gltools,右键-> 属性 进行如下设置:(注意这次的include,是前面新建的文件夹),然后点击应用、确认。
最后,选中gltools, 右键 -> 生成(或者点击窗口上面的生成->生成解决方案)
根据生成的路径找到gltools.lib,并将其复制到gltools ->lib(新建的文件夹),到了这一步就完成了gltools的编译。
五、配置环境
首先,新建一个工程文件夹用来存放之后的代码(位置自己随便定义)。然后,打开VS新建一个控制台应用(创建新项目-> windows 桌面向导 ->应用类型选择控制台应用,其他默认就可以)。
选中项目名字,右键-> 属性 进入配置界面进行如下设置,将自己之前新建文件夹的include文件夹(头文件)以及lib文件夹(链接库)分别添加进去。
链接器-> 输入 ->附加依赖项 将opengl32.lib、gltools.lib、glew32s.lib添加进去,如下图:
将之前新建文件夹gltools-> dll中的5个文件,粘贴到C:\Windows\System32和C:\Windows\SysWOW64,至此,完成所有环境配置。
六、测试
将以下代码复制到工程中cpp文件中。
// Triangle.cpp
// Our first OpenGL program that will just draw a triangle on the screen.#include <GLTools.h> // OpenGL toolkit
#include <GLShaderManager.h> // Shader Manager Class#ifdef __APPLE__
#include <glut/glut.h> // OS X version of GLUT
#else
#define FREEGLUT_STATIC
#include <GL/glut.h> // Windows FreeGlut equivalent
#endifGLBatch triangleBatch;
GLShaderManager shaderManager;// Window has changed size, or has just been created. In either case, we need
// to use the window dimensions to set the viewport and the projection matrix.
void ChangeSize(int w, int h)
{glViewport(0, 0, w, h);
}// This function does any needed initialization on the rendering context.
// This is the first opportunity to do any OpenGL related tasks.
void SetupRC()
{// Blue backgroundglClearColor(0.0f, 0.0f, 1.0f, 1.0f);shaderManager.InitializeStockShaders();// Load up a triangleGLfloat vVerts[] = { -0.5f, 0.0f, 0.0f,0.5f, 0.0f, 0.0f,0.0f, 0.5f, 0.0f };triangleBatch.Begin(GL_TRIANGLES, 3);triangleBatch.CopyVertexData3f(vVerts);triangleBatch.End();
}// Called to draw scene
void RenderScene(void)
{// Clear the window with current clearing colorglClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);GLfloat vRed[] = { 1.0f, 0.0f, 0.0f, 1.0f };shaderManager.UseStockShader(GLT_SHADER_IDENTITY, vRed);triangleBatch.Draw();// Perform the buffer swap to display back bufferglutSwapBuffers();
}// Main entry point for GLUT based programs
int main(int argc, char* argv[])
{gltSetWorkingDirectory(argv[0]);glutInit(&argc, argv);glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH | GLUT_STENCIL);glutInitWindowSize(800, 600);glutCreateWindow("Triangle");glutReshapeFunc(ChangeSize);glutDisplayFunc(RenderScene);GLenum err = glewInit();if (GLEW_OK != err) {fprintf(stderr, "GLEW Error: %s\n", glewGetErrorString(err));return 1;}SetupRC();glutMainLoop();return 0;
}
运行结果如下:
成功运行!!!!
《OpenGL超级宝典第五版》Windows + VS2019配置相关推荐
- vs2013 下配置OpenGL(超级宝典第五版)开发环境
系统环境: win7 64位 , VS2013_DskExp vs2013 安装路径:E:\vs_e2013 说明:这个环境主要针对 <OpenGL 超级宝典>第五版 书中测试代码所以搭 ...
- 《OpenGL超级宝典第5版》学习笔记(一)—— 第一个OpenGL程序
// GLTools库包含了一个用于操作矩阵和向量的3D数学库,并依靠GLEW获得OpenGL3.3中用来产生和渲染一些简单3D对象的函数, // 以及对视觉平截头体.相机类和变换矩阵进行管理的函数的 ...
- OpenGL超级宝典第7版环境配置
1.下载源码 地址:http://www.openglsuperbible.com/ 2.运行Cmake,编译glfw库 打开项目后,编译工程(Debug和Release下都编译). 把E:\open ...
- OpenGL超级宝典visual studio 2013开发环境配置,GLTools
https://www.cnblogs.com/wangguchangqing/p/4425745.html
- OpenGL超级宝典(第五版)环境配置
本文转自:http://blog.csdn.net/sunny_unix/article/details/8056807,感谢作者分享. OpenGL超级宝典(第五版)环境配置 Vs2008+winX ...
- OpenGL超级宝典(第五版)环境配置【转】
OpenGL超级宝典(第五版)环境配置 Vs2008+winXP 后续会整理Ubuntu 12.04LTS下的配置作者:sunny_unix 1.各种库的配置 (1)glew 下载:https:// ...
- OpenGL超级宝典(第五版) 环境配置
特别提醒:有些在word中或者其他中的代码复制到vs中会报错,原因是word中有些隐含的字符,复制到vs中就会报错:重新输一遍就可以解决问题,这里只是提醒下! 可以参阅我前面转载的一篇文章,进行比较然 ...
- OpenGL超级宝典(第五版) 环境配置(WinXp+VS2008)
转自:http://blog.csdn.net/sunny_unix/article/details/8056807 OpenGL超级宝典(第五版)环境配置 1.各种库的配置 (1)glew 下载:h ...
- [转]OpenGL超级宝典 5e 环境配置
OpenGL超级宝典(第五版)环境配置 1.各种库的配置 (1)glew 下载:https://sourceforge.net/projects/glew/files/glew/1.7.0/glew- ...
- OpenGL超级宝典 5e 环境配置
OpenGL超级宝典(第五版)环境配置 1.各种库的配置 (1)glew 下载:https://sourceforge.net/projects/glew/files/glew/1.7.0/glew- ...
最新文章
- App 组件化/模块化之路——如何封装网络请求框架
- 微信支付条码支付上线啦
- Flutter全局悬浮按钮
- 免费直播 | 特邀大厂产品战略咨询顾问,详解数据驱动产品商业化
- 树状数组求区间和(区间均值)
- SQL SERVER With语法[转]
- mac os和linux和安卓,在我的安卓手机里,安装Windows和macOS系统
- MySQL 中删除的数据都去哪儿了?
- 与gps优缺点_浅谈用于洒水车上的液位传感器和GPS模块
- 大厂十年研发经历,总结了12条安卓开发条经验
- HBase性能优化方法总结
- 微服务(接口)设计原则
- python零基础学难吗_零基础学习Python难吗?要怎么学Python才是最有效的?
- git与gitk查看某个文件的历史提交记录
- 计算机网络(HCIP、HCIE)系列文章大合集
- find 命令详解 基于文件大小,名字和权限等的查找策略以及-path和-prune的详细解释
- 洪恩软件进军网游产业 池宇峰揭密完美世界
- 基于cocos2d-lua的shader入门玩转
- 把ipad变成电脑的外接显示屏
- 十沣科技TF-Dyna不亚于国际主流商业软件 应用领域广泛
热门文章
- windows 验证tftp服务器,细说Windows tftp服务器配置
- html图书借阅源码,图书借阅管理系统代码图书管理系统源代码
- Cocos2d-x在线粒子编辑器
- html字体颜色代码表,字体颜色代码
- HttpClient之Java爬虫工具
- 汇编语言 王爽 第四版 第二章 检测点2.1
- matlab中低通滤波器程序,MATLAB低通滤波器程序
- JAVA 编程 练习题
- 统计思维:程序员数学之概率统计(第2版)PDF
- 我的世界有宠物系统服务器,我的世界:如果Minecraft加入战斗宠物系统,推荐5大最强生物!...