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:手电筒的样子,有没有中间的小圆圈,呵呵,很像手电筒发出的光吧