Итак, я пытаюсь изучить OpenGL 2.0 на Android, я действительно играл в OpenGL 1 на iOS и очень наслаждался этим.Android: OpenGL 2.0 камера первого лица
Мой простой вопрос о камере и создания 3D среды, в которой вы можете передвигаться (Первый человек)
Должен ли я использовать
Matrix.setLookAtM(mViewMatrix, 0, eyeX, eyeY, eyeZ, lookX, lookY, lookZ, upX, upY, upZ);
управлять камерой и где я нахожусь в мир (обновлено onDrawFrame), или установив, что на onSurfaceCreated (один раз) и с помощью
Matrix.setIdentityM(mViewMatrix, 0);
Matrix.translateM(mViewMatrix, 0, mMoveY, 0.0f, mMoveX);
Matrix.rotateM(mViewMatrix, 0, mDeltaY, 1.0f, 0.0f, 0.0f);
Matrix.rotateM(mViewMatrix, 0, mDeltaX, 0.0f, 1.0f, 0.0f);
вместо который чувствует, как я вращающаяся мир вокруг меня.
Я видел примеры, когда они делают либо, на OpenGL 1 я использовал для использования GLLookAt
Используйте тот, который дает правильные результаты, очевидно. Оба могут использоваться, поскольку 'setLookAt' является просто более высокой абстракцией над переводами и вращениями. –
Используйте тот, который лучше всего подходит вам и вашему прецеденту. В OpenGL все, что вы делаете, вращает мир вокруг вас, в действительности нет камеры (и тем более в ES 2, где в любом случае вы полностью контролируете трансформацию в шейдерах). В конце 'setLookAt' не делает ничего, кроме вычисления вращения и перевода * * мира *, таким же образом, как и в случае вызовов' translate' и 'rotate', это просто лучше (или более высокий уровень) для определенных случаев использования. Если у вас уже есть значения 'mMove' и' mDelta', второй метод кажется более простым. –
Просьба объяснить мне, как выглядит то же самое, что вызвать кучу перевода и поворот вызовов методов? Часть перевода действительно не такая большая работа, но вращение должно выполнять операции sin/cos для создания матрицы вращения, а затем умножить 2 матрицы. LookAt, с другой стороны, непосредственно вставляет 3 базовых вектора и перевод в матрицу.Основными векторами являются: крест по оси X (вперед, вверх), ось Y вверх, ось Z вперед = глазное яблоко. Каждый из них представлен столбцом соответственно. Хотя я согласен, если результат тот же, используйте то, что подходит вам лучше всего. –