我正在使用以下代码在某个指定的坐标处绘制绿线
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方法,偶尔也会变黑,或者不会完全绘制。我检查了我通过的坐标,看起来很好。 有什么东西我不见了吗?
答案 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);
似乎是正确的语法。