glDrawArrays иногда рисует черным - PullRequest
1 голос
/ 15 января 2012

Я использую следующий код для рисования зеленой линии в определенных координатах

GLfloat colors[] = {0,1,0,1, 0,1,0,0.5};        
CGPoint v[] = {{p1.x, p1.y}, {p2.x, p2.y}};                

glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_COLOR_ARRAY);
glEnableClientState(GL_LINE_SMOOTH);

glLineWidth(10);
glVertexPointer(2, GL_FLOAT, 0, &v);
glColorPointer(4, GL_FLOAT, 0, &colors);
glDrawArrays(GL_LINE_LOOP, 0, 2);

glDisableClientState(GL_LINE_SMOOTH);
glDisableClientState(GL_COLOR_ARRAY);
glDisableClientState(GL_VERTEX_ARRAY);

Проблема в том, что время от времени, даже если вызывается метод рисования, линия становится черной илине вытащить полностью.Я проверил координаты, которые я передаю, и они кажутся в порядке.Есть что-то, чего мне не хватает?

Ответы [ 2 ]

1 голос
/ 22 июня 2012

Возможно, это не источник проблемы, и вы, возможно, уже заметили это, но не правильно ли передавать массивы в функции без '&' или с '[0]'?то есть

glVertexPointer(2, GL_FLOAT, 0, &v);     // --> &v should be v, or &v[0]
glColorPointer(4, GL_FLOAT, 0, &colors); // --> colors, or &colors[0]

Кроме того, glEnable(GL_LINE_SMOOTH); кажется правильным синтаксисом.

1 голос
/ 18 января 2012

GL_LINE_SMOOTH имеет никогда был приемлемым аргументом для glEnableClientState().

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