glDrawArrays有时会绘制黑色



我使用以下代码在一些指定的坐标处画一条绿线

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);

问题是,偶尔即使调用draw方法,线条也会变黑或无法完全绘制。我检查了我经过的坐标,它们看起来很好。有什么东西我遗漏了吗?

GL_LINE_SMOOTH从未是glEnableClientState()可接受的参数。

这可能不是问题的根源,您可能已经注意到了,但将数组传递给没有'&'的函数不是正确的吗还是与"[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);似乎是正确的语法。

最新更新