小满(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游戏开发技术详解与典型案例,如有错误之处,希望大家多多指正

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

更多相关文章

  1. Android DNS之DNS参数设置
  2. android之sharedpreference存储参数
  3. android:布局参数,控件属性及各种xml的作用
  4. flutter插件开发学习之旅(7)-------双平台参数传递
  5. Android 版本 相关参数修改(SpreadTrum)
  6. Android访问WCF服务(使用json实现参数传递)
  7. Android中Activity之间访问互传参数
  8. Flutter 与 Android 相互调用、传递参数
  9. Android中Message参数传递

随机推荐

  1. PHP:使用curl请求聚合支付的驾考宝典题库
  2. Thinkphp6 下载安装视图组件-增删改查-预
  3. 接入超过100家快递物流查询API接口调用指
  4. PHP:composer自动加载机制;创建动态分页;
  5. 【ThinkPHP框架】tp的视图标签、request
  6. 目录变文件怎么修复??
  7. 教你解决硬盘提示文件或目录损坏且无法读
  8. php获取当前的定位城市
  9. PHP:【ThinkPHP】=>下载、安装、运行Thin
  10. PHP:【实战】用composer自撸框架