Vries的教程是我看过的最好的可编程管线OpenGL教程,没有之一,其原地址如下,https://learnopengl-cn.github.io/05%20Advanced%20Lighting/04%20Normal%20Mapping/ 关于法线贴图的详细知识了解请看原教程,本篇旨在对Vires基于visual studio平台的编程思想与c++代码做纯Qt平台的移植,代码移植顺序基本按照原教程顺序,并附加一些学习心得,重在记录自身学习之用
Tip1: 细节部分需要注意的地方很多,但移植没有特别困难的地方,直接移植着色器即可。
Tip2: 考试月,文字部分待续,请先看Vries的。
Tip3: 先传程序。
程序源代码链接:https://pan.baidu.com/s/1ap0p4QRy_GnwpjZeZm08gA 提取码:rvqa
编译环境:Qt5.9.4
编译器:Desktop Qt5.9.4 MSVC2017 64bit
IDE:QtCreator
一. 程序简介
程序有三个功能:
- 无光照正常渲染
- 应用Blinn-Phong光照
- 应用法线贴图的光照
图1 普通渲染 图2 Blinn-Phong光照
图3 应用法线贴图 图4 法线贴图
图5 正副切线计算
注意:如果要在一张纹理上应用法线贴图,则这张纹理的初始状态必须平行于XY平面,因为法线贴图默认是平行于XY平面的,否则,正副切线的计算会出现错误。从图5可以看出,当纹理平行于XZ平面上,法线应平行于y轴,故法线贴图应表现为绿色,正副切线计算正确。