openGL ES как получить перспективный вид? - PullRequest
0 голосов
/ 04 апреля 2011

Я пытаюсь нарисовать простой куб, повернутый на 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, поэтому я думаю, что могу сделать что-то действительно не так, но как мне получить перспективный вид, чтобы куб выглядел правильно?

1 Ответ

1 голос
/ 04 апреля 2011

Просто скопируйте логику gluPerspective().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...