Отрисовка границы постоянной ширины вокруг изображения в OpenGL на Android и iOS - PullRequest
2 голосов
/ 28 мая 2020

Я пытаюсь нарисовать рамку вокруг изображения, которое отображается с использованием OpenGL в приложении Android и iOS. Сейчас я делаю это так: указываю по 3 вершины вокруг каждого угла изображения, как показано на схеме, и заполняю их, рисуя треугольники.

image link

Я вычисляю эти вершины путем добавления / вычитания абсолютного значения, называемого BORDER_WIDTH , которое устанавливается в число с плавающей точкой. Например, 3 вершины вокруг левого угла визуализированного изображения (отмечены как 0,1,2 на изображении, указанном выше) вычисляются следующим образом.

[bottom_left_viewport_vertex[0] - BORDER_WIDTH, bottom_left_viewport_vertex[1], 0.0f,
bottom_left_viewport_vertex[0] - BORDER_WIDTH, bottom_left_viewport_vertex[1] - BORDER_WIDTH, 0.0f,
bottom_left_viewport_vertex[0], bottom_left_viewport_vertex[1] - BORDER_WIDTH, 0.0f] 

Этот метод вызывает 2 проблемы:

  1. Граница намного толще на устройствах iOS по сравнению с устройствами Android, вероятно, из-за дисплея Retina .
  2. Ширина границы на верх и низ изображения отличается от такового на сторонах изображения.

Каков правильный способ решить такую ​​проблему? Спасибо.

1 Ответ

1 голос
/ 29 мая 2020

Граница намного толще на устройствах iOS по сравнению с устройствами Android, вероятно, из-за дисплея Retina.

Определите DPI с помощью DisplayMetrics и настройте значение BORDER_WIDTH как подходящее.

Ширина границы сверху и снизу изображения отличается от ширины по бокам изображения.

Координаты области просмотра находятся между нулем и один, независимо от соотношения сторон. Если вы не корректируете соотношение сторон, тогда все будет масштабироваться с помощью этого. Обычно это не так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...