您的位置:首页 > 运维架构

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

2016-09-30 14:31 483 查看
学习资料:opengl 超级宝典 第5版

环境:vs2013

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

freeglut用来替代glut的,虽然现在好像glfw更好,但是因为跟着书来所以还是先使用freeglut学习一下
http://www.learnopengl.com/ 这个网站教程使用的是glfw
下载好freeglut的windows下msvc编译好的版本,解压缩



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



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



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



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



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
两部分,需要都下载下来,解压后可以看到:



这里已经包含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 <GLTools.h>
#include <GLShaderManager.h>
#include <gl/glut.h>// ==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();
}


运行后:


大功告成,搞了半天结果也就类似弄了个helloworld一样的东西,这环境真的有点难配置ORZ
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  opengl 图形学 VS2013 fr