2008-09-19 4 views
6

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

+0

Вы имеете в виду повернуть его, как фото с застрял на середине, и вращение влево и вправо? Или вы имеете в виду флип, как флип-карту? – freespace 2008-09-19 16:29:31

ответ

6

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

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

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

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

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

0

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

Что вы can do is draw your sprites as quads, который позволяет вам переворачивать, вращать и беспорядок с ними любым способом, который вы хотите. Есть инструкции по ручному рисованию спрайтов (aka billboards) на NeHe

Смежные вопросы