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


最近开始学习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

在这里插入图片描述
编译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文件夹。

Alt

在下载的文件夹中,将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\System32C:\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
#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;
}

运行结果如下:

在这里插入图片描述

成功运行!!!!

  • 6
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 15
    评论
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值