OpenGL光和材质

光照模型

把光照系统分为3部分 光源、材质、光照环境
将光线与对性之间的作用分为3类

  1. 镜面反射表面
  2. 漫反射表面
  3. 半透明表面

法线向量

这段话很重要 根据光的反射定律,由光的入射方向决定光的反射方向,对于指定的物体,指定了光源,即可计算出光的反射方向,但是不会根据多边形的顶点来计算出这些法线,OpenGL中,为了实现光照效果,我们需要在代码中为每一个定点赋法线

指定法线

类似于指定颜色,指定一个颜色值,也可以指定一个法线值,所有的定点都是用这个法线向量

glNormal(GLfloat x,GLfloat y,GLfloat z);   //指定法线

光源

opengl至少支持8个光源

glEnable(GL_LIGHT0);   //0号光源
glLight(参数);   //三个参数,第一个参数指明是哪个光源、第二个参数指明设置该光源的什么属性,第三个参数设置该属性的属性值

GL_AMBIENT、GL_DIFFUSE、GL_SPECULAR这三个参数表示了光源所发出的光的反射特性
GL_POSITION表示光源所在的位置
GL_SPOT_DIRECTION、GL_SPOT_EXPONENT、GL_SPOT_CUTOFF表示将光源作为聚光灯使用,
GL_CONSTANT_ATTENUATION、GL_LINEAE_ATTENUATION、GL_QUANRATIC_ATTENUATION这三个参数表示了官员所发出的光线的直线传播特性

控制材质

glMateria();  //三个参数,第一个指明哪一面的属性、第二个设置什么属性、第三个设置该属性的值

GL_BACK、GL_FRONT_AND_BACK表示正面或者反面
GL_AMBIENT、GL_DIFFUSE、GL_SPECULAR与光源的参数类似
GL_SHININESS 镜面系数
GL_EMISSION该材质微微向外发射光线,微弱不影响其他物体
GL_COLOR_INDEXS索引模式下使用

选择光照模型

glLightMode(); //两个参数,第一个表示要设置的项目,第二个参数表示要设置成的值
GL_LIGHT_MODEL_AMBIENT表示全局环境光线强度,由四个值组成
GL_LIGHT_MODEL_LOCAL_VIEWER表示是否在近处观看,若是,则设置GL_TRUE,否则即GL_FALSE
GL_LIGHT_MODEL_COLOR_CONTROL表示颜色计算方式,如果设置GL_SINGLE_COLOR,表示按通常顺序操作,先计算光照,再计算纹理;如果设置为GL_SEPARATE_SPECULAR_COLOR表示将GL_SPECULAR属性分离出来,先计算光照的其他部分,待纹理操作完成后再计算GL_SPECULAR。后者可以使画面效果更为逼真
GL_LIGHT_MODEL_TWO_SIDE 表示是否执行双面光照计算,如果设置为GL_TRUE 表示不仅将根据法线向量计算正面的光照,也将法线向量翻转并计算背面的光照。

glEnable(GL_LIGHTING);   //打开光照处理功能
glDisable(GL_LIGHTING);   //关闭处理功能

以上为小编参考百度文库总结的,需要查看详细内容的小编附上链接,
希望没有触及版权问题,有的话告诉一下小编哈,刚入门多有不懂
https://wenku.baidu.com/view/8096a02bcfc789eb172dc892.htm

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值