2013-11-22 2 views
0

Я схожу с ума. Все, что я хочу сделать, это рисовать простой линейный цикл. Но все, что я получаю, это диагональная линия от начала до (-0,5, 0,0, -0,5). Что я делаю не так?Попытка нарисовать простую линейную петлю

@interface Frustum : NSObject { 
    GLuint _vertexArray; 
    GLuint _vertexBuffer; 
    GLfloat left_side[4][3]; 
} 

- (id) init; 
- (GLuint) getVertexArray; 
- (void) render; 

@end 


@implementation Frustum 

- (id) init { 
     left_side[0][0] = -0.5f; left_side[0][1] = 0.0f; left_side[0][2] = -0.5f; 
     left_side[1][0] = 0.5f; left_side[1][1] = 0.0f; left_side[1][2] = -0.5f; 
     left_side[2][0] = 0.5f; left_side[2][1] = 0.0f; left_side[2][2] = -0.5f; 
     left_side[3][0] = -0.5f; left_side[3][1] = 0.0f; left_side[3][2] = -0.5f;   

     glGenVertexArraysOES(1, &_vertexArray); 
     glBindVertexArrayOES(_vertexArray); 

     glGenBuffers(1, &_vertexBuffer); 
     glBindBuffer(GL_ARRAY_BUFFER, _vertexBuffer); 

     // SOMETHING IS WRONG IN HERE, BUT I DON'T KNOW WHAT!!!!! 
     glBufferData(GL_ARRAY_BUFFER, sizeof(GLfloat)*12, left_side, GL_STATIC_DRAW); 
     glEnableVertexAttribArray(GLKVertexAttribPosition); 
     glVertexAttribPointer(GLKVertexAttribPosition, 3, GL_FLOAT, GL_FALSE, sizeof(left_side), NULL); 

     glBindVertexArrayOES(0); 

    } 

    return self; 
} 

- (void) render { 
    glLineWidth(2.0f); 
    glDrawArrays(GL_LINE_LOOP, 0, 4); 
} 

ответ

1

Попробуйте изменить значения y или z, чтобы сформировать фактический цикл.

(-.5, 0, 0) 
(.5, 0, 0) 
(.5, .5, 0) 
(-.5 .5, 0) 

сформирует линейный цикл. У вас только один и тот же y, так что это линия.

Помните, что камера по умолчанию будет смотреть вниз по оси -z, поэтому она не увидит изменений в z (если вы не повернули камеру).

+0

Не могу поверить, что я провел много времени и не видел, что я просто рисую одну и ту же строку дважды. Спасибо что подметил это. Кстати, я не упоминал, но моя камера была повернута, чтобы смотреть вниз по оси х. Спасибо! – Alex

+0

На самом деле зеленая галочка является синонимом «спасибо» – bobobobo

+0

Невозможно нажать на нее в течение 10 минут. – Alex

Смежные вопросы