Для повышения производительности не следует использовать немедленный рендеринг в режиме, а вместо этого использовать буфер вершин (на процессоре или графическом процессоре) и рисовать, используя методы glDrawArrays и т. П. Масштабирование / вращение координат текстуры путем изменения множителя матрицы текстуры - это не проблема производительности, вы просто устанавливаете небольшие значения для всей сетки. Наиболее важным узким местом здесь является передача данных на каждую вершину (таких как цвет, положение и координаты текстуры) в графический процессор, и это то, чем могут помочь объекты буфера вершин в графическом процессоре.
Если сетка, которую вы хотите нарисовать на экране, является статической, то есть вы устанавливаете ее один раз, и вам не нужно изменять ее (части) позже, вы можете сгенерировать координаты текстуры для всей сетки, включая все углы. ) только однажды. Позже вы можете изменить координаты текстуры для всей сетки, используя множитель матрицы текстуры. Однако, если вы хотите изменить разные части сетки, используя различные преобразования, вам придется разделить сетку на части. Из того, что вы описали, я понимаю, что вы хотите нарисовать прямоугольник с закругленными углами, который содержит изображение внутри, что может быть выполнено с помощью одной статической сетки (список данных на каждую вершину).
Наконец, GL_QUADS также не рекомендуется в современных спецификациях OpenGL. В любом случае, они не предлагают большой функциональности, поэтому вам следует переключить QUADS на треугольники или треугольные полосы / вееры.