Как изменить перспективу трехмерного куба в OpenGL ES? - PullRequest
0 голосов
/ 02 ноября 2011

Я рисую куб с помощью OpenGL ES, и я хочу иметь вышеупомянутую перспективу. Но я не знаю, что мне следует изменить ... Может быть, вы можете помочь.

- (void)render:(CADisplayLink*)displayLink {
    //-(void) render{

    glClearColor(255.0, 255.0/255.0, 255.0/255.0, 1.0);
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glEnable(GL_DEPTH_TEST);    

    //projection
    CC3GLMatrix *projection = [CC3GLMatrix matrix];
    float h = 4.0f * self.frame.size.height / self.frame.size.width;


    [projection populateFromFrustumLeft:-2 andRight:2 andBottom:-h/2 andTop:h/2 andNear:4 andFar:8];

      glUniformMatrix4fv(_projectionUniform, 1, 0, projection.glMatrix);

    CC3GLMatrix *modelView = [CC3GLMatrix matrix];

  //  _currentScaling += displayLink.duration * 1.0;


    [modelView populateFromTranslation:CC3VectorMake(sin(30), _currentScaling , -7)];

    [modelView rotateBy:CC3VectorMake(0, -15, 0)];


   // [modelView scaleByY:_currentScaling];


    if(_currentScaling > 2 ){
        [displayLink invalidate];

        _running = 1;
    //    scale = 0;
    }

    glUniformMatrix4fv(_modelViewUniform, 1, 0, modelView.glMatrix);

    // 1
    glViewport(0, 0, self.frame.size.width, self.frame.size.height);

    // 2
    glVertexAttribPointer(_positionSlot, 3, GL_FLOAT, GL_FALSE, 
                          sizeof(Vertex), 0);
    glVertexAttribPointer(_colorSlot, 4, GL_FLOAT, GL_FALSE, 
                          sizeof(Vertex), (GLvoid*) (sizeof(float) * 3));

    // 3
    glDrawElements(GL_TRIANGLES, sizeof(Indices)/sizeof(Indices[0]), 
                   GL_UNSIGNED_BYTE, 0);

    [_context presentRenderbuffer:GL_RENDERBUFFER];
}

1 Ответ

1 голос
/ 18 июля 2012

Я недавно начал изучать OpenGL и нашел этот же пример . Я считаю, что вы ищете, чтобы изменить эту строку, чтобы изменить перспективу:

[modelView rotateBy:CC3VectorMake(0, -15, 0)];

и укажите желаемые степени поворота для осей x, y, z.

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