学习opengl(一)opengl 超级宝典 第5版 vs2013+opengl配置

学习资料:opengl 超级宝典 第5版


环境:vs2013


准备:1、freeglut库     http://freeglut.sourceforge.net/index.php#download

freeglut用来替代glut的,虽然现在好像glfw更好,但是因为跟着书来所以还是先使用freeglut学习一下

http://www.learnopengl.com/ 这个网站教程使用的是glfw

下载好freeglut的windows下msvc编译好的版本,解压缩

学习opengl(一)opengl 超级宝典 第5版 vs2013+opengl配置_第1张图片

bin内是freeglut.dll文件,将64位的dll放入Syswow中,将32位的放入system32中

include的是几个头文件,放入vs的include文件的gl文件夹中,我的目录在C:\Program Files (x86)\Windows Kits\8.1\Include\um\gl下,不同系统可能不同,但是在vs中可以看

学习opengl(一)opengl 超级宝典 第5版 vs2013+opengl配置_第2张图片

lib中的文件也同样放在vs的lib文件夹下,我的目录在C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um,按照64位和32位分好文件夹就行。

学习opengl(一)opengl 超级宝典 第5版 vs2013+opengl配置_第3张图片


接下来在vs2013中创建项目,然后配置工程的属性,在链接器-------输入-------附加依赖项   中加入几个lib

学习opengl(一)opengl 超级宝典 第5版 vs2013+opengl配置_第4张图片

opengl32.lib glu32.lib freeglut.lib 都在刚才的lib文件夹中了,gltools.lib是接下来要搞的lib

这样glut的库是完成了,但是在超级宝典中还需要一个gltools的库,先需要找到超级宝典第5版的源代码,我从csdn下载上找到了这个源码

http://download.csdn.net/detail/zhanyong168/4863389

http://download.csdn.net/detail/zhanyong168/4889777

两部分,需要都下载下来,解压后可以看到:

学习opengl(一)opengl 超级宝典 第5版 vs2013+opengl配置_第5张图片

这里已经包含freeglut了,不过是2.6版本,的现在最新的已经是3.0版本了。

这里的src文件夹里中gltools的源代码,而VS2008文件夹里是编译好的gltools的lib。

这里要使用gltools有两种方法,一是笨一点的将gltools的头文件和源文件都导入到我们的项目中去,直接编译是ok的,就是有点笨重。

第二种方法就是将头文件和库文件加入我们的工程就行:

首先在我们的工程-----属性-----VC++目录-------包含目录中将Src中的头文件的目录加进去,这样,就可以使用gltools.h 和glshadermanager.h等头文件了。。

然后再将VS2008中的lib加到VS的lib目录中或者在属性------VC++目录-------库目录中将lib的目录加进去,然后再链接器------输入--------附加依赖项中将gltools.lib加进去。但是这里可能因为lib是VS2008编译的原因,我这里编译的时候好像不能正常的连接到库中,所以我用vs2013重新编译了以下gltool的源文件,在VS2008的目录下可以看见VS的工程,用VS2013打开后,将头文件什么的路径先改一下,然后编译,报了个安全什么什么的错误,可以在属性-----C/C++-------预处理器--------预处理器定义中加入_CRT_SECURE_NO_WARNINGS,这样就可以成功编译了,编译的结果会输出个新的gltools.lib,将这个lib的路径加入,就成功的配置好了opengl的环境。



按照书上的源码:

#include 
#include 
#include // ==freeglut.h

GLBatch triangleBatch;
GLShaderManager shaderManager;
void ChangeSize(int w, int h);
void RenderScene(void);
void SetupRC();

int main(int argc, char* argv[])
{
	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;
}

void ChangeSize(int w, int h)
{
	glViewport(0, 0, w, h);
}

void RenderScene(void)
{
	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();
	glutSwapBuffers();
}

void SetupRC()
{
	glClearColor(0.0f, 0.0f, 1.0f, 1.0f);
	shaderManager.InitializeStockShaders();
	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();
}

运行后:学习opengl(一)opengl 超级宝典 第5版 vs2013+opengl配置_第6张图片



大功告成,搞了半天结果也就类似弄了个helloworld一样的东西,这环境真的有点难配置ORZ

你可能感兴趣的:(opengl和图形学)