位置: 编程技术 - 正文

OpenGL中创建聚光灯的效果(opengl发光物体)

编辑:rootadmin
OpenGL中创建聚光灯的效果 现在,我们使用如下的数组来指定一个光源的位置: // 指定光源位置的数组 GLfloat lightPos[] = {0.0f, 0.0f, .0f, 1.0f}; // 设置光源0的位置 glLightfv(GL_LIGHT0,GL_POSITION,lightPos); lightPos数组的最后一个&#;在此为1.0,它表示光源的实际位置就在(X,Y,Z)所表示的位置。在默认情况下,光线从这个位置均匀地向四周发射。如果我们把lightPos数组的最后一个&#;设为0.0,可以使光源看上去像是来自无限远处,并沿着向量(X,Y,Z)所指定的方向射入。这种看&#;来自无限远处的光源称为方向性光源,它会均匀地照射在物体的表面,它的所有光线都是平行的,是一种平行光。反之,对于位置性光源,光线会从光源处向不同方向发散开来。 接下来,我们通过设置一些参数,来实现聚光灯的效果,代码如下所示: // 指定光源的位置和光照&#; GLfloat lightPos[] = {0.0f, 0.0f, .0f, 1.0f}; GLfloat ambientLight[] = {0.5f, 0.5f, 0.5f, 1.0f}; GLfloat specular[] = {1.0f, 1.0f, 1.0f, 1.0f}; GLfloat specref[] = {1.0f, 1.0f, 1.0f, 1.0f}; GLfloat spotDir[] = {0.0f, 0.0f, -1.0f}; // 执行场景的初始化设置 void SetupRC() { ... // 启用光照计算 glEnable(GL_LIGHTING); // 设置微弱的环境光,使物体可见 glLightModelfv(GL_LIGHT_MODEL_AMBIENT, ambientLight); // 设置光源0的散射光和镜面光成分 glLightfv(GL_LIGHT0,GL_DIFFUSE,ambientLight); glLightfv(GL_LIGHT0,GL_SPECULAR,specular); // 设置光源0的位置 glLightfv(GL_LIGHT0,GL_POSITION,lightPos); // 设置光源0的聚光灯效果,切角度 glLightf(GL_LIGHT0,GL_SPOT_CUTOFF,.0f); // 启用光源0 glEnable(GL_LIGHT0); // 启用颜色追踪 glEnable(GL_COLOR_MATERIAL); // 设置材料属性 glColorMaterial(GL_FRONT, GL_AMBIENT_AND_DIFFUSE); // 设置镜面光反射属性及强镜面指数 glMaterialfv(GL_FRONT, GL_SPECULAR,specref); glMateriali(GL_FRONT, GL_SHININESS,); ... } 上述代码中的GL_SPOT_CUTOFF&#;指定了从聚光灯发射出来的光锥的发散角度。其中,光线是沿光锥边缘的中线发散出来的。对于一种常规的位置光源,这个角度为度;而对于聚光灯,只有0度到度的&#;是有效的。聚光灯发射一个光锥,这个锥体外面的物体并不会被照射到,如图所示: 注意,OpenGL中的光源本身无法被直接看到。聚光灯并没有创建可见的光锥,平行光也没有创建平行的光束。为了在OpenGL中创建这些效果,我们必须绘制相关的几何图形。 单调着色,低表面模拟度 平滑着色,高表面模拟度 在我们的这个示例中,增加球体的表面模拟度有助于改善光照效果,但是仍然可以看到极为不自然的人为效果,这便是顶点光照的一个缺点。通过对顶点施加光照并对它们进行匀和,我们便得到了一个粗糙的光照近&#;&#;。这种顶点光照的方法在许多情况下已经够用,但是它在有些情况下仍会显得不够充分。为了实现最佳的光照效果,必须借助着色器。这一部分的示例程序完整代码已经放到了GitHub上,有需要的朋友可以参考一下( 本文出自杜晓萌的博客,请勿用于任何商业用途,转载请保持完整性并标明出处:

推荐整理分享OpenGL中创建聚光灯的效果(opengl发光物体),希望有所帮助,仅作参考,欢迎阅读内容。

OpenGL中创建聚光灯的效果(opengl发光物体)

文章相关热门搜索词:opengl metal,opengl环境光,opengl添加点光源,opengl创建光源,opengl场景建模,opengl添加光照,opengl环境光,opengl添加光照,内容如对您有帮助,希望把文章链接给更多的朋友!

VTK安装详细步骤 以前安装VTK很顺,这次VTK安装很不顺。同样都是安装vtk-5..1.tar.gz版本,难道因为我这个杂牌的组装电脑配置问题?无论如何,最终还是让我折腾出来了

骨头动画解析 骨头动画与顶点动画:骨头动画包括:外皮(所有顶点)骨头1.外皮(所有顶点),每个顶点包含一下信息,Pos(位置信息)UV纹理Normal(法线)Color(定点色)boneIndex(

利用openGL进行AR Visualization AR与VR不同,VR是制造一个虚拟的环境,使人在其中有沉浸感;AR是将虚拟的物体overlay到实际的场景中,有助于人们更好的理解场景。实现AR的手段有很多

标签: opengl发光物体

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

上一篇:OpenGL学习之glBindTexture函数(opengl教程48讲)

下一篇:VTK安装详细步骤(vtk下载步骤)

  • 可以税前扣除的利息费用有哪些
  • 小规模季报利润表本月金额和本年累计金额
  • 退回多报的教育费附加如何做账
  • 二房东转租需要备案吗
  • 收到上年多缴的企业所得税
  • 中标服务费可以抵扣进项税吗
  • 房地产成本核算会计分录
  • 捐赠的固定资产按什么计价
  • 施工单位对分包单位能罚款吗
  • 开出转账支票怎么入账
  • 一般纳税人取得3%专票可以抵扣吗
  • 怎么查公司账户是哪个银行的
  • 什么时候需要计提税金及附加
  • 小规模税局代增值税专用发票怎么交税
  • 非汉语是什么意思
  • 汇算清缴涉及长期投资收益如何做会计核算?
  • 应收账款的坏账处理方式有哪几种
  • 本月没有销项只有进项,月末怎么做账
  • 跨地区经营汇总纳税企业所得税
  • BT模式建设项目怎么处理税收?
  • 用U盘安装苹果系统
  • 公益性捐赠所得税税前扣除标准
  • 季报根据什么申报
  • 先征后返的会计分录
  • 空头支票怎么办
  • 工会经费使用具体办法
  • 实习生短期意外保险能企业所得税前扣除吗?
  • php处理的图片格式是什么
  • IE浏览器如何取消全屏
  • 其他应付款和其他应付款对冲
  • 收到银行退回余款
  • 电脑进程ace是什么
  • flash process
  • 交易性金融资产属于流动资产
  • 外商投资企业法人独资属于内资还是外资
  • 在anaconda下安装python
  • 金税盘锁死能正常报税吗
  • vue treegrid
  • ConvNeXt V2学习笔记
  • 公章没有数字是什么情况
  • 外贸企业购货合同要交印花税吗
  • ubuntu20.04安装opencv3.4
  • js轮播图实现思路
  • php创建多级目录的方法
  • php会员到期功能
  • js构造函数怎么用
  • 绿化苗木抵扣税是多少
  • 劳动法节假日加班工资
  • 企业所得税申报更正怎么操作
  • 财政科技支出
  • 外资企业是否属于国企
  • 企业报废车辆如何做账
  • access数据库不能存放什么数据
  • 增值税达不到起征期
  • 固定资产清理残料收入
  • sql共享
  • 销售费用进项税抵扣
  • 退货款现金流量如何做
  • 支付临时工的工资计入应付职工薪酬吗
  • 存货跌价准备转回和转销的区别
  • 小企业会计准则2023电子版
  • 工会筹备金记什么科目
  • 换工作后个税app单位会自动更改吗
  • 新冠肺炎疫情相关租金减让
  • 事业单位应设置事业收入科目
  • Mysql 5.7.9 shutdown 语法实例详解
  • ubuntu 连不上网如何排查原因
  • win7系统怎么对外发送wifi信号
  • win8在哪里卸载软件
  • 关于激活剂的叙述正确的是
  • win10更新后有线网络无法使用
  • win7系统自动注销重启
  • jQuery Mobile 和 Kendo UI 的比较
  • mac安装android
  • 删除默认共享的文件夹
  • CSS List Grid Layout 图片垂直居中
  • c#中的数组
  • 关于怀孕在线咨询
  • 以下关于android应用程序的目录结构描述中,不正确的是
  • 小规模开票限额最新规定2022
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设