Как мне перевернуть спрайт / текстуру в OpenGLES? - PullRequest
6 голосов
/ 19 сентября 2008

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

Ответы [ 2 ]

6 голосов
/ 23 ноября 2008

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

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

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

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

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

0 голосов
/ 19 сентября 2008

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

То, что вы можете сделать, это нарисовать свои спрайты в виде четырехугольников, что позволяет вам переворачивать, вращать и связываться с ними любым удобным вам способом. На NeHe

есть руководства по рисованию спрайтов (так называемых рекламных щитов).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...