Я надеюсь, что кто-то может помочь мне понять GLViewport и что произойдет, когда мы изменим его размер
Это проиллюстрирует мою путаницу ....
Итак, здесь я застрял в середине экрана. Если мой GLViewport соответствует ширине и высоте устройства, я получаю то, что находится на первом (левом) изображении. Именно то, что я ожидал.
- Разрешение устройства, 2560 х 1600
- Разрешение области просмотра 2560 x 1600
- Квадратный размер 200 х 200 (Обратите внимание, что изображение выше не в масштабе !!! :-))
- Квадратная форма, выглядит как квадрат
Теперь для второй (правой руки) картинки ...
- Разрешение устройства, 2560 х 1600
- Разрешение области просмотра 2560 x 1200 (по центру по вертикали)
- Квадратный размер (200, 200)
- Четырехугольная форма, выглядит как прямоугольник
Мой вопрос: почему квад теперь отображается в виде прямоугольника, а не квадрата? В журнале я подтвердил, что мой квадроцикл имеет размер 200 x 200 пикселей - конечно, размер физических пикселей остается неизменным? Они не могут измениться. и так, что здесь происходит?
Я думал (явно неправильно), что когда я масштабировал область просмотра, она буквально отсекала пиксели.
Был бы признателен, если бы кто-то мог объяснить, как это работает.
редактировать
В настоящее время я настраиваю свой видовой экран следующим образом:
width = (int) Math.min(deviceWidth, deviceHeight * 1.702127659574468);
height = (int) Math.min(deviceHeight, deviceWidth / 1.702127659574468);
ratio = width / height;
GLES20.glViewport(offsetX, offsetY, width, height);
Matrix.orthoM(mProjMatrix, 0, -ratio, ratio, -1, 1, 3, 7);
offsetX и offsetY таковы, что при наличии почтовых ящиков область просмотра центрируется.