Хорошо, так что вы хотите повернуть квад, но не текстуру, верно?
Вы можете легко сделать это в своих шейдерах (некоторые части отсутствуют, как, например, объявление сэмплера)
Вершинный шейдер:
out vec2 UV;
main(){
gl_Position = MVP * Position;
UV = gl_Position.xy / gl_Position.w;
}
Фрагментный шейдер:
in vec2 UV;
main(){
outColor = texture(sampler, UV);
}
Более того, вам даже не нужно предоставлять координаты текстуры: они вычисляются во время выполнения.
Другая возможность, менее инвазивная, если у вас нет шейдеров, - это пересчитать ваши UV так же, как в вершинном шейдере.
Еще одна возможность - glBitmap, но этокакой-то очень старый кусок API ...