Reputation: 3366
I'm using the following code to draw a green line at some specified coordinates
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);
The problem is that once in a while even if the draw method gets called, the line turns black or does not get drawn entirely. i've checked the coordinates i pass and they seem fine. Is there something that i'm missing?
Upvotes: 1
Views: 453
Reputation: 2435
It might not be the source of the problem, and you might have noticed it already, but isn't it correct to pass arrays to the functions without '&' or with '[0]'? i.e.
glVertexPointer(2, GL_FLOAT, 0, &v); // --> &v should be v, or &v[0]
glColorPointer(4, GL_FLOAT, 0, &colors); // --> colors, or &colors[0]
Also, glEnable(GL_LINE_SMOOTH);
seems the correct syntax.
Upvotes: 1
Reputation: 52157
GL_LINE_SMOOTH
has never been an acceptable argument to glEnableClientState()
.
Upvotes: 1