[EDIT] Игнорировать этот пост, это была ошибка нуба [/ EDIT]
Я запустил Android на прошлой неделе (= я довольно новичок в этом :)), и я бьюсь головой о проблеме:
Я пытаюсь выполнить лучевое вещание, чтобы получить объекты под точкой экрана.
Я узнал, что мне нужен метод GLU.gluUnproject, после приличного количества сбоев я нашел решение
Я скопировал классы MatrixGrabber, MatrixStack и MatrixTrackingGL в моем проекте, они кажутся нормальными.
метод, который я использую, выглядит следующим образом:
static public Vertex unProject( float x, float y, World world )
{
world.mg = new MatrixGrabber();
world.mg.getCurrentState(world.gl);
float[] pos = new float[4];
GLU.gluUnProject( x, y, 0f,
world.mg.mModelView, 0,
world.mg.mProjection, 0,
world.view().get_size(), 0,
pos, 0);
return new Vertex(pos[0], pos[1], pos[2]);
}
Vertex - это DataHolder с плавающей запятой x, y, z
Мир расширяет GLSurfaceView, я делаю замену GLWrapper в конструкторе:
world.mg - это MatrixGrabber ()
public World( Context context )
{
super(context);
[...]
//allows matrix manipulation
setGLWrapper( new GLWrapper()
{
public GL wrap(GL gl)
{
return new MatrixTrackingGL(gl);
}
});
}
и я проверяю, что все переменные создаются при выполнении моего вызова
но все равно я не могу заставить это работать: приложение сильно падает на
world.mg.getCurrentState(world.gl);
вызов.
он также вылетает на getCurrentModelView (gl); и getCurrentProjection (gl);
Я использую Android 1.5, но пробовал с другими версиями до 3. То же самое.
Я действительно не знаю, какую версию OpenGLI я использую; GL10 используется везде, я не знаю, важно ли это, все, что я прочитал, касалось GL10 «Тип».
если у кого-то есть подсказка, совет, обходной путь или решение, я был бы счастлив счастлив счастлив
и в любом случае, спасибо за чтение:)