所以我试图让对象拾取在 OpenGL 2 中工作,在 OpenGK 1 中我使用了非常简单的 glpixelColor。
我有以下代码可以给我光线的起点和终点??
Log.i("My POSITION", "x:" + mRenderer.eye.x + " y:" + mRenderer.eye.y + " z:" + mRenderer.eye.z);
float xyzw[] = unproject(x, mRenderer.screenHeight - y, -1.0f);
Log.i("Start of ray", "x:" + xyzw[0] + " y:" + xyzw[1] + " z:" + xyzw[2]);
xyzw = unproject(x, mRenderer.screenHeight - y, 1.0f);
Log.i("End of Ray", "x:" + xyzw[0] + " y:" + xyzw[1] + " z:" + xyzw[2]);
我使用以下功能
public float[] unproject(float rx, float ry, float rz) {
float[] xyzw = {0, 0, 0, 0};
int[] viewport = { 0, 0, mRenderer.screenWidth, mRenderer.screenHeight};
android.opengl.GLU.gluUnProject(rx, ry, rz, mRenderer.mViewMatrix, 0, mRenderer.mProjectionMatrix, 0, viewport, 0, xyzw, 0);
xyzw[0] /= xyzw[3];
xyzw[1] /= xyzw[3];
xyzw[2] /= xyzw[3];
xyzw[3] = 1;
return xyzw;
}
我得到以下输出
我的位置:x:-1.857801 y:0.0 z:-8.655011 04-21
光线起点:x:-1.8198236 y:-0.005848203 z:-8.688532 04-21
光线结束:x:758.43915 y:-117.07846 z:-679.7136
问题 如果我在某个位置点击了立方体,我该如何计算?假设立方体在 1,1,1