您的位置:首页 > 移动开发 > Android开发

关于android 中visibilityTest函数的使用(modeview和projection矩阵的获取)

2011-05-25 21:37 423 查看
献给和我一样迷茫地摸索在android开发的人。。

public static int VisibiliytTest (float[] ws, int wsOffset, float[] positions, int positionsOffset, char[] indices, int indicesOffset, int indexCount)

该函数主要用于测试三维空间中的某个三角形网格是否能被显示在屏幕上。

float []ws: 是三维空间到屏幕空间的转换矩阵。

一般的计算方法是用modelview matrix 乘 projection matrix。

文档上给出了两种方法取这两个矩阵,但是个人试过没成功。其实Api里面给出了第三种方法,就是使用MatrixStack类和MatrixTrackingGL类。用Api里的MatrixGrabber里面的方法常常会出现转型错误。

使用:

mModelView = new float[16];
mProjection = new float[16];
gl=new MatrixTrackingGL(gl);
MatrixTrackingGL gl2 = (MatrixTrackingGL) gl;
//这两句放最开端,因为之后的glOrtho、GLULookAt等都要使用gl2这个对象而不是gl。

gl2.glMatrixMode(GL10.GL_MODELVIEW);
gl2.getMatrix(mModeView, 0);

gl2.glMatrixMode(GL10.GL_PROJECTION);
gl2.getMatrix(mProjection, 0);


取出后用mModeview矩阵乘mProjection矩阵,就可以得到转换矩阵。

wsOffset : 矩阵偏移(?),标记ws数组的开始端。一般填0。

positions :点的集合。

positionsOffset :点的偏移,记录点集合里面的开始端,一般填0。

indices : 索引,是char类型的,所以一般用前要进行类型转换。

indicesOffset:索引的偏移,同上。

indexCount:使用的索引数,一般是3的倍数,如果不是3的倍数,则多余的一个或两个索引点将被忽略。(怎么感觉像是在抄文档。。。算了,重点在上面 n^o^lo)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐