Я пытаюсь нарисовать простой куб, повернутый на 45 градусов вокруг оси y. Мой код рисования выглядит так:
- (void) Draw:
{
// Set the viewport
//glFrustumf( -1.0, 1.0, -1.0/(backingWidth/backingHeight), 1.0/(backingWidth/backingHeight), 0.01, 10.0 );
glViewport ( 0, 0, backingWidth, backingHeight );
// Clear the color buffer
glClear ( GL_COLOR_BUFFER_BIT );
if( [context API] == kEAGLRenderingAPIOpenGLES2 )
[self DrawES2];
else
[self DrawES1];
glDrawElements(GL_TRIANGLES, sizeof(indices)/sizeof(GLubyte), GL_UNSIGNED_BYTE, indices);
}
- (void) DrawES2
{
// Use the program object
glUseProgram ( programObject );
// Load the vertex data
glVertexAttribPointer ( 0, 3, GL_FLOAT, GL_FALSE, 0, vVertices );
glEnableVertexAttribArray ( 0 );
// Load transformation matrix
GLint mvpLoc = glGetUniformLocation( programObject, "u_mvpMatrix" );
glUniformMatrix4fv( mvpLoc, 1, GL_FALSE, yRotation );
}
- (void) DrawES1
{
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glRotatef( 45, 0, 1, 0 );
glVertexPointer(3, GL_FLOAT, 0, vVertices);
glEnableClientState(GL_VERTEX_ARRAY);
glColor4f(1.0, 0.0, 0.0, 1.0);
}
То, что я получаю, выглядит примерно так:
введите описание ссылки здесь
Я хочу что-то вроде этого:
введите описание ссылки здесь
Когда я раскомментирую строку glFrustum, я не получаю изменений в версии ES1 и приложение вылетает в версии ES2. Я новичок в OpenGL, поэтому я думаю, что могу сделать что-то действительно не так, но как мне получить перспективный вид, чтобы куб выглядел правильно?