Я хочу использовать данные датчика ориентации Android для моей камеры GLES - придавая ему матрицу вращения. Я нашел очень хороший пример здесь:Ориентация сенсора -> GLRotation не работает должным образом
How to use onSensorChanged sensor data in combination with OpenGL
, но это работает только с GL1.0 и мне нужно работать над этим GLES2.0. Используя мои собственные шейдеры, все работает, перемещение камеры отлично. Но в тот момент, когда я использую матрицу вращения, как в примере, она не работает.
сгенерировать матрицу вращения с:
SensorManager.getRotationMatrix(rotationMatrix, null, bufferedAccelGData, bufferedMagnetData);
Мое приложение работает в альбомной, так я использую это Methode после (как в примере кода):
float[] result = new float[16];
SensorManager.remapCoordinateSystem(rotationMatrix, SensorManager.AXIS_Y, SensorManager.AXIS_MINUS_X, result);
return result;
Он работал отлично на мой телефон в его коде, но не в моем. Мой экран выглядит следующим образом:
матрицавращение, кажется, поворачивается на 90 ° вправо (почти как если бы я забыл переключить на альбомную для моей деятельности).
Я думал о неправильном использовании метода remap()
, но в примере это имеет смысл, движение камеры работает сейчас. Если я поворачиваюсь влево, экран также вращается влево, хотя, поскольку все повернуто, оно вращается «вверх» (по сравнению с землей, которая находится не внизу, а справа). Похоже, я сделал стену вместо земли, но я уверен, что мои координаты подходят для вершин.
Я посмотрел ATH методом жеребьевки для GLSurface
, и я не вижу, что я мог бы сделать неправильно здесь:
GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT | GLES20.GL_DEPTH_BUFFER_BIT);
MatrixStack.glLoadMatrix(sensorManager.getRotationMatrix()); // Schreibt die MVMatrix mit der ogn. Rotationsmatrix
GameRenderer.setPerspMatrix(); // Schreibt die Perspektivmatrix Uniform für GLES. Daran sollte es nicht liegen.
MatrixStack.mvPushMatrix();
drawGround();
MatrixStack.mvPopMatrix();
Как я уже говорил, при перемещении моей камеры вручную все работает отлично. Итак, что случилось с матрицей вращения, которую я получаю?
к тому же здесь пост, который выглядит liky моей проблемы, я думаю. Возможно, его легче понять там: http://stackoverflow.com/questions/9342283/orientation-and-android-opengl-with-sensor-not-working-the-way-i-expected/11739878#11739878 –