Vlad
Vlad

Reputation: 3366

glDrawArrays sometimes draws black

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

Answers (2)

Keugyeol
Keugyeol

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

genpfault
genpfault

Reputation: 52157

GL_LINE_SMOOTH has never been an acceptable argument to glEnableClientState().

Upvotes: 1

Related Questions