Vries的教程是我看过的最好的可编程管线OpenGL教程,没有之一,其原地址如下,https://learnopengl-cn.github.io/05%20Advanced%20Lighting/01%20Advanced%20Lighting/ 关于Blinn-Phong的详细知识了解请看原教程,本篇旨在对Vires基于visual studio平台的编程思想与c++代码做纯Qt平台的移植,代码移植顺序基本按照原教程顺序,并附加一些学习心得,重在记录自身学习之用
Tip1: 移植没有特别需要注意的地方,直接移植着色器即可。
Tip2: 考试月,文字部分待续,请先看Vries的。
Tip3: 先传程序。
程序源代码链接:链接:https://pan.baidu.com/s/16cgjpLcJsj75A49PkjCjhA 提取码:pc6m
编译环境:Qt5.9.4
编译器:Desktop Qt5.9.4 MSVC2017 64bit
IDE:QtCreator
一. 程序简介
支持两种光照模型,并将Ambient,Diffuse,Specular分离了出来,方便观察。
pShininess为Phong光照模型的镜面反射系数
bShininess为Blinn-Phong光照模型的镜面反射系数
图1 Phong 图2 Blinn-Phong
Blinn-Phong本质上就是修改了Phong的specular镜面光部分
比如,当shininess镜面反射系数都是1时,如下图所示,只关注specular镜面反射部分,很明显能看出Blinn-Phong的照射范围更大,而Phong在视角的对面区域都是黑色的,这是因为 光源关于片段法线的反向量 与视线夹角的余弦值是负的。