OpenGL学习随笔(十)

本文详细介绍了OpenGL中的光照原理,包括光照的四个基本步骤:启用光照、启用光源、设置光源属性和设置物体材质属性。文中还深入探讨了光照计算的数学公式,并通过实例帮助读者更好地理解各种光照效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在OpenGL中要使用光照分为四个步骤,

1、启用光照
2、启用光源,光源数量受硬件限制
3、设置光源属性
4、设置物体材质属性

可见光照相关的属性比较多,要想理解各种光照效果,

了解其内部数学计算公式是必要的,在此之上辅之一些实际例子,以有更直观效果,加深理解。

从渲染输出的角度来说,光照的各种属性影响的是最后像素输出的颜色,即像素输出颜色由光照方程决定。这个方程redbook上说的还比较清楚(redbook 第4版 p147有个错误,在第5版已经修正),但总的来说还是specification更清晰一些。

看这些数学公式时的一些感触:

1、从公式上看像素颜色由三部分决定,三部分之间是加关系,内部是乘法关系。
       a.顶点的发射光颜色(glMaterialfv(GL_EMISSION, ...))
       b.全局环境光(glLightModelfv(GL_LIGHT_MODEL_AMBIENT, ...)作用于顶点(glMaterialfv(GL_AMBIENT, ...))的效果
       c.各光源(glLightfv(xxx, ...)作用于顶点(glMaterialfv(xxx, ...))的效果

2、要注意通过OpenGL API配置的光照属性是向量还是点。我自己在分析聚光效果时,一直把GL_SPOT_DIRECTION理解为一个点,结果自然是被OpenGL输出的实际效果搞晕了。而在看了specification,看到公式里的那个单位向量符号(^)之后才顿悟。
3、公式计算结果被截取到[0, 1]区间。
4、向量点乘结果为标量,表示两向量在方向上的差异程度;向量叉乘结果为向量,用于求法线。


现实中的光照远比此复杂,OpenGL在效果与性能上做了折中,但即便如此场景中的光源数量对性能仍有较直接的影响。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值