位置: 编程技术 - 正文

OpenGL学习10-OpenGL光照(opengl详解)

编辑:rootadmin

推荐整理分享OpenGL学习10-OpenGL光照(opengl详解),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:opengl使用教程,opengl opengl,opengl使用教程,opengl入门教程(精),opengl详解,opengl learn,opengl基础教程,opengl教程48讲,内容如对您有帮助,希望把文章链接给更多的朋友!

在OpenGL模型中,除非一个物体自己会发光,否则它将受到3中不同的光照射:环境光(ambient)、散射光(diffuse)和镜面光(specular)。现实世界中,当然不存在这样的光,但是,作为光抽象,这三种类型的光允许我们模拟和控制光照在物体表面上所产生的主要类型的效果。

1、环境光

环境光并不是来自任何特定的方向。它来自某个光源,但光线确实在房间或场景中四处反射,没有方向可言。由环境所照射的物体所在所有方向的便面都是均匀照亮的。之前的例子都可以看作是被一种环境光所照射的,因为物体总是可见并均匀着色,与他们的旋转或观察角度无关。图1显示一个受环境光照射的物体。我们可以把环境光看成一种全局因素,由所有光源共同产生。在OpenGL中光照成员实际上模拟了环境中源自所有光源的散光。

图1,来自《OpenGL超级宝典》

2、散射光

OpenGL的散射光具有方向性,来自于一个特定的方向,他根据入射光线的角度在表面上均匀的反射开来。因此,如果光线直接指向物体表面,它看上去就更亮一些。如果光线是从一个较大的角度照射到物体表面上,他看上去就显得暗一些。散射光的的例子包括台灯、蜡烛以及正午时照射在窗户一侧的白光。从本质上说,正是光源的散射成分长生了被光照物体表面的着色。图2中,这个物体是被一种散射光源所照射。

图2,来自《OpenGL超级宝典》

3、镜面光

和散射光一样,镜面光也具有很强的方向性,但它的反射角很锐利,只沿一个特定的方向反射。高强度的镜面光(实际上是现实世界的材料属性)趋向于在它所照射的表面形成一个亮点,称为镜面亮点。由于它的亮度方向性本质,取决于观察者的位置,镜面光甚至可能看不到。聚光灯和太阳都能产生很强的镜面光。图3为镜面光例子。

图3,来自《OpenGL超级宝典》

4、混合光

没有一种光源是纯粹由上面所述的任何一种类型光组成。事实上,光源是由各种强度的不同类型的光组成的。例如,实验室中的红色激光几乎是由纯粹的红色镜面光组成的,当它照射物体时,将会产生一个强烈的亮点。但是,烟或则灰尘会导致激光束有所发散,产生非常小的环境光成分,使房间的其他物体染上一层微微的红色。如果光束极为耀&#;的照射到一个表面,将会产生非常小的散射成分,可以在它所照亮的表面看到。图4为上述场景中每种光成分。

OpenGL学习10-OpenGL光照(opengl详解)

图4,来自《OpenGL超级宝典》

5、添加光照

a)启用光照

告诉OpenGL使用光照计算,可以调用glEnable函数,并用GL_LIGHTING作为参数;

glEnable(GL_LIGHTING);

这个调用告诉OpenGL在确定场景中每个顶点的颜色时使用材料属性和光照参照。但是如果没有指定温和材料属性和光照参数,物体将会保持为黑暗的无光状态。

b)设置背景发射光

OpenGL提供了一个全局光源,它至发射环境光(背景光)。这种全局环境光是一种零成本的在OpenGL的光照计算的结果上添加一个偏移量的方式。这种光很有用,例如,它可以照明没有被光源直接照射的物体背面,如果光照场景看上去太暗,可以调节这种全局环境光。下面代码为设置背景环境光:

GLfloat ambientLight[] = {1.0f, 1.0f, 1.0f, 1.0f};

glLightModelfv(GL_LIGHT_MODEL_AMBIENT, ambientLight);

下面为光照的例子:

运行程序,结果如图5;

图4

计算机中丢失OPENGL.dll 开发OpenGL项目时,在VS开发环境下可能会出现如图所示的错误。在c:windowssystem和SysWow文件夹下存在opengl.dll,此时,所写程序能够正常编译,但是,

关于opencv与OpenGL 最近在研究AR方面,同时要用到OpenGL和opencv,关于这两个方面的详细介绍,可以看这位大神的博客:这里。同时官网上也有详细的介绍。OpenGL官方网站:

Win8+VS 配置OpenGL SuperBible5 环境 (1)glew:版本:1.7.0-win下载地址:

标签: opengl详解

本文链接地址:https://www.jiuchutong.com/biancheng/373240.html 转载请保留说明!

上一篇:cocos2d-x源码分析之Director::drawScene()(cocos2dx运行原理)

下一篇:计算机中丢失OPENGL.dll(计算机中丢失opencv_core249.dll)

  • 补缴税款需要去税务大厅吗
  • 税务师考试科目安排
  • 所得税申报时成本数据填错怎么办
  • 所得税申报更正申报怎么报?
  • 广州二手房免增值税
  • 存货转固定资产的时点
  • 权责发生制和收付实现制是会计基础吗
  • 银行收取代发工资合法吗
  • 股东变动及股东情况章节
  • 企业承担个人所得税的规定
  • 从公司账户取现金
  • 股权转让涉及的印花税
  • 什么时候计入其他综合收益什么时候计入投资收益
  • 计提汇算清缴涉及到不是当年费用怎么记账
  • 财务杠杆系数简单计算方法
  • 收到投资者投入设备一台,价值100000元
  • 纳税人可以是自然人吗
  • 员工个税需要计提吗现在
  • 声卡无声音怎么回事
  • windos10不显示桌面
  • 资产负债表里的存货怎么算
  • 筹备期废品回收怎么做账
  • 代垫费用的进项税怎么算
  • 若依框架登录后跳转到指定页面
  • vue 高德地图 窗体
  • mssearch.exe - mssearch是什么进程 有什么用
  • 苹果发布macOS更新
  • scvc8.exe是什么
  • node.txt
  • php 抓取别的网站的内容
  • php功能模块
  • 查看redis节点
  • 2021高频前端面试题汇总
  • AIGC之GPT-4:GPT-4的简介(核心原理/意义/亮点/技术点/缺点/使用建议)、使用方法、案例应用(计算能力/代码能力/看图能力等)之详细攻略
  • 复制/root/install.log到/tmp
  • 个体工商户有固话吗
  • 公司发放给员工的出差补助需要合并计算个税吗
  • 所有者权益总计是什么
  • php网站访问量大怎么优化
  • 企业编制现金流量表的主要目的是什么
  • 机器维修费属于什么会计科目
  • 个人所得税隔月交么
  • 购买仓库计入什么科目
  • 现金流量表季度期初现金余额怎么填
  • 当月没生产有生产费用怎么结转
  • 应收账款如何做平
  • 押金退还需要多久
  • 中小企业的资产负债率均值是多少
  • 航天金穗服务费可以抵扣吗
  • 行政单位往来款规定
  • 跨年度的银行未入账如何处理
  • 模具报价成本核算方法
  • 超市小票能作为证据用吗
  • 一般纳税人购进税控设备如何抵扣
  • 支出未取得发票
  • 申请享受免税资金的条件
  • 母公司及子公司增资
  • 新医院会计制度什么时候实施
  • 员工伤残补助会计分录
  • 会计账簿怎么填写模式
  • 电焊工劳保用品有哪些
  • 会计中结转属于什么科目
  • 营业外支出明细科目有哪些
  • 用SQL脚本读取Excel中的sheet数量及名称的方法代码
  • 重装机兵
  • 读取mysql binlog
  • freebsd查看路由
  • awtk linux
  • unity碰撞抖动怎么解决
  • angular的ngif
  • 原生js实现promise
  • JavaScript isPrototypeOf和hasOwnProperty使用区别
  • 河北地税代收工作怎么样
  • 江苏国税电子税务局网登录
  • 税务局报备资产怎么填
  • 成效显著的近义词和反义词
  • 深圳国税电子税务局官网
  • 按照5%的征收率减按1.5%计算应纳税额是什么意思
  • 济宁地方税务局
  • 企业所得税年报什么时候开始申报
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设