《OpenGL超级宝典第五版》Windows + VS2019配置

《OpenGL超级宝典第五版》Windows + VS2019配置

  • 一、准备相关资源文件
  • 二、编译文件
  • 二、glew、 glut的准备工作
  • 四、编译gltools
  • 五、配置环境
  • 六、测试

最近开始学习OpenGL,在网上搜索了相关的学习资料,选择了《OpenGL超级宝典第五版》。本来抱着很大的热情去学习这本书,但在第一步环境配置就遇见了困难。由于书上对这部分的介绍较少,自己利用从网上下载的各种头文件以及编译好的链接库进行配置会出现各种版本不兼容的问题。虽然网上的教程很多,但真正能解决问题并不多。经过一段时间的摸索,最后在 VS2019+windows环境下成功进行了配置。废话不多说,下面直接开始介绍具体步骤:

一、准备相关资源文件

资源文件包括glutfreeglutglewGLTools,这些文件可以去官网下载最新版本,也可以从下面的链接中得到。
下载地址(未编译的文件):https://pan.baidu.com/s/1wnV5tmInJnBVlxWvhMIZHQ 密码:08zm
下载地址(VS2019编译过的文件):https://pan.baidu.com/s/1ybwvFLLN-8oV0sOwwwmfww 密码:ocm2

二、编译文件

为什么要编译文件,如果下载他人编译过的文件直接使用,由于编译的平台不一样,程序运行时会出现版本不兼容的问题。所以为了更好地使下载的库文件与自己的VS版本兼容,需要我们对源码进行重新编译。

1.若下载VS2019编译后的文件可以直接跳到环境配置

2.未编译资源文件中需要自己编译的有freeglut、与GLTools

《OpenGL超级宝典第五版》Windows + VS2019配置_第1张图片
编译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文件夹(用来存放编译结果)

《OpenGL超级宝典第五版》Windows + VS2019配置_第2张图片

Cmake中分别选择freeglut文件夹以及build文件夹,然后点击configure

《OpenGL超级宝典第五版》Windows + VS2019配置_第3张图片

然后分别选择VS2019(编译平台,根据自己需要选择)和WIN32(我选择了32位,下面的也是),并点击finish

《OpenGL超级宝典第五版》Windows + VS2019配置_第4张图片

点击Generate

《OpenGL超级宝典第五版》Windows + VS2019配置_第5张图片

最后点击Open Project,打开VS进行编译

在这里插入图片描述

若无法自动打开VS可在build文件夹中点击freeglut.sln打开VS

《OpenGL超级宝典第五版》Windows + VS2019配置_第6张图片

然后选择Debug以及WIN32,并在生成中点击生成解决方案,等待Debug编译完成。

《OpenGL超级宝典第五版》Windows + VS2019配置_第7张图片
《OpenGL超级宝典第五版》Windows + VS2019配置_第8张图片
《OpenGL超级宝典第五版》Windows + VS2019配置_第9张图片

同样的选择Release、Win32,并在生成中点击生成解决方案,等待Release编译完成。

《OpenGL超级宝典第五版》Windows + VS2019配置_第10张图片
《OpenGL超级宝典第五版》Windows + VS2019配置_第11张图片

此时我们已经完成了freeglut的编译工作,接下来需要把**.h文件以及.lib文件找出来,首先新建一个文件夹gltools**(最后的环境配置需要用到),并在gltools文件夹中新建include文件夹、lib文件夹以及dll三个文件夹,最后还需要在include文件夹中新建一个GL文件夹。

《OpenGL超级宝典第五版》Windows + VS2019配置_第12张图片

在下载的文件夹中,将freeglut-3.0.0 -> include -> GL中的5个头文件(.h)复制到gltools-> include -> GL

《OpenGL超级宝典第五版》Windows + VS2019配置_第13张图片

打开编译完成的文件夹build,然后进行以下操作:
build-> lib->Debug中的 freeglut_staticd.lib、freeglutd.lib 复制到 gltools-> lib build-> lib-> Release
freeglut_static.lib、freeglut.lib复制到gltools-> lib

《OpenGL超级宝典第五版》Windows + VS2019配置_第14张图片

build->bin->Debug中的freeglutd.dll复制到gltools->dll
build->bin->Release中的freeglut.dll复制到gltools->dll

《OpenGL超级宝典第五版》Windows + VS2019配置_第15张图片

二、glew、 glut的准备工作

这个两个库文件并不要我们单独编译,直接用就可以了。同样的,需要把用到的文件复制出来,具体如下:
glew

glew-2.1.0 -> include -> GL中的四个头文件复制到gltools-> include -> GL

《OpenGL超级宝典第五版》Windows + VS2019配置_第16张图片

glew-2.1.0 ->lib -> Release -> Win32 中的两个lib文件复制到gltools-> lib

《OpenGL超级宝典第五版》Windows + VS2019配置_第17张图片

glew-2.1.0 -> bin -> Release -> Win32中的glew32.dll复制到gltools-> dll

《OpenGL超级宝典第五版》Windows + VS2019配置_第18张图片
Glut:

打开glut文件夹,进行如如下操作:Glut.lib、glut32.lib复制到gltools-> lib

《OpenGL超级宝典第五版》Windows + VS2019配置_第19张图片

Glut.dll、glut32.dll复制到gltools-> dll

《OpenGL超级宝典第五版》Windows + VS2019配置_第20张图片

四、编译gltools

编译gltools需要前面的准备工作都已完成。首先将下载的GLTools -> include 中的11个头文件全部复制到gltools -> include (不是GL文件夹)

《OpenGL超级宝典第五版》Windows + VS2019配置_第21张图片

打开VS创建新项目-> windows 桌面向导,设置项目名字为gltools(不要随意起名字,后面需要生成一个gtloos.lib文件),位置可以随便找一个,尽量放在下载的资源包GLtools->build文件夹中,方便后续查找。

《OpenGL超级宝典第五版》Windows + VS2019配置_第22张图片

应用类型选择静态库,其他选项选为空项目,如下图:

《OpenGL超级宝典第五版》Windows + VS2019配置_第23张图片

然后添加头文件以及源文件(头文件 -> 添加 -> 现有项

《OpenGL超级宝典第五版》Windows + VS2019配置_第24张图片

头文件:(注意路径!!!

《OpenGL超级宝典第五版》Windows + VS2019配置_第25张图片

同样的方法添加源文件:(源文件 -> 添加 -> 现有项

《OpenGL超级宝典第五版》Windows + VS2019配置_第26张图片

最后工程的添加结果如下:

《OpenGL超级宝典第五版》Windows + VS2019配置_第27张图片

选中gltools右键-> 属性 进行如下设置:(注意这次的include,是前面新建的文件夹),然后点击应用、确认。

《OpenGL超级宝典第五版》Windows + VS2019配置_第28张图片
在这里插入图片描述

最后,选中gltools右键 -> 生成(或者点击窗口上面的生成->生成解决方案)

在这里插入图片描述

根据生成的路径找到gltools.lib,并将其复制到gltools ->lib(新建的文件夹),到了这一步就完成了gltools的编译。

五、配置环境

首先,新建一个工程文件夹用来存放之后的代码(位置自己随便定义)。然后,打开VS新建一个控制台应用(创建新项目-> windows 桌面向导 ->应用类型选择控制台应用,其他默认就可以)。

《OpenGL超级宝典第五版》Windows + VS2019配置_第29张图片

选中项目名字,右键-> 属性 进入配置界面进行如下设置,将自己之前新建文件夹的include文件夹(头文件)以及lib文件夹(链接库)分别添加进去。

《OpenGL超级宝典第五版》Windows + VS2019配置_第30张图片

链接器-> 输入 ->附加依赖项opengl32.lib、gltools.lib、glew32s.lib添加进去,如下图:

《OpenGL超级宝典第五版》Windows + VS2019配置_第31张图片
《OpenGL超级宝典第五版》Windows + VS2019配置_第32张图片

将之前新建文件夹gltools-> dll中的5个文件,粘贴到C:\Windows\System32C:\Windows\SysWOW64,至此,完成所有环境配置。

六、测试

将以下代码复制到工程中cpp文件中。

// Triangle.cpp
// Our first OpenGL program that will just draw a triangle on the screen.

#include             // OpenGL toolkit
#include     // Shader Manager Class

#ifdef __APPLE__
#include           // OS X version of GLUT
#else
#define FREEGLUT_STATIC
#include             // Windows FreeGlut equivalent
#endif

GLBatch	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 background
	glClearColor(0.0f, 0.0f, 1.0f, 1.0f);

	shaderManager.InitializeStockShaders();

	// Load up a triangle
	GLfloat 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 color
	glClear(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 buffer
	glutSwapBuffers();
}

// 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配置_第33张图片

成功运行!!!!

你可能感兴趣的:(《OpenGL超级宝典第五版》Windows + VS2019配置)