OpenGL и 9-патч. - PullRequest
       15

OpenGL и 9-патч.

4 голосов
/ 21 января 2012

Я делаю игру для кирпичей на андроиде с opengl, и я решил, что хочу использовать 9-патч, так что, например, кирпич может масштабироваться, чтобы быть шире или выше easilly. Это возможно?

Кроме того, я сделал свои изображения, а затем использовал draw9patch.exe в папке инструментов Android для создания изображений. Это была довольно трудоемкая работа, и теперь оказалось, что к каждой стороне добавлено несколько пикселей, поэтому изображения больше не имеют степеней двойки, какими они должны быть.

Итак, как мне использовать девять патчей для рисования с openGL?

Ответы [ 3 ]

2 голосов
/ 21 января 2012

Итак, как мне использовать девять патчей для рисования с openGL?

Нет.9-патчи и прорисовки предназначены для использования с обычными классами Android View, а не с OpenGL.Если вы хотите иметь подобное поведение, вам нужно будет реализовать собственную логику рендеринга OpenGL, включая анализ PNG с 9 патчами.

1 голос
/ 21 января 2012

Похоже, что объекты NinePatchDrawable не позволяют вам получить доступ к базовым растровым изображениям, но я полагаю, вы можете нарисовать их в Canvas и затем прочитать полученное растровое изображение из этого.Это, вероятно, решит и вашу проблему со степенью двойки.

Затем можно прочитать область заполнения с помощью getPadding () и преобразовать эти позиции в диапазон 0..1 для использования в качестве координат текстуры.

Затем вВ OpenGL вы будете рисовать текстурированный кирпич, используя сетку из девяти квадратов, как символ «#».Ваши текстурные координаты для вершин будут фиксированными и будут соответствовать вашим отступам из девяти патчей.Ваши координаты будут зависеть от масштабирования вашего блока.Вы бы сохранили ваши угловые квадраты того же размера и масштабировали центральный квад по желанию.(Оставшиеся четырехугольники будут масштабироваться по одному измерению по мере необходимости, чтобы все было объединено).

Лично я был бы склонен забыть о девяти патчах для Android и вместо этого принять соглашение для кирпичной графики, где (скажем,) средние 50% ширины и высоты растягиваются, а 25% сечения по периметру - нет.Однако зависит от того, сколько работы вы выбрасываете.

0 голосов
/ 21 января 2012

, поэтому изображения больше не имеют степеней двойки, которыми они должны быть.

Если вы используете OpenGL-ES 2, это ограничение было снято.Текстуры могут быть произвольного размера.

...