glNormal3fv/GL_RESCALE_NORMAL/GL_NORMALIZE

OpenGL中,法线向量的设置影响光照计算。若初始为单位向量且仅平移、旋转,无需再规范化。启用GL_NORMALIZE,非单位长度或非均匀缩放的法向量会被规范化。glNormal用于设定当前法线,可以随时更新。
摘要由CSDN通过智能技术生成

法线向量的设置也是状态,设置顶点时候会用最近的法线向量。

glBegin(xxx);
glNormal3fv(vn0);
glVertex3fv(v0);
glNormal3fv(vn1);
glVertex3fv(v1);
glEnd();

计算光照前需要对法向量进行单位化。

1).如果一开始就是单位向量,后面只是进行平移和旋转,那么法向量不需要重新计算,也不需要重新规范化。

2).glEnable(GL_RESCALE_NORMAL) 对于开始有规范化的法向量,其中进行了均匀缩放的,那么需用GL_RESCALE_NORMAL重新规范化法向量,会比 GL_NORMALIZE更快。 如果是单位化了的法线向量(例如3ds max中导出的法线贴图),那么模型均匀缩放后,可以用GL_RESCALE_NORMAL重新规范化法向量。

3).glEnable(GL_NORMALIZE) 对于开始没有规范化的法向量,或者网格进行了非均匀缩放,那么需要重新程序员手动计算法向量的值(不要轻易非均匀缩放),且要进行GL_NORMALIZE规范化法向量。

Name

glNormal — set the current normal vector

C Specification

void glNormal3b
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值