android 3d游戏开发技术宝典 -opengl es 2.0

第5章 投影及各种变换

 

Sample5_1: 正交投影技术,画了N个六角星,触摸的时候还可以拖动,六边形会神奇变换

Sample5_2: 透视投影技术,还是那N个六角星,但明显有了距离概念,远处六角星比较小

Sample5_3: 移动学习,Translate使用

Sample5_4: 旋转学习,Rotate使用

Sample5_5: 缩放学习,Scale使用

Sample5_6: 画点画线,GL_POINTS,GL_LINE_STRIP,GL_LINES,GL_LINE_LOOP

Sample5_7, Sample5_8, Sample5_9画条带

Sample5_10: 不合理视角与合理视角

Sample5_11: 背面裁剪和自定义卷抽,没懂!

 

GLES20.glEnable(GLES20.GL_CULL_FACE);//打开背面剪裁   

GLES20.glDisable(GLES20.GL_CULL_FACE);//关闭背面剪裁   

GLES20.glFrontFace(GLES20.GL_CCW);//使用自定义卷绕

GLES20.glFrontFace(GLES20.GL_CW);//不使用自定义卷绕

 

第6章  光照

Sample6_1: 画了一个球形,方格子纹理绘制,通过touch可以旋转球形

Sample6_2: 尼玛,就画了两个球啊,还有一个进度条,应该是光源调节,不过在我的设备上无效,这个光源变量很明显在程序中没有被用到,可能是疏忽落下了

Sample6_3:原来上节只是做个了亮度调节bar,妈的,真够细的,本节实现光源位置的调整效果,球出现明显明暗变化。

 

在onDrawFrame函数中调用:

//初始化光源位置

//参数分别为光源 x,y,z坐标

MatrixState.setLightLocation(lightOffset, 0, 1.5f);

Sample6_4:球变小了,查了半天才发现程序中多了这些代码,是用来调整摄像机位置的,摄像机应该是被调远了,所以看起来球变小了。

//将摄像机位置传入着色器程序   

GLES20.glUniform3fv(maCameraHandle, 1, MatrixState.cameraFB);

Sample6_5/Sample6_6:光源特性变换,手电筒和太阳的区别,呵呵聚焦? 发散?

Sample6_7/Sample6_8:将球变成了六方体,还是光源性质的变化

Sample6_9/Sample6_10:手电筒的样子,有没有中间的小圆圈,呵呵,很像手电筒发出的光吧

猜你喜欢

转载自xiaxingwork.iteye.com/blog/1825479