Witam. Zaczynam swoją przygodę z OpenGL+GLUT. Duże problemy mam z obsługą kamery.
Moim obiektem jest ( chwilowo ) taki trójkąt:
void renderScene(void)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glTranslatef(xpos,ypos,0.0);
gluLookAt(xpos,ypos,0,0,-1,0,1,0);
glBegin(GL_TRIANGLES);
glVertex3f(-0.5,-0.5,0.0);
glVertex3f(0.5,0.0,0.0);
glVertex3f(0.0,0.5,0.0);
glEnd();
glPopMatrix();
glutSwapBuffers();
}
Program w przyszłości przekształci się w prostą grę 2D z widokiem z góry. Chcę, aby kamera posuwała się wraz z moim trójkątem, dlatego wpisałem coś takiego:
void processSpecialKeys(int key, int x, int y) {
if (key == GLUT_KEY_RIGHT)
xpos = xpos+0.1;
if (key == GLUT_KEY_LEFT)
xpos = xpos-0.1;
if ( key==GLUT_KEY_UP)
ypos = ypos+0.1;
if (key==GLUT_KEY_DOWN)
ypos = ypos-0.1;
}
I mam problem. Funkcja gluLookAt nie działa tak jakbym sobie tego życzył. Wydaje mi się że jej 3 pierwsze argumenty określają pozycję kamery a 3 kolejne - kierunek "patrzenia", jednak gdy chcę aby jej współrzędne zmieniały się tak jak współrzędne trójkąta, po kompilacji wygląda to tak jakby kamera obracała się wokół niego.
Moje drugie pytanie dotyczy zamiany trójkąta na jakiegoś GIFa. Niestety nie wiem jakiej funkcji do tego użyć.