位置: 编程技术 - 正文

OpenGL中设置光照的镜面反射效果(opengl实现光线追踪)

编辑:rootadmin
OpenGL中设置光照的镜面反射效果 在上一篇笔记中,我们记述了光线的方向与多边形表面的角度计算关系,除此之外,我们还有光源的位置需要指定。我们在ChangeSize函数的内部指定光源的位置: // 指定光源的位置 GLfloat lightPos[] = {-.0f, .0f, .0f, 1.0f}; glLightfv(GL_LIGHT0, GL_POSITION, lightPos); 在此,lightPos数组包含了光源的坐标位置。这个数组的最后一个&#;是1.0,表示指定的坐标是光源的位置;如果这个数组的最后一个&#;是0.0,则表示光是从无限远处沿这个数组所指定的方向向量照射过来的。同样地,光就像几何物体一样,它们也可以根据模型视图矩阵进行移动。 接下来,我们设置光照的镜面亮点效果。 镜面亮点 镜面光和材料的镜面反射属性可以为物体的表面添加必要的光泽。光泽对物体的颜色具有变白的作用,它可以产生镜面加亮的效果。所谓镜面加亮,就是几乎所有光线都照射在一个物体的表面并反射下来。像我们平时看到的日光照射下的金属球,就是一个镜面加亮的例子,如下图所示: 首先,在光照中添加镜面光成分: // 指定镜面光强度(RGBA) GLfloat specular[] = {1.0f, 1.0f, 1.0f, 1.0f}; glLightfv(GL_LIGHT0, GL_SPECULAR, specular); // 启用光照计算 glEnable(GL_LIGHTING); // 启用光源0 glEnable(GL_LIGHT0); 在上述代码中,specular数组为光照的镜面光成分指定了一种非常亮的白色光源。但是现在,如果只是设置了光源部分,我们将无法看到物体的外观有何不同,因为我们还没有定义任何材料的镜面反射属性。 指定材料的镜面反射 为材料添加镜面反射属性,类&#;于为光源添加镜面光成分,代码如下所示: // 指定材料的镜面反射属性 GLfloat specref[] = {1.0f, 1.0f, 1.0f, 1.0f}; // 设置多边形正面的镜面反射属性 glMaterialfv(GL_FRONT, GL_SPECULAR, specref); // 指定镜面指数 glMateriali(GL_FRONT, GL_SHININESS, ); 在这里,我们单独指定了镜面反射属性,specref数组包含了镜面反射的RGBA强度&#;。如果这个数组的所有&#;均为1,那么它所产生的表面将会反射几乎所有的入射光。 指定镜面指数 强度大的镜面光和反射属性能够加强物体的颜色。不过,极端强烈的镜面光(完全强度)和镜面反射(完全反射)会导致我们的物体几乎呈现纯白色或纯灰色,只有远离光源的那些表面除外。为了抑制这种效果,我们在指定了镜面反射属性之后,需要继续设置一下材料的镜面指数: // 指定镜面指数 glMateriali(GL_FRONT, GL_SHININESS, ); GL_SHININESS属性设置材料的镜面指数。镜面指数指定了镜面加亮的大小范围和集中性。如果它的&#;是0,表示未聚焦的镜面加亮,实际上就是整个多边形的颜色均匀加亮。如果这个&#;大于0,就可以缩小镜面加亮的范围,同时增加镜面加亮的集中程度,从而出现亮点的效果。它的&#;越大,亮点就越明显。在所有的OpenGL实现中,这个参数的范围是1至. 镜面指数为0,均匀加亮 镜面指数为,局部加亮 这一部分的示例程序完整代码已经放到了GitHub上,有需要的朋友可以参考一下( 本文出自杜晓萌的博客,请勿用于任何商业用途,转载请保持完整性并标明出处:

推荐整理分享OpenGL中设置光照的镜面反射效果(opengl实现光线追踪),希望有所帮助,仅作参考,欢迎阅读内容。

OpenGL中设置光照的镜面反射效果(opengl实现光线追踪)

文章相关热门搜索词:opengl insight,opengl设置光源,opengl环境光,opengl添加点光源,opengl实现光线追踪,opengl实现光线追踪,opengl环境光,opengl实现光照效果,内容如对您有帮助,希望把文章链接给更多的朋友!

opengl 使用 vc6.0中win控制台工程去掉控制台窗口 #pragmacomment(linker,/subsystem:windows/entry:mainCRTStartup)

[置顶] openGL学习笔记四 : 关于颜色, 大小, 虚线, 多边形反转, 镂空, 使用位图 转载请保留出处,,,,

OpenGL:纹理基础总结 当前光栅位置:当前光栅位置就是开始绘制下一幅位图/图像的屏幕位置。//左下角glRasterPos2f(GLfloatx,GLfloaty);glRasterPos3f(GLfloatx,GLfloaty,GLfloatz);1、4版本中,

标签: opengl实现光线追踪

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

上一篇:opengl中矩阵变换(opengl绘制一个矩形)

下一篇:opengl 使用 vc6.0中win32控制台工程去掉控制台窗口(opengl visual studio)

  • 合同甲方乙方收钱付钱涉及什么税金
  • 缓交的社保费,包括个人部分
  • 企业申报表有异常期间可以更换财务负责人吗
  • 安装服务费发票需要备注地址吗
  • 津贴个人所得税怎么算出来的
  • 向税务局缴纳工伤保险费有发票吗
  • 生产成本物料的核算
  • 合伙企业可以弥补以前年度亏损吗
  • 增值税 代销
  • 风险纳税人怎么查询
  • 关于小规模纳税人的说法错误的有
  • 税收六项减免
  • 增值税税控盘服务费可以每年都抵扣吗
  • 企业所得税期间费用明细表
  • 汽车装饰用品大全进货
  • 借款本金和借款余额
  • 租金可以抵税吗
  • 企业报税表
  • 资源税的征税对象和纳税环节
  • 小规模企业国税怎么报税
  • 可转换公司债券账务处理
  • windows打开文件
  • windows10显示未激活怎么办
  • windows10如何更改时间
  • macbook截图快捷键没反应
  • ubuntu22.04更换RTX 4090显卡后,安装驱动和pytorch记录
  • windows 11预览版
  • 只有收据没有发票可以保修吗
  • 申报补缴是什么意思
  • 冰河湖怎么去
  • 长期借款的会计处理例题
  • 企业清算的会计科目
  • 仓库盘点单模板
  • 现代服务业主要功能
  • 应付账款会计分录大全
  • python字典添加数据
  • python slic
  • RedHat6.5/CentOS6.5安装Mysql5.7.20的教程详解
  • mysql使用ssl连接
  • 公司扣除保险费会计分录
  • 财务报表申报后怎么修改
  • 预提的费用当年必须冲掉吗
  • 将自产的应税消费品用于连续生产非应税消费品
  • 增值税期末有留抵税额应该怎么结转
  • 生产车间人员工资期末结转
  • 预缴增值税怎么计提
  • 建筑企业需要缴纳的税种
  • 为什么生产成本不属于损益类科目
  • 已认证进项税转出口退税怎么处理
  • 增值税附加税印花税都是什么
  • 扣非净利润占比多少合理
  • 网络使用费属于办公费吗为什么
  • 广告费用收入
  • 开具红字发票的当月就要进项税额转出吗?
  • 工会经费交纳
  • CMD命令操作MSSQL2005数据库(命令整理)
  • sqlserver日志清理
  • 数据库性能优化方法论和最佳实践
  • 全面解析皮炎
  • 电脑任务管理器磁盘100%是什么意思
  • win10怎么去掉
  • win7系统怎样
  • linux限制用户cpu使用
  • win7ghost纯净版美化版
  • win10系统网络连接配置异常
  • 麒麟系统命令
  • node.js wss
  • 深入理解新发展理念,推进供给侧结构性改革
  • Node.js中的什么模块是用于处理文件和目录的
  • unity手柄圆盘
  • 基于web的旅游网站毕业设计
  • 基于vue的购物系统
  • android英语
  • android support包
  • bootstrap要学多久
  • 江苏税务个人所得税app怎么下载不了?
  • 电子税务局网上实名认证流程
  • 租房交税是房东交还是中介交
  • 金税三期是什么内容
  • 家长进校园给孩子讲法律课
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设