OpenGL ES for Android研究总结

本文总结了OpenGL ES在Android平台上的应用,包括视角设置GLU.gluLookAt,纹理坐标处理glTexCoordPointer,以及解决绘图遮挡问题的深度缓冲调整。通过glGenTextures和GLUtils.texImage2D实现纹理加载,利用glTexParameterf控制纹理缩放效果,同时揭示了UV映射坐标与顶点坐标的关系。通过调整视区的深度范围,如gluPerspective,可以避免近处物体的遮挡问题。
摘要由CSDN通过智能技术生成

GLU.gluLookAt(gl, eyeX, eyeY, eyeZ, centerX, centerY, centerZ, upX, upY, upZ)

 

0>  如果没有主动调用这个函数,系统默认相当于调用了GLU.gluLookAt(gl, 0, 0, 0, 0, 0, 0, 0, 1, 0);

       调用gl.glTranslatef(0,0,-1); 这个API后看到的效果等同于调用了GLU.gluLookAt(gl, 0, 0, 1, 0, 0, 0, 0, 1, 0);但调用后者不会影响当前全景坐标系。

1>  eyeX, eyeY, eyeZ 是观察者所在点对应于在当前全景坐标系下的坐标。

2>  centerX, centerY, centerZ是观察者的视线中心点在当前全景坐标系下的坐标。考虑你的手机屏幕这个平面,这个平面垂直于观察者的视线,所有屏幕上显示的物体形状,大小,其实是在全景坐标系下的物体沿视线投影到手机屏幕这个面的形状和大小。

3> upX, upY, upZ代表从(0,0,0)到 (x,y,z)的直线,它表示了观察者认为的“上”方向。改变这几个值相当于观察者的视线不变,自己的脸沿垂直于视线的平面旋转。

 

gl.glTranslatef(0,0,-1);

 

改变当前的全景坐标系, 使坐标系整体向屏幕内平移一个单位,这样所有的物体就看起来向屏幕内平移了一个单位。

 

 

glTexCoordPointer

坐标决定纹理贴图的大小,但是真正的纹理内容的左边总是在(0,1)之间,所以这个贴图越大,内容所占的比例就越小.

然后glTexCoordPointer决定的纹理贴图贴到glVertexPointer决定的”画布”上.这个过程是一比一的,”画布”是多大,纹理贴图就做相应的变形适合”画布”形状.

最后把画布显示在glViewport决定的屏幕显示区域,但是上面提到了,屏幕显示区域是一个坐标在(-1,+1)之间的一个正方形,所以”画布”的面积越大,即坐标范围越大,在显示这一步时是会被裁的,只剩(-1,+1)部分的图像.

 

贴图的方法

首先图片的操作依然是Bitmap作为图片的元素,如何读取Bitmap就不说了,在Opengl中准备可以贴的图片需要一个过程,首先,需要申明你需要贴图的图名字,这个是一个unsigned int ,用未用过的int来标志每一个你需要的texture,这个过程是通过:

 

gl.glGenTextures(1,  textures , 0);

//1 代表制需要创建一个名字,textures 是个int 数组,用于把创建的名字存储回这个数组中,0是说从第0个位置开始存储。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值