2011-04-04 59 views
0

我想绘制一个简单的立方体,围绕y轴旋转45度。我的绘制代码如下所示:openGL ES如何获得透视图?

- (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); 
} 

我得到的是这样的: enter link description here

我想是这样的: enter link description here

当我取消了glFrustum线我得到ES1版本中没有变化,ES2版本中的应用程序崩溃。我是OpenGL的新手,所以我想我可能会做一些非常错误的事情,但是如何获得透视图以便多维数据集看起来正确?

回答