2012-01-15 9 views
1

を描く私はこの問題は、たまにdrawメソッドが呼び出された場合でもということで、ラインが黒くなり、いくつかの指定された座標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); 

で緑の線を描画するには、次のコードを使用していますまたは完全に描画されません。私はパスした座標をチェックして、彼らは上手く見えます。 私に行方不明のものがありますか?

答えて

1

GL_LINE_SMOOTH決してglEnableClientState()に許容可能な引数となっています。

+0

代わりに代わりに何を使用する必要がありますか? – Vlad

+0

してください、glEnable(GL_LINE_SMOOTH); – Keugyeol

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);は正しい構文のようです。