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

上一篇文章,笔者提到了红宝书第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;(跟上一篇文章一样)

重新编译,运行成功。

###############################################################################

注意,在VS2013或更高的版本中,还得做如下操作

在#include "Angel.h"下添加

#define _CRT_SECURE_NO_WARNINGS
#pragma comment(lib, "legacy_stdio_definitions.lib")
FILE iob[] = { *stdin, *stdout, *stderr };
extern "C" {
    FILE * __cdecl _iob(void) { return iob; }
}

属性->连接器->命令行->其它选项,添加

/SAFESEH:NO

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 《交互式计算机图形学:基于OpenGL着色器自顶向下方法(第六版)》是一本经典的计算机图形学教材,被广泛应用于计算机科学、计算机工程、游戏开发等领域。这本教材以OpenGL为基础,系统地阐述了计算机图形学的基础知识和核心技术,包括坐标变换、颜色模型、光照模型、纹理映射、3D物体建模和动画等方面。 作为一本自顶向下的教材,这本书的特点是注重从高层次抽象的角度阐述图形学的基本概念和原理,同时也涵盖了OpenGL的具体实现细节和API接口,为读者提供了全面深入的学习体验。该书的难度适中,适合初学者和有一定计算机图形学基础的读者使用。 该书的最新已经更新到第六版,更新了很多最新的技术和应用案例,并且增加了大量的练习题和实践项目,帮助读者更好地理解和掌握图形学的知识和技术。该书还提供了一个完整的OpenGL代码库和工具集,方便读者学习和实践。 总的来说,《交互式计算机图形学:基于OpenGL着色器自顶向下方法(第六版)》是一本权威、全面、易懂的计算机图形学教材,值得各个计算机领域的学习者和爱好者使用。 ### 回答2: 《交互式计算机图形学:基于OpenGL着色器自顶向下方法(第六版) pdf本》是一本介绍OpenGL图形编程的经典教材,其自顶向下的编程方法非常适合初学者学习。本书由Edward Angel和Dave Shreiner合著,多年来一直被广泛使用。对于图形学爱好者、OpenGL初学者或者计算机图形学的研究者来说,该书都是一本非常好的参考资料。 本书主要介绍了OpenGL的基础知识和图形渲染的过程,同时还介绍了几个实战项目以及在这些项目中使用的OpenGL技术。其中,作者详细介绍了OpenGL着色器编程、光照、纹理映射以及立体图形渲染等内容,让初学者了解这些重要的概念和技术的基本原理和使用方法。 本书中的每个章节都包含了丰富的范例和代码,可以帮助读者更加理解OpenGL的应用场景和特性。同时,书中介绍了许多OpenGL扩展库和第三方工具,读者也可以从中了解到如何提高自己的OpenGL编程技能和效率。 总之,这本教材对于学习OpenGL的初学者来说是一本非常好的书,通过学习本书,读者可以深入了解计算机图形学的基本原理和OpenGL的使用方法,从而为进一步深入学习图形学奠定了坚实的基础。 ### 回答3: 《交互式计算机图形学:基于OpenGL着色器自顶向下方法(第六版)》是计算机图形学领域中的经典教材之一。本书作者Edward Angel针对当前计算机图形学技术的最新发展,对前五的内容进行了全面的修订与更新。本书涵盖了图形学的各个重要方面,包括基本图形学概述、OpenGL基础知识、几何变换、着色器编程、光照与材质、纹理映射、三维模型的构建、建模及渲染等。 本书采用自顶向下的教学方法,使读者可以逐层深入地了解计算机图形学的核心知识和技术。书中配有大量的代码示例和实验指导,有助于读者熟练掌握OpenGL编程技术。此外,本书还介绍了一些新兴的图形学技术,如GPU编程、着色器语言GLSL等,对这些新技术进行了详细的解释和演示。 本书不仅适合计算机图形学专业的学生,也适合从事计算机图形学相关工作的专业人士、教育者及爱好者使用。它是学习计算机图形学必备的参考资料之一,也是开发计算机图形学应用程序的重要工具书。读者可通过PDF本来获取本书的电子本,方便随时阅读和学习。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值