Похоже, что объекты NinePatchDrawable не позволяют вам получить доступ к базовым растровым изображениям, но я полагаю, вы можете нарисовать их в Canvas и затем прочитать полученное растровое изображение из этого.Это, вероятно, решит и вашу проблему со степенью двойки.
Затем можно прочитать область заполнения с помощью getPadding () и преобразовать эти позиции в диапазон 0..1 для использования в качестве координат текстуры.
Затем вВ OpenGL вы будете рисовать текстурированный кирпич, используя сетку из девяти квадратов, как символ «#».Ваши текстурные координаты для вершин будут фиксированными и будут соответствовать вашим отступам из девяти патчей.Ваши координаты будут зависеть от масштабирования вашего блока.Вы бы сохранили ваши угловые квадраты того же размера и масштабировали центральный квад по желанию.(Оставшиеся четырехугольники будут масштабироваться по одному измерению по мере необходимости, чтобы все было объединено).
Лично я был бы склонен забыть о девяти патчах для Android и вместо этого принять соглашение для кирпичной графики, где (скажем,) средние 50% ширины и высоты растягиваются, а 25% сечения по периметру - нет.Однако зависит от того, сколько работы вы выбрасываете.