OpenGL简约笔记:用C#学面向对象的OpenGL(用少的配置学复杂的OpenGL)
定 价:69 元
- 作者:祝威
- 出版时间:2019/4/1
- ISBN:9787512427358
- 出 版 社:北京航空航天大学出版社
- 中图法分类:TP391.412
- 页码:
- 纸张:胶版纸
- 版次:
- 开本:16开
本书由浅入深地讲解OpenGL的概念和用法,通过一个个简单的实例使读者对各个知识点一目了然。书中包括渲染管道、着色器、缓存、纹理、矩阵、光照模型、阴影、帧缓存、拾取、文字、用户界面、体渲染、透明和通用计算等内容。读者掌握这些之后,就可以自由地设计和编写中等规模的三维图形程序,并且能够渲染百万数量级顶点的模型。本书相关内容将在Github上持续更新,读者可参阅更多资料。
本书适用于熟悉C、C 、C#或Java等任何面向对象编程语言的读者,本书会对这些相关的基础内容进行必要的介绍。读者只需认真实践,完全可以掌握本书内容。
大部分讲解OpenGL的书都是用C\\C 编写代码的,但本书全部使用C#编写OpenGL程序。这是因为,与C\\C 等语言相比,C#需要的配置*少,运行环境*简单,调试环境*方便,*适合用来学习复杂的OpenGL。本书所有代码均可下载,方便读者学习。
本书将以C#为工具介绍OpenGL的相关知识。如果读者不太了解C#或面向对象程序设计,可参考本书最后的附录。
本书由浅入深地讲解OpenGL的概念和用法,通过一个个简单的实例让读者一目了然地认识OpenGL的各个知识点。本书包括渲染管道(Pipeline)、着色器(Shader)、缓存(Buffer)、纹理(Texture)、矩阵(Matrix)、光照模型(Lighting)、阴影(Shadow)、帧缓存(Framebuffer)、拾取(Picking)、文字(Text)、用户界面(UI)、体渲染(Volume Rendering)、透明(Transparency)和通用计算(Compute Shader)等内容。读者掌握这些内容后,就可以自由设计、编写中等规模的三维图形程序了,并且能够渲染百万数量级顶点的模型。
本书的网络资料包含了书中所有的完整代码,读者可以从北航出版社网站(www.buaapress.com.cn)的下载专区的相关页面获取。另外,读者也可以在CSharpGL托管页面(https://github.com/bitzhuwei/CSharpGL)找到本书的全部代码。如果读者对本书内容有任何疑问、指错或想进一步深入讨论,还可以在托管页面进行提问、讨论。本书最后的附录也提供了简单的Github入门教程。
感谢北京航空航天大学出版社提供的机会与平台,感谢家人以及业界的朋友在本书编写的过程中给予的支持和帮助,这里还要特别感谢编辑剧艳婕在本书出版的过程中提出的宝贵意见。希望本书能够帮助读者打开计算机图形学的大门。
作者毕业于北京理工大学软件工程专业,热爱编程,潜心研究OpenGL和图形学多年,自行设计编写了CSharpGL开源库。期望本书能将作者的感悟传播给更多的同道中人。
第1章Hello OpenGL1
1.1从这里开始认识1
1.2OpenGL是什么1
1.3如何使用OpenGL2
1.4Hello
OpenGL6
1.5辅助工具22
1.6不含位置属性的顶点29
1.7总结31
1.8问题31
第2章纹理33
2.1二维纹理33
2.2其他类型的纹理40
2.3多个纹理43
2.4多个渲染方法46
2.5总结48
2.6问题48
第3章空间和矩阵50
3.1如何理解矩阵50
3.2空间和矩阵的关系52
3.3Pipeline中的空间60
3.4实例化渲染61
3.5总结63
3.6问题63
第4章几何着色器64
4.1介绍64
4.2示例:渲染法线66
4.3总结69
4.4问题69
第5章光照70
5.1BlinnPhong光照模型70
5.2光源70
5.3反射光70
5.4BlinnPhong算法75
5.5同时使用多个光源77
5.6阴影80
5.7凹凸映射80
5.8噪声84
5.9总结88
5.10问题88
第6章帧缓存89
6.1名词术语90
6.2附着点90
6.3将Texture附着到Framebuffer91
6.4附着Renderbuffer95
6.5示例:Render to Texture95
6.6总结99
6.7问题100
第7章阴影101
7.2Shadow
Volume110
7.3模板缓存的初始化122
7.4多光源下的阴影123
7.5总结124
7.6问题124
第8章拾取125
8.1基础125
8.2在DrawArraysCmd命令下的拾取140
8.3在DrawElementsCmd命令下的拾取146
8.4拖拽顶点157
8.5总结162
8.6问题163
第9章文字164
9.1固定尺寸且始终面向Camera164
9.2字形信息169
9.3三维世界的文字174
9.4总结177
9.5问题177
第10章简单的用户界面178
10.1指定区域的贴图178
10.2控件的布局机制179
10.3控件的事件机制188
10.4CtrlImage193
10.5CtrlLabel196
10.6CtrlButton200
10.7总结202
10.8问题202
第11章轨迹球203
11.1轨迹球203
11.2使用204
11.3设计205
11.4四元数209
11.5总结210
11.6问题210
第12章体渲染211
12.1什么是体渲染211
12.2静态切片212
12.3动态切片215
12.4Raycasting217
12.5总结223
12.6问题224
第13章半透明渲染225
13.1跳跃着色法225
13.2与顺序无关的半透明渲染226
13.3Front
to Back Peeling235
13.4总结240
13.5问题240
第14章Transform Feedback Object241
14.1Transform
Feedback如何工作241
14.2使用Transform Feedback Object244
14.3轮流更新245
14.4粒子系统251
14.5总结254
14.6问题254
第15章Compute Shader255
15.1Compute
Shader简介255
15.2图像处理257
15.3粒子系统261
15.4总结262
15.5问题263
附录264
附录AGithub入门264
附录BC#和面向对象入门277
附录C解析简单的wavefront(*.obj)文件格式298
附录D自制体数据的2种方法302