Игральные карты «3D» вращаются в OpenGL - перспектива? - PullRequest
1 голос
/ 19 августа 2010

(Mac OS X, Какао, C / C ++, OpenGL, немного математически.)

Project - это игра в покер в реальном времени (30 кадров в секунду) с 2D-видом. Представление OpenGL настроено для ортогональной проекции с использованием glOrtho; камера всегда смотрит прямо на карты / стол. На сегодняшний день это, по сути, механизм компоновки 2D-изображений.

Мои игральные карты представляют собой предварительно созданные текстуры (с альфа-каналом), которые отображаются следующим образом:

glBegin(GL_TRIANGLE_STRIP);
    glTexCoord2f(0.0, 0.0);
    glVertex3d(startDraw_X, startDraw_Y, 0.0);

    glTexCoord2f(1.0, 0.0);
    glVertex3d(endDraw_X, startDraw_Y, 0.0);

    glTexCoord2f(0.0, 1.0);
    glVertex3d(startDraw_X, endDraw_Y, 0.0);

    glTexCoord2f(1.0, 1.0);
    glVertex3d (endDraw_X, endDraw_Y, 0.0);
glEnd();

Это хорошо работает и обеспечивает отображение пикселей 1: 1 для высокого качества изображения.

ВОПРОС: как я могу (дешево, быстро) «перевернуть» или исказить мою карту с помощью OpenGL? Поворотная часть не сложная, но у меня проблемы с перспективой.

В частности, я имею в виду горизонтальное переключение UIViews в приложениях для iPhone (например, музыка). UIView будет переворачиваться на , сжимаясь по горизонтали, с видом перспективы («задние» координаты вида будут сжиматься по вертикали.)

Спасибо за любую помощь или советы.

Ответы [ 2 ]

2 голосов
/ 19 августа 2010

Вместо использования glOrtho для настройки ортографической проекции используйте glFrustum для настройки перспективной проекции.

0 голосов
/ 19 августа 2010

Поскольку ваша игра 2D, я предполагаю, что это камера сверху, верно?

В этом случае вы можете установить матрицу проекции в качестве проекционной, расположить камеру в центре стола, на приличной высоте (> 1,2 x ширина стола в зависимости от поля зрения) и не изменятьчто-нибудь еще.

Возможно, вам придется установить высоту вашей карты (и других игровых предметов) намного ближе к столу, чем она может быть в настоящее время (поскольку в орто-направлении дельта в 10 метров вдоль Z не будетбыть замеченным).

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

...