位置: 编程技术 - 正文

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)

  • 酒类产品的税率
  • 出租房屋转为投资房屋
  • 车位销售技巧
  • 定额扣除个税什么意思
  • 收到政府土地补偿,用于种植农作物
  • 固定资产用于集体福利也算经营管理需要吗
  • 有形动产经营租赁税率
  • 发票认证延期抵扣啥意思
  • 高速公路通行费发票可以抵扣增值税吗
  • 出口货物是否属于存货
  • 出口免税进项税额转出会计分录
  • 税费返还怎么做会计科目
  • 我公司开给对方13个点发票,后期我公司怎么抵税
  • 互联网企业交什么保险
  • 融资租赁租金收入计税基础
  • 企业进项发票不够
  • 金税盘非征期汇总资料未报送
  • 进项税额转出怎么填申报表
  • 小规模纳税人的好处
  • 企业取得的不征税收入需要在几年内花出去
  • 公司不给发公司
  • 清算时公司亏损预交所得税能退吗
  • 营改增一般纳税人申请过渡性财政扶持资金
  • 收到住房补贴怎么做账
  • 股票回购会计处理
  • 应收票据背书转让名词解释
  • 待摊费用做账
  • 不动产广告位出租税率是多少
  • 如何编制固定资产折旧计算表
  • 企业分红需要缴纳什么税
  • 逆流交易合并报表调整少数损益
  • 预提费用利息会增加吗
  • 合并报表的收入是相加吗
  • PHP:oci_new_descriptor()的用法_Oracle函数
  • 如何设置电脑从硬盘启动
  • PHP:pg_last_notice()的用法_PostgreSQL函数
  • 股权转让怎么交印花税2019年最新
  • 动态定位
  • 个人所得税的征收模式为()A分类征收B综合征收C
  • php memory_get_usage
  • 人工智能专业计算机科学与技术
  • php删除元素
  • php点击复制代码
  • 以前年度的销售退回,冲减哪年的
  • php curlfile
  • php curl_init
  • 民办非企业开办资金入什么科目
  • 关于小微企业免征增值税
  • 数论电子书下载
  • 百度ai修复照片
  • 收购公司款项的会计处理
  • 销货方怎么开具购买方红冲的发票
  • 企业无票支出该怎么做账
  • 公司如何帮员工补缴社保
  • 个税申报中本人扣除比例什么意思
  • 法人向公司账户打款
  • Centos5.5中安装Mysql5.5过程分享
  • 销售金银首饰增值税和企业所得税
  • 政府投资资产会计核算科目
  • 专项应付款科目编码是多少
  • 直接人工成本包括管理人员开的工资吗
  • 哪些收入属于免增值税
  • 天然气管道安装费多少钱一米
  • 小规模纳税人财务报表季报怎么填
  • 财务报表分析的目的
  • ubuntu系统启动过程
  • rundll32.exe是什么程序
  • windows一键隐藏桌面图标
  • win10系统无法卸载补丁
  • win7安装cad2010
  • win8高级设置在哪里
  • unity中播放视频
  • javascript html5移动端轻松实现文件上传
  • bootstrap怎么学
  • 创建一个新用户user1,设置其主目录为/home/user1:
  • node socket hang up
  • python 循环太慢
  • 土地增值税有哪些征收方式
  • 广东国家税务局网上税务服务大厅
  • 地方税务局属于地市级还是副省级
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设