Android 3D 游戏学习笔记(4)-光源

小满(billman)个人原创,欢迎转载,转载请注明地址,小满(billman)的专栏地址http://blog.csdn.net/bill_man

本篇开始介绍android3dopengles中的光照基本知识,在androidjava开发中,使用gl.glEnable(GL10.GL_LIGHTING)打开光源,但是,这里有一点需要指出的是,如果我们只是添加了这句话而不进行其它设置的话,那么这句话起不到他应有的效果,也就是说我们不会看到光照的效果。相对而言,关闭光源则相对简单,直接在句子里加入如下这句就可以了:gl.glDisable(GL10.GL_LIGHTING)

opengl场景中包含8个光源,分别是GL_LIGHT0GL_LIGHT7,它们可以是不同的颜色。和开启光照一样,如果只是启动了某灯之后如果不进行其它设置,同样达不到开灯的效果。

Opengles中使用glLightfv的方法来设置光的性质。

首先介绍如何设置定向光,定向光就是平行的光源,我们可以认为我们的光照的光线是平行的。就是同过glLightfv设置。此函数有四个参数,第一个参数就是GL_LIGHT0GL_LIGHT7,第二个参数表明是定向光,应该设置为GL_POSITION,第三个参数是一个float类的数组,这个数组由四个部分组成,前三个表示光方向的向量,最后一个应该设置为0表示这是个定向光。最后一个参数表示第一个数值在数组中的偏移量

定位光是从某一位置上散射出来的光源,同样是通过glLightfv来设置。第一个参数就是GL_LIGHT0GL_LIGHT7。第二个参数参数表明是定位光,和定位光一样,也使用GL_POSITION,第三个参数是不同的,数组前三个位置是给定坐标点和原点之间的向量,最后一个参数定位量设置为1。最后一个参数表示第一个数值在数组中的偏移量

设置环境光的时候,第一个参数还是GL_LIGHT0GL_LIGHT7。第二个参数,环境光设置为GL_AMBIENT,第三个参数的数组的四个元素是RGBA四个色彩值,最后一个参数设置为0,表示第一个色彩通道值在数组中的偏移量。

设置散射光的时候,第一个参数还是GL_LIGHT0GL_LIGHT7。第二个参数,环境光设置为GL_DIFFUSE,第三个参数的数组的四个元素是RGBA四个色彩值,最后一个参数设置为0,表示第一个色彩通道值在数组中的偏移量。

镜面反射光是指光源来自一个特定的方向,并且倾向于从表面向某个特定的方向反射。设置镜面反射光的时候,第一个参数还是GL_LIGHT0GL_LIGHT7。第二个参数,环境光设置为GL_SPECULAR,第三个参数的数组的四个元素是RGBA四个色彩值,最后一个参数设置为0,表示第一个色彩通道值在数组中的偏移量

参考自Android3d游戏开发技术详解与典型案例,如有错误之处,希望大家多多指正

下一篇写一下法向量及材质

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值