光照模型

把光照系统分为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

OpenGL光和材质相关推荐

  1. 从零开始学习OpenGL ES之五 – 材质

    从零开始学习OpenGL ES之五 – 材质 作者: iPhoneGeek 爱疯极客 09-Jan-10 iPhone Development 浏览次数: 411 |  评论 ↓ Tweet Shar ...

  2. OpenGL material light材质灯光的实例

    OpenGL material light材质灯光 先上图,再解答. 完整主要的源代码 源代码剖析 先上图,再解答. 完整主要的源代码 #include <glad/glad.h> #in ...

  3. OpenGL学习之材质RGB值和光源RGB值关系

     材质的颜色与光源的颜色有些不同.对于光源,R.G.B值等于R.G.B对其最大强度的百分比.若光源颜色的R.G.B值都是1.0,则是最强的白光:若值变为0.5,颜色仍为白色,但强度为原来的一半,于 ...

  4. 我的世界手机版javaui材质包_PBR基于物理的光照纹理包绘制-教你做我的世界光追材质包(理论篇)...

    此文原文链接: https://www.nvidia.com/en-us/geforce/guides/minecraft-rtx-texturing-guide/ 此文已发布到个人博客:https: ...

  5. 渲染中的光和材质的数学魔法

    MainLight:Dominant Light 间接光(Ambient).GI环境光近视: AmibentLight:Low-frequency of irradiance sphere distr ...

  6. OpenGL材质和光照(转)part2

    10.4.3 材质RGB值和光源RGB值的关系 材质的颜色与光源的颜色有些不同.对于光源,R.G.B值等于R.G.B对其最大强度的百分比.若光源颜色的R.G.B值都是1.0,则是最强的白光:若值变为0 ...

  7. 计算机图形学の三维几何变换材质光照(OpenGL)

    OpenGL三维几何变换 & 材质光照 显示效果: 源码: #define NDEBUG #ifndef GLUT_DISABLE_ATEXIT_HACK #define GLUT_DISAB ...

  8. OpenGL显示列表

    OpenGL显示列表(Display List)是由一组预先存储起来的留待以后调用的OpenGL函数语句组成的,当调用这张显示列表时就依次执行表中所列出的函数语句.前面内容所举出的例子都是瞬时给出函数 ...

  9. openGL基础光照“ADS”( Phone光照模型)(一)

    openGL系列文章目录 文章目录 openGL系列文章目录 前言 一.光照模型 二.光源 材质 ADS 光照计算 ADS 光照计算 参考 前言 光照以不同的方式影响着我们世界的外观,有时甚至是很戏剧 ...

最新文章

  1. MySQL 中的运算符
  2. 题目1256:找出两个只出现了一次的数字
  3. python常见面试题:m1={‘a‘:1,‘b‘:2,‘c‘:1} 将同样的value的key集合在list里,输出{1:[‘a‘,‘c‘],2:[‘b‘]}
  4. k8s kubebuilder系列开发 — 编写自定义资源和Reconciliation循环
  5. 卡牌大师怎么玩_用卡牌大师如何上分
  6. Elasticsearch template(待续...)
  7. FBString分析与使用
  8. 生产活动目录不宜做快照,克隆,直接备份VMDK;
  9. C++项目中编译部分C的代码
  10. 常见ActiveX控件下载大全
  11. java程序设计大赛acm_参加ACM程序设计大赛,对C的掌握程度要多深??
  12. 《老路用得上的商学课26—30》经济模式
  13. P1262 间谍网络+Trajan 缩点(有向图)
  14. 在cmd中用pip安装myqr时遇到的报错问题;
  15. 苹果手机代数_苹果一共几代?
  16. 毕达哥拉斯定理a^2 + b^2 =c^2
  17. 人人网发布QQ劝架补丁 同时兼容QQ及360
  18. CheckBox和CheckBoxList练习
  19. 网桥VLAN GROUP组
  20. OpenCV图像处理 空间域图像增强(图像锐化 1 基于拉普拉斯算子)

热门文章

  1. 自定义ComboBox控件,完美解决C#自带的ComboBox效率慢的问题
  2. C语言大数运算-乘除法篇
  3. 互联网人「摆摊」姿势大全
  4. html数字数据走势图,利用HTML5实现数据曲线走势图表代码
  5. 呆萌程序猿的恋爱奇葩说
  6. Spark Streaming架构介绍_大数据培训
  7. Python基础笔记(1-1)
  8. PHP 实现支付宝APP 支付 (服务端 + 客户端 + 异步)
  9. 阿拉斯加波弗特海,一头北极熊困在渔网险被溺亡
  10. tsconfig 配置文件各字段详解