基于Qt的OpenGL编程(3.x以上GLSL可编程管线版)---(二十七)高级光照Blinn-Phong

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在视角的对面区域都是黑色的,这是因为 光源关于片段法线的反向量 与视线夹角的余弦值是负的。

猜你喜欢

转载自blog.csdn.net/z136411501/article/details/85338925