請問gluUnProject和gluProject可逆嗎?我現在總是差四倍多
时间:2011-08-28
来源:互联网
public void Project(GL10 gl,float x,float y,float z) //傳入世界座標
{
int viewport[] = new int[4];
float[] model = new float[16];
float[] proj = new float[16];
Log.d("SP","x = " + x + ",y = " + y);
gl.glGetIntegerv(GL11.GL_VIEWPORT,viewport,0);
((GL11)gl).glGetFloatv(GL11.GL_MODELVIEW_MATRIX, model, 0);
((GL11)gl).glGetFloatv(GL11.GL_PROJECTION_MATRIX, proj, 0);
float[] ret = new float[4];
GLU.gluProject(x,y,z, model,0,proj, 0,viewport, 0, ret, 0); //得到屏幕座標
Log.d("SP","x = " + ret[0] + ",y = " + ret[1]);
GLU.gluUnProject(ret[0], ret[1], ret[2], model, 0, proj, 0, viewport, 0, ret, 0); //把屏幕座標再傳回gluUnproject,期望得到傳入函數的世界座標.
Log.d("SP","x = " + ret[0] + ",y = " + ret[1]);
Log.d("SP","");
}
我的代碼上加了註釋.現在把世界座標轉換為屏幕座標,看似正確,但把屏幕座標利用相同的模型矩陣和透視矩陣,得到的世界座標,僅相當於傳入參數的四分之一.而且,不管怎麼修改z的值,得到的x,y都不會改變.
我用的GLU.gluPerspective(gl,100.0f,(float)width/(float)height,0.1f,100.0f);
按理我的z座標減小,x,y應該增大才對,現在不變且不可逆,誰知道是怎麼回事?
{
int viewport[] = new int[4];
float[] model = new float[16];
float[] proj = new float[16];
Log.d("SP","x = " + x + ",y = " + y);
gl.glGetIntegerv(GL11.GL_VIEWPORT,viewport,0);
((GL11)gl).glGetFloatv(GL11.GL_MODELVIEW_MATRIX, model, 0);
((GL11)gl).glGetFloatv(GL11.GL_PROJECTION_MATRIX, proj, 0);
float[] ret = new float[4];
GLU.gluProject(x,y,z, model,0,proj, 0,viewport, 0, ret, 0); //得到屏幕座標
Log.d("SP","x = " + ret[0] + ",y = " + ret[1]);
GLU.gluUnProject(ret[0], ret[1], ret[2], model, 0, proj, 0, viewport, 0, ret, 0); //把屏幕座標再傳回gluUnproject,期望得到傳入函數的世界座標.
Log.d("SP","x = " + ret[0] + ",y = " + ret[1]);
Log.d("SP","");
}
我的代碼上加了註釋.現在把世界座標轉換為屏幕座標,看似正確,但把屏幕座標利用相同的模型矩陣和透視矩陣,得到的世界座標,僅相當於傳入參數的四分之一.而且,不管怎麼修改z的值,得到的x,y都不會改變.
我用的GLU.gluPerspective(gl,100.0f,(float)width/(float)height,0.1f,100.0f);
按理我的z座標減小,x,y應該增大才對,現在不變且不可逆,誰知道是怎麼回事?
作者: peng6662001 发布时间: 2011-08-28
个人再顶一下
作者: peng6662001 发布时间: 2011-10-08
还是没人回复
作者: peng6662001 发布时间: 2011-12-20
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28