Марио Карт "зеркальный режим" - OpenGL - PullRequest
0 голосов
/ 04 февраля 2012

Мне интересно, как разработчики таких игр, как Mario Kart, переходят на смену ориентации своих уровней.Есть ли простой способ сделать это в OpenGL.Для тех, кто не знает, если бы вы играли на уровне в «зеркальном» режиме, дверь, которая обычно находится слева, была бы справа.

Вот небольшой пример

Многоугольник с этими четырьмя вершинами

X      Y


Z      W

Будет

Y      X


W      Z

1 Ответ

3 голосов
/ 04 февраля 2012

Многоугольник с этими четырьмя вершинами

Вам это не нужно.

  1. Установите матрицу зеркального преобразования.Зеркальная матрица - это та, которая масштабируется по отрицательному значению.glScalef(-1.0f, 1.0f, 1.0f), например, зеркало по оси X.
  2. Звоните glFrontFace с GL_CW.Т.е. измените переднюю грань на «противоположное» значение.
  3. Рендеринг сцены.

Тот же принцип можно использовать с шейдерами 3.0, даже если вам придется использовать что-то другое для сборки

-1 0 0 0 
 0 1 0 0
 0 0 1 0
 0 0 0 1

Матрица шкалы

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

...