3_OpenGL ES——GL10——光源

打开,关闭光照

gl.glEnable(GL10.GL_LIGHTING);//允许光照

gl.glDisable(GL10.GL_LIGHTING);//关掉光照

打开后还要其他设置

。。。//每次先关闭n号灯

。。。//打开n号灯

。。。//设置n号灯

。。。//初始化材质

//begin 绘制

//begin 开启光照一定要开户向量

//开启顶点向量数据

gl.glEnableClientState(GL10.GL_NORMAL_ARRAY);

//为画笔指定顶点法向量数据

gl.glNormalPointer(GL10.GL_FIXED, 0, mNormalBuffer);

//end 开启光照一定要开户向量

 

//绘制drawSelf

//end 绘制

 

然后还要加下这句

gl.glLoadIdentity();

 

定向光,定位光

void javax.microedition.khronos.opengles.GL10.glLightfv(int light, int pname, float[] params, int offset)

light  GL10.GL_LIGHT0GL10.GL_LIGHT1.。。。

pname  GL10.GL_POSITION

params  一般四个数,最后一个数如果是,0表示定向,1表示定位

offset  为偏移量,一般设置为0,0表示第1个值在数组中的偏移量为0

 

 

 

 

 

 

 

光源颜色

其实就是就是照在物休上三部分的颜色

 

void javax.microedition.khronos.opengles.GL10.glLightfv(int light, int pname, float[] params, int offset)

light  GL10.GL_LIGHT0GL10.GL_LIGHT1.。。。

pname  GL10.GL_AMBIENT(背面,环境光)GL10.GL_DIFFUSE(中间,散射光)GL10.GL_SPECULAR(前面,反射光)

params  一般四个数,最后一个数如果是,0表示定向,1表示定位

offset  为偏移量,一般设置为0,0表示第1个色彩通道的值在数组中的偏移量为0

 

//环境光设置

float[] ambientParams={0.1f,0.1f,0.1f,1.0f};//光参数 RGBA

gl.glLightfv(GL10.GL_LIGHT0, GL10.GL_AMBIENT, ambientParams,0);           

//散射设置

float[] diffuseParams={0.5f,0.5f,0.5f,1.0f};//光参数 RGBA

gl.glLightfv(GL10.GL_LIGHT0, GL10.GL_DIFFUSE, diffuseParams,0);

//反射光设置

float[] specularParams={1.0f,1.0f,1.0f,1.0f};//光参数 RGBA

gl.glLightfv(GL10.GL_LIGHT0, GL10.GL_SPECULAR, specularParams,0);

 

 

物体的材质

void javax.microedition.khronos.opengles.GL10.glMaterialfv(int face, int pname, float[] params, int offset)

face 设置材质能反光的面,设置为GL10.GL_FRONT_AND_BACK,可以实现正反面均可反射光线。

pname  GL10.GL_AMBIENT(背面,环境光)GL10.GL_DIFFUSE(中间,散射光)GL10.GL_SPECULAR(前面,反射光), GL10.GL_SHININESS(高光反射区域)

params  GL10.GL_SHININESS设置一个参数(参数越大高亮区域越小,越暗),其他设置RGBA

offset  一般设置为0

 

//环境光为白色材质

float ambientMaterial[] = {0.4f, 0.4f, 0.4f, 1.0f};

gl.glMaterialfv(GL10.GL_FRONT_AND_BACK, GL10.GL_AMBIENT, ambientMaterial,0);

//散射光为白色材质

float diffuseMaterial[] = {0.8f, 0.8f, 0.8f, 1.0f};

gl.glMaterialfv(GL10.GL_FRONT_AND_BACK, GL10.GL_DIFFUSE, diffuseMaterial,0);

 //高光材质为白色

float specularMaterial[] = {1.0f, 1.0f, 1.0f, 1.0f};

gl.glMaterialfv(GL10.GL_FRONT_AND_BACK, GL10.GL_SPECULAR, specularMaterial,0);

//高光反射区域,数越大高亮区域越小越暗

float shininessMaterial[] = {1.5f};

gl.glMaterialfv(GL10.GL_FRONT_AND_BACK, GL10.GL_SHININESS, shininessMaterial,0);

//蓝色自发光

float emission[] = {0.0f, 0.0f, 0.3f, 1.0f};

gl.glMaterialfv(GL10.GL_FRONT_AND_BACK, GL10.GL_EMISSION, emission,0);

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值