Движение камеры. Как мне переместить камеру? - PullRequest
1 голос
/ 17 января 2011

В настоящее время у меня настроен рендерер OpenGl, который отображает 2-мерный квадрат и еще 2-мерную форму.С помощью клавиш пользователь может перемещать квадрат вверх вниз влево и вправо.Это делается путем перевода квадрата на основе значений, измененных в зависимости от того, нажимает ли пользователь вверх вниз влево, например, если пользователь нажимает вправо, это будет означать перевод gl.glTranslatef (rightdisplacement, 0, 0);и т.д. Движение работает нормально, но я не могу понять, как заставить камеру следовать за квадратом, когда он продолжает двигаться.Я хотел бы переместить квадрат и заставить камеру двигаться в том же направлении.

1 Ответ

1 голос
/ 18 января 2011

Если вы делаете 2D-рендеринг, вы, вероятно, вызываете glOrtho где-нибудь, чтобы определить свою систему координат. Полное предположение, но ваш код может выглядеть примерно так:

glOrtho( 0, screenWidth, 0, screenHeight, -1, 1 );

Здесь вы определяете положение вашей камеры. Создайте переменные положения камеры x и y и вместо этого вызовите

glOrtho( camX - screenWidth/2, camX + screenWidth/2, camY - screenHeight/2, camY + screenHeight/2, -1, 1 );

Убедитесь, что это называется каждый кадр, поскольку положение камеры, очевидно, изменится. Ваш код рендеринга может выглядеть примерно так:

// clear framebuffer

glMatrixMode( GLES10.GL_PROJECTION );                
glLoadIdentity();        
glOrtho( camX - screenWidth/2, camX + screenWidth/2, camY - screenHeight/2, camY + screenHeight/2, -1, 1 );

glMatrixMode( GLES10.GL_MODELVIEW );                 
glLoadIdentity();

// draw your stuff                                 
...