glDrawArrays有时会画黑色

时间:2012-01-15 14:44:16

标签: iphone ios opengl-es

我正在使用以下代码在某个指定的坐标处绘制绿线

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方法,偶尔也会变黑,或者不会完全绘制。我检查了我通过的坐标,看起来很好。 有什么东西我不见了吗?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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