OpenGL и 9patch drawables

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

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

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

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

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

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

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

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

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

Так что изображения уже не обладают силой двух, что они должны быть.

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