位置: 编程技术 - 正文

在OpenGL中给场景添加光照(opengl sphere)

编辑:rootadmin
在OpenGL中给场景添加光照 为了在OpenGL中使用光照计算,我们需要调用glEnable方法,并用GL_LIGHTING作为参数。这个调用告诉OpenGL在确定场景中每个顶点的颜色时使用光照参数和材料属性。当然,如果我们没有指定任何光照参数和材料属性,那么物体仍将会保持为黑暗的无光照状态。 // 启用光照 glEnable(GL_LIGHTING); 一、设置环境光 OpenGL提供了一个全局光源,它只发射环境光。这种光源很有用,它可以照射没有被其它光源直接照射的物体的背面,并且如果场景看上去太暗,可以调节这种全局环境光,以达到自己所需要的亮度。设置全局环境光的代码如下所示: // 指定环境光的RGBA强度&#; GLfloat ambientLight[] = {1.0f, 1.0f, 1.0f, 1.0f}; // 设置光照模型,将ambientLight所指定的RGBA强度&#;应用到环境光 glLightModelfv(GL_LIGHT_MODEL_AMBIENT, ambientLight); glLightModel方法使用指定的参数来设置光照模型。它的第一个参数是需要设置的光照模型,在这里我们指定的是环境光(ambient);接下来的一个参数包含了组成光源的RGBA强度&#;,也就是我们设置的ambientLight。 全局环境光的默认RGBA&#;是(0.2, 0.2, 0.2, 1.0),这是一种较暗的光。其它光照模型参数允许我们指定多边形是正面还是背面被照射,或者是两面都被照射,以及指定如何计算镜面光的角度等。 二、设置材料属性 当有了环境光源之后,我们还需要设置材料属性,只有设置了材料属性,我们的多边形才可以反射光线。 设置材料属性可以使用两种方法,第一种是在指定每个多边形或每组多边形之前使用glMaterial方法。代码如下所示: GLfloat gray[] = {0.f, 0.f, 0.f, 1.0f}; glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, gray); glBegin(GL_TRIANGLES); ... glEnd(); glMaterial方法的第一个参数指定了材料属性是作用于正面、背面还是双面(GL_FRONT、GL_BACK、GL_FRONT_AND_BACK);第二个参数指定将要设置环境光和散射光的反射率,在这里它们被设置为相同的&#;;最后一个参数是数组,包含了构成材料属性的RGBA&#;。在大多数情况下,环境光和散射光成分是相同的。 第二种设置材料属性的方法,称为颜色追踪。使用颜色追踪,可以告诉OpenGL仅仅通过调用glColor方法来设置材料属性。依旧使用glEnable方法来启用颜色追踪: // 启用颜色追踪 glEnable(GL_COLOR_MATERIAL); // 设置多边形正面的环境光和散射光属性,追踪glColor方法所设置的颜色 glColorMaterial(GL_FRONT, GL_AMBIENT_AND_DIFFUSE); glColor(0.f, 0.f, 0.f); glBegin(GL_TRIANGLES); ... glEnd(); 接着,glColorMaterial函数根据glColor所设置的颜色&#;来指定材料参数。这里有很重要的一点,那就是物体材料的颜色成分实际上决定了入射光的反射比例,正是这一点确保了颜色追踪的可行性。设置完整渲染状态的代码如下所示: void SetupRC() { glEnable(GL_DEPTH_TEST); glFrontFace(GL_CCW); glEnable(GL_CULL_FACE); // 启用光照计算 glEnable(GL_LIGHTING); // 指定环境光强度(RGBA) GLfloat ambientLight[] = {1.0f, 1.0f, 1.0f, 1.0f}; // 设置光照模型,将ambientLight所指定的RGBA强度&#;应用到环境光 glLightModelfv(GL_LIGHT_MODEL_AMBIENT, ambientLight); // 启用颜色追踪 glEnable(GL_COLOR_MATERIAL); // 设置多边形正面的环境光和散射光材料属性,追踪glColor glColorMaterial(GL_FRONT, GL_AMBIENT_AND_DIFFUSE); glClearColor(0.0f, 0.0f, 0.5f, 1.0f); } 这一部分的示例程序完整代码已经放到了GitHub上,有需要的朋友可以参考一下( 本文出自杜晓萌的博客,请勿用于任何商业用途,转载请保持完整性并标明出处:

推荐整理分享在OpenGL中给场景添加光照(opengl sphere),希望有所帮助,仅作参考,欢迎阅读内容。

在OpenGL中给场景添加光照(opengl sphere)

文章相关热门搜索词:opengl简单场景,opengl sphere,opengl做界面,opengl做界面,opengl示例,opengl场景建模,opengl 实现,opengl场景建模,内容如对您有帮助,希望把文章链接给更多的朋友!

搭建Qt下的OpenGL编程框架 转载:

opengl GLSL 学习 随笔三 1、类型修饰符const表示该变量为常量,只读;in表示该变量是一个输入在当下的shaderstage;out表示该变量是一个输出在当下的shaderstage;uniform表示该变量

opengl GLSL基本语法 学习 随笔二 1、首先介绍一下GLSL的数据类型,如果你学过c,那么一定不会陌生。floatdoubleintuintbool型几个数据类型;基本上从字面上就能理解这几个数据类型的含义。

标签: opengl sphere

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

上一篇:openGL ES 2.0 初始化(I)(opengl es3.0)

下一篇:搭建Qt下的OpenGL编程框架(qt配置opengl)

  • 增值税纳税义务早于会计准则的案例
  • 建筑业增值税税负预警
  • 销项税额计算公式依据
  • 股东所有者权益公式
  • 只有增值税专用发票才能勾选抵扣吗
  • 季度报表的利润表是填本月数填六月的书吗
  • 房地产增值税抵减土地出让金
  • 银行对账单放前面还是放后面
  • 定额扣除个税什么意思
  • 法人可以自己申诉个税吗
  • 公积金需要每月缴纳吗
  • 赠品的会计核算内容
  • 企业购买用于绿化的土地
  • 股东取得利息收入如何纳税
  • 缴纳印花税需要计提吗?
  • 进项税转出的附加税怎么做
  • 付稿费会计分录
  • 物业公司收取公摊水电费合理吗
  • 个人所得税计算器2023
  • 增值税可以不计提,直接缴纳吗
  • 银行手续费可以抵扣企业所得税吗
  • 技术服务费属于什么税收分类编码
  • 外贸企业增值税表二填写流程
  • 收到转账支票 转给下一家
  • 金税三期核心征管系统行政处罚
  • 只有发票没有银行客户专用回单是啥意思
  • 测速网在线测速
  • 404 not found意思详细介绍
  • 未确认融资收益怎么理解
  • 代理业如何交增值税
  • 销售退回的账务处理附什么底稿
  • php数组函数题目
  • 怎么缴销空白发票
  • 存货捐赠视同销售要不要确认收入?
  • php基于mcrypt_encrypt和mcrypt_decrypt实现字符串加密解密的方法
  • JavaScript 30 JavaScript 日期格式
  • php实现将base64格式图片保存在指定目录的方法
  • 财政贴息会计处理怎么理解
  • 网络销售税率怎么算
  • 发票作废税款什么时候退
  • 银行贷款入账需要什么
  • 先收到保险公司赔付然后赔给顾客医药费怎么做帐
  • web开发百度百科
  • 农产品增值税免税备案资料
  • 库存现金挂账多久
  • 房租押金可以要回来吗
  • 应交税费已交税金是什么意思
  • 一般纳税人销售旧货税率
  • 小型微利企业计算企业所得税
  • 减免税需要纳税申报吗
  • 股权转让中土地要否缴纳增值税
  • 其他应收款应该缴纳什么税
  • 印花税申报成功未扣款还能更正吗
  • 哪些项目不可以抵扣进项
  • 租赁公司异地经营
  • 租赁公司账务科目
  • 预缴增值税及附加可以在电子税务局申报吗
  • 营销策划费用是
  • 支付银行贷款利息的会计处理
  • 企业购买原材料属于投资吗
  • 一般纳税人原材料的入账价值怎么算
  • 空头支票是什么数字
  • 公司支付质保金怎么做账
  • 公司固定资产有很多种类,怎样计提折旧
  • 什么是其他应收款科目
  • mysql 绿色版安装
  • 海尔电脑优盘启动键
  • Win10预览版桌面图标和任务栏不翼而飞怎么办?
  • windows 08
  • win7删除搜索历史记录
  • macbook触摸板如何点右键
  • cocos2dx官方教程
  • 基于jquery的框架有哪些
  • cmd 更改密码
  • 深入理解计算机系统
  • 使用image控件显示图片
  • c#未来展望
  • 熟练使用jquery
  • 广东增值税电子专用发票
  • 福建农村社保一个月可以拿多少钱
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设