Используете gluLook для перемещения камеры в 2D игре для iPhone? - PullRequest
0 голосов
/ 03 февраля 2011

Я пытаюсь использовать gluLookAt для перемещения камеры в моей игре для iPhone, но каждый раз, когда я пытаюсь использовать gluLook, мой экран просто становится пустым (в данном случае серым)

I 'Я пытаюсь сделать простой треугольник и переместить камеру, это мой код:

для настройки моей сцены я делаю:

glViewport(0, 0, backingWidth, backingHeight);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glRotatef(-90.0, 0.0, 0.0, 1.0); //using iPhone in horizontal mode
glOrthof(-240, 240, -160, 160, -1, 1);
glMatrixMode(GL_MODELVIEW);

тогда мой код "рендеринга треугольника" выглядит следующим образом:

GLfloat  triangle[] = {0, 100, 100, 0, -100, 0,};
glClearColor(0.7, 0.7, 0.7, 1.0);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glEnableClientState(GL_VERTEX_ARRAY);
glColor4f(1.0, 0.0, 0.0, 1.0);
glVertexPointer(2, GL_FLOAT, 0, &triangle);
glDrawArrays(GL_TRIANGLES, 0, 6);
glDisableClientState(GL_VERTEX_ARRAY);

Это рисует красный треугольник в середине экрана, когда я пытаюсь применить gluLookAt (я получил реализацию функции от Cocos2D, поэтому я считаю, что это правильно), я делаю:

glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(0,0,1,0,0,0,0,0,1); // try to move the camera a bit ?

GLfloat  triangle[] = {0, 100, 100, 0, -100, 0,};
glClearColor(0.7, 0.7, 0.7, 1.0);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glEnableClientState(GL_VERTEX_ARRAY);
glColor4f(1.0, 0.0, 0.0, 1.0);
glVertexPointer(2, GL_FLOAT, 0, &triangle);
glDrawArrays(GL_TRIANGLES, 0, 6);
glDisableClientState(GL_VERTEX_ARRAY);

Это приводит меня к серому экрану (glClearColor - серый), я перепробовал все виды вещей и прочитал, что я нашел о gluLookAt в сети, но не повезло :(, если кто-то может мне объяснитьили покажите мне, как двигать камеру сверху вниз (зельда и т. д.), я был бы очень признателен.

Спасибо!

1 Ответ

0 голосов
/ 04 февраля 2011

Последние 3 аргумента выглядят неверно.Вы создаете вектор «вверх» в положительном направлении Z, что означает, что направление вашего взгляда параллельно плоскости треугольника (поэтому треугольник больше не виден).Вы можете попробовать:

gluLookAt(0,0,1,0,0,0,0,1,0);

Однако, если все, что вы хотите сделать, это переместить вид вверх / вниз / влево / вправо, тогда вы можете просто использовать glTranslatef вместо этого, например:

glTranslatef(100.0f, 20.0f, 0.0f);

Это должно сделать ваш треугольник 100 пикселей вправо и 20 пикселей вверх.

...