Как мне перевернуть спрайт / текстуру в OpenGLES?
-
01-07-2019 - |
Вопрос
У меня есть спрайт, загруженный в виде текстуры, и мне нужно анимировать его, позволяя ему "поворачиваться" влево или вправо - по сути, иногда мне нужно его "перевернуть".Я знаю, что в OpenGL есть gltranslate, который перемещает объект, и glrotate, который его вращает.Есть ли метод, который просто переворачивает его по одной оси?Если нет, то как бы вы этого добились?
Решение
Я не возился с точечными спрайтами, но я считаю, что это текстуры.Текстуры имеют текстурные матрицы, что означает, что вы можете использовать glTranslatef()
, glScalef()
и glRotatef()
на них.
Я бы попробовал что-нибудь вроде glScalef(-1,1,1);
который изменил бы координату текстуры на ось X.
Как я уже сказал, я не играл с точечными спрайтами, но и с текстурными матрицами не возился.Тем не менее, они кажутся весьма полезными.
Обновить: Тем временем я поиграл с текстурными матрицами.Точно так же, как вы переключаетесь между матрицами modelview и projection, вы можете переключиться на texture matrix;приблизительно: glMatrixMode(GL_TEXTURE);
после чего вы можете выполнить вышеупомянутые операции.
Вы также могли бы просто нарисовать четырехугольник / два треугольника и покончить с этим :)
Другие советы
Вы не можете сделать это с помощью точечных спрайтов OpenGL;хотя вы можете перемещать центр спрайта по кругу, его форма всегда ориентирована одинаково.
Что ты может сделайте это, нарисуйте свои спрайты в виде квадратиков, что позволит вам переворачивать их и возиться с ними так, как вы хотите.Существуют учебные пособия по ручному рисованию спрайтов (они же рекламные щиты) на НеХэ