【发布时间】:2013-12-20 10:03:37
【问题描述】:
我在 OpenGL 2.0 ES 中的 z=0 处绘制了一个网格,并且只想将触摸输入转换为该平面上的 x/y 坐标。似乎这最好通过光线追踪来完成,这包括在 0 和 1 上运行 gluUnProject,然后创建一条光线,解决 z=0 的光线?
我找到了这段代码,但它是 OpenGL ES 1.0:i-schuetz / Android_OpenGL_Picking
Screenshot of app running so you can see camera distortion.
My code on Github, only 4 files。我正在尝试编写的 unproject 函数在 MyGLRenderer.java 中:
public float[] unproject(float rx, float ry) {
float rz = 1;
float[] xyzw = {0, 0, 0, 0};
int[] viewport = {0, 0, mDisplayWidth, mDisplayHeight};
android.opengl.GLU.gluUnProject(
rx, ry, rz, // window coordinates
mViewMatrix, 0,
mProjectionMatrix, 0,
viewport, 0,
xyzw, 0);
xyzw[0] /= xyzw[3];
xyzw[1] /= xyzw[3];
xyzw[2] /= xyzw[3];
xyzw[3] = 1;
return xyzw;
}
我希望这个函数为屏幕获取一个 rx 和 ry,并为 z=0 平面返回一个 rx 和 ry。
【问题讨论】:
标签: android opengl-es touch opengl-es-2.0 raytracing