码迷,mamicode.com
首页 > 其他好文 > 详细

《交互式计算机图形学 基於OpenGL着色器的自顶向下方法(第6版) 》代码运行问题及其解决

时间:2016-04-29 16:03:26      阅读:190      评论:0      收藏:0      [点我收藏+]

标签:

上一篇文章,笔者提到了红宝书第8版的代码编译运行问题,想必大家已经知道我看过红宝书了。


然而,笔者竟然看不懂技术分享,这是因为笔者并不知道OpenGL的历史。原来有古代OpenGL和现代OpenGL之分,古代OpenGL使用固定功能管线,现在已经被废弃(尽管还能用),而现代使用可编程管线。


由于笔者在网上搜索一通,见到怎么OpenGL的代码有两种风格,到了现在才搞懂。原来OpenGL在第8版之前都是讲的固定功能管线,到了第8版立即转成了可编程管线。然而红宝书已经认定了你有一定的计算机图形学基础,因此介绍的内容都比较高深,不从基础讲起,导致即使有一定编程和几何基础的笔者也读不懂红宝书。


因此笔者就买了这本《交互式计算机图形学 基於OpenGL着色器的自顶向下方法(第6版) 》来看了,感觉写的非常不错,这本书第6版还新增了一个作者,这个作者正是红宝书的作者Dave。看着跟红宝书简直是完美融合,并且也详尽地解释了OpenGL里面的各个基本术语,这个在红宝书里几乎是一笔带过的。


然而,这本书的代码确实有一定问题的,即使笔者先前已经成功编译过红宝书的代码,然而编译这本书的代码还是折腾了几个小时,下面讲解一下。


先从https://www.cs.unm.edu/~angel/BOOK/INTERACTIVE_COMPUTER_GRAPHICS/SIXTH_EDITION/ 下载该书的代码


笔者仅下载了一部分代码,如图所示

技术分享


然后新建控制台空项目,笔者将项目命名为e1,如图所示


技术分享


然后把所需源文件和着色器文件添加进来,并设置编译模式为release,如图所示

技术分享


然后添加附加包含文件

技术分享


然后再从https://www.cs.unm.edu/~angel/BOOK/INTERACTIVE_COMPUTER_GRAPHICS/SIXTH_EDITION/  下载库文件,并将windows文件夹名字改为lib,如图所示

技术分享


添加附加库目录


技术分享


编译,报错,无法打开文件“freeglut.lib”

技术分享


然后把libfreeglut.a改名为freeglut.lib,如图所示

技术分享


编译,扔报错,如图所示

技术分享


无法解析的外部符号,既有glut的函数又有glew的函数


网上百度了一下,前面带有_imp_的都是静态库,因此笔者在example1.cpp中添加了两个宏,如图所示

技术分享


编译,仍报错,无法打开文件“freeglut_static.lib”

技术分享


然后笔者复制freeglut.lib,再改名为freeglut_static.lib,如图所示

技术分享


编译,仍然报错,但这次仅有glew的问题

技术分享


修改附加依赖项,添加libglew32.a库,如图所示


技术分享


编译,成功


技术分享


把着色器文件放入工程文件所在目录下

技术分享


编译,发生崩溃,在glewInit()前加入glewExperimental= GL_TRUE;(跟上一篇文章一样)


运行成功。

技术分享



《交互式计算机图形学 基於OpenGL着色器的自顶向下方法(第6版) 》代码运行问题及其解决

标签:

原文地址:http://blog.csdn.net/outtt/article/details/51277481

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!