Представьте, что вы стоите на земле и смотрите на куб в небе. Когда вы наклоняете голову, куб движется. Я пытаюсь повторить это, используя OpenGL ES на iPhone, манипулируя наклоном камеры, глядя на простой трехмерный куб, нарисованный вокруг начала координат. Я использую функцию gluLookAt()
из Cocos2d, которая должна эмулировать версию OpenGL, и кажется, что когда я пытаюсь повозиться с любым из значений, мой куб исчезает.
Мой вопрос: Можете ли вы указать здесь использование gluLookAt()
, которое поможет мне начать манипулировать камерой, чтобы я мог понять, как это работает? Мне действительно просто интересно узнать, как наклонять камеру вдоль оси Y.
Вот мой текущий код:
Конфигурация области просмотра
glBindFramebufferOES(GL_FRAMEBUFFER_OES, _viewFramebuffer);
glViewport(0, 0, _backingWidth, _backingHeight);
Матрица проекции
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
// Maybe this should be a perspective projection?? If so,
// can you provide an example using gluPerspective()?
glOrthof(-_backingWidth, _backingWidth,-_backingHeight, _backingHeight, -1, 1);
ModelView Matrix
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt() // What goes here?
Код чертежа
static const GLfloat cubeVertices[] = {
-1.0, -1.0, 1.0,
1.0, -1.0, 1.0,
-1.0, 1.0, 1.0,
1.0, 1.0, 1.0,
-1.0, -1.0, -1.0,
1.0, -1.0, -1.0,
-1.0, 1.0, -1.0,
1.0, 1.0, -1.0,
};
static const GLushort cubeIndices[] = {
0, 1, 2, 3, 7, 1, 5, 4, 7, 6, 2, 4, 0, 1
};
static const GLubyte cubeColors[] = {
255, 255, 0, 255,
0, 255, 255, 255,
0, 0, 0, 0,
255, 0, 255, 255,
255, 255, 0, 255,
0, 255, 255, 255,
0, 0, 0, 0,
255, 0, 255, 255
};
glVertexPointer(3, GL_FLOAT, 0, cubeVertices);
glEnableClientState(GL_VERTEX_ARRAY);
glColorPointer(4, GL_UNSIGNED_BYTE, 0, cubeColors);
glEnableClientState(GL_COLOR_ARRAY);
glDrawElements(GL_TRIANGLE_STRIP, 14, GL_UNSIGNED_SHORT, cubeIndices);