Как мне перевернуть спрайт / текстуру в OpenGLES?

StackOverflow https://stackoverflow.com/questions/103421

  •  01-07-2019
  •  | 
  •  

Вопрос

У меня есть спрайт, загруженный в виде текстуры, и мне нужно анимировать его, позволяя ему "поворачиваться" влево или вправо - по сути, иногда мне нужно его "перевернуть".Я знаю, что в OpenGL есть gltranslate, который перемещает объект, и glrotate, который его вращает.Есть ли метод, который просто переворачивает его по одной оси?Если нет, то как бы вы этого добились?

Это было полезно?

Решение

Я не возился с точечными спрайтами, но я считаю, что это текстуры.Текстуры имеют текстурные матрицы, что означает, что вы можете использовать glTranslatef(), glScalef() и glRotatef() на них.

Я бы попробовал что-нибудь вроде glScalef(-1,1,1); который изменил бы координату текстуры на ось X.

Как я уже сказал, я не играл с точечными спрайтами, но и с текстурными матрицами не возился.Тем не менее, они кажутся весьма полезными.

Обновить: Тем временем я поиграл с текстурными матрицами.Точно так же, как вы переключаетесь между матрицами modelview и projection, вы можете переключиться на texture matrix;приблизительно: glMatrixMode(GL_TEXTURE); после чего вы можете выполнить вышеупомянутые операции.

Вы также могли бы просто нарисовать четырехугольник / два треугольника и покончить с этим :)

Другие советы

Вы не можете сделать это с помощью точечных спрайтов OpenGL;хотя вы можете перемещать центр спрайта по кругу, его форма всегда ориентирована одинаково.

Что ты может сделайте это, нарисуйте свои спрайты в виде квадратиков, что позволит вам переворачивать их и возиться с ними так, как вы хотите.Существуют учебные пособия по ручному рисованию спрайтов (они же рекламные щиты) на НеХэ

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top