读书人

OpenGL中的座标和手机坐标是有不同的

发布时间: 2012-07-03 13:37:43 作者: rapoo

OpenGL中的坐标和手机坐标是有不同的

首先,参考以下这位网友关于OpenGL坐标系的说明:http://blog.chinaunix.net/space.php?uid=20622737&do=blog&id=1912946

?

此篇文章说的很明白,默认分两个坐标:

OPENGL坐标系可分为:世界坐标系和当前绘图坐标系。

世界坐标系以屏幕中心为原点(0, 0, 0)。你面对屏幕,你的右边是x正轴,上面是y正轴,屏幕指向你的为z正轴。长度单位这样来定:?窗口范围按此单位恰好是(-1,-1)到(1,1)。

当前绘图坐标系是?绘制物体时的坐标系。程序刚初始化时,世界坐标系和当前绘图坐标系是重合的。

?

文中还说,参考坐标系是不动,我想纠正这一点,至少在Android应用中使用时,是可以改变的,比如在覆写onSurfaceChanged方法时,一般需要设置观察点:

GLU.gluLookAt(GL10 gl, float eyeX, float eyeY, float eyeZ,

? ? ? ? ? ? float centerX, float centerY, float centerZ, float upX, float upY,

? ? ? ? ? ? float upZ)

一般默认设置为:GLU.gluLookAt(gl, 0, 0, 2.8f, 1.5f,0, 0, 0, 1, 0);

改变中心位置,就可以把参照坐标系改变了,不过实际的意义可能不太大,毕竟大家都习惯了默认的。

另外,想补充说明下,顶点数组的顺序,正面一般是按左、下、右、上这个逆时针顺序来排布的,背面方向是反的,按顺时针,有些网上解释说是为了让人从各个面看起来都是正面,这个解释现在记下来,有待以后验证。

?

保留一个比较好的博客地址(主要是翻译英文原文档):http://www.opengpu.org/bbs/archiver/?tid-2164.html

?

?

读书人网 >移动开发

热点推荐