команда glScalef не в центре - PullRequest
0 голосов
/ 01 марта 2011

Привет, ребята, я работаю над игрой, созданной с помощью C ++ и OpenGL.У меня есть анимированный спрайт, которого я использую в качестве главного героя.Когда вы нажимаете клавишу «a», он бежит назад, а когда вы нажимаете клавишу «d», он бежит вперед.Я использую команду glScalef, чтобы перевернуть спрайт, когда он бежит назад.Однако, когда он перевернут, местоположение зеркала - это край спрайта, а не центр где, поэтому он выглядит так, как будто он прыгает с одного места на другое.Есть идеи, чтобы помочь?Это строка glScalef (mirrorX, 1.0,1.0);

Если она равна 1, она обращена вперед, или если -1, то она назад.У меня также есть видео моей проблемы.http://www.youtube.com/watch?v=SCi6sotj-94 Это довольно плохое качество, но вы можете увидеть это, когда он идет вперед и назад.Заранее спасибо, ребята

1 Ответ

3 голосов
/ 01 марта 2011

Ваше масштабирование просто не применяется от центра вашего спрайта.Из вашего видео ваш текущий код:

// apply the rotation around the center of the sprite
glTranslatef(centerX, centerY, 0)
glRotatef(theta, 0, 0, 1)
glTranslatef(-centerX, -centerY, 0)
glScalef(mirrorX, 1, 1)

Вы должны попытаться изменить масштаб от центра вашего спрайта:

// apply the rotation and scale from the center of the sprite
glTranslatef(centerX, centerY, 0)
glRotatef(theta, 0, 0, 1)
glScalef(mirrorX, 1, 1)
glTranslatef(-centerX, -centerY, 0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...