2011-05-13 59 views
0

我使用的OpenGL ES適用於iOS,然而這大概是適用於任何OPENGL場景; 我頂點數組,但只希望吸引其中的一些。在下面的例子中,我想提請從第一到第二點的直線,然後第4到第5位。然而,「中間」第三點是繪製的,而不是第五點。我敢肯定,我失去了一些東西很明顯,我將不勝感激輕推在正確的方向,謝謝!glVertexPointer - 不需要畫出

 float xy[] = { 
     10.0f, 10.0f, 
     110.0f, 10.0f, 
     210.0f, 210.0f, 
     310.0f, 210.0f, 
     110.0f, 120.0f, 
     210.0f, 310.0f 
    }; 

    glClearColor(0.2f, 0.5f, 0.4f, 1.0f); 
    glClear(GL_COLOR_BUFFER_BIT); 

    for(int i = 0; i < 2; i++) { 

     glEnableClientState(GL_VERTEX_ARRAY); 
     int from = (i * 6); 

     glVertexPointer(2, GL_FLOAT, 0, &xy[0]); 
     glDrawArrays(GL_LINE_STRIP, from, 4); 
     glDisableClientState(GL_VERTEX_ARRAY); 

    }; 

回答

3

在你的代碼只需要畫出2個頂點在每次迭代中,而不是4.調用glDrawArrays最後一個參數是頂點計數,而不是組件(浮點)數。

此外,您可以在沒有循環且花費更少精力/代碼/時間的情況下實現相同的結果:創建索引數組,其中包含要繪製的頂點索引,然後使用glDrawElements而不是glDrawArrays。

float xy[] = { ... }; 
int indices[] = { 0, 1, 3, 4 }; 

glClearColor(...); 
glClear(...); 
glVertexPointer(...); 
glEnableClientState(...); 
glDrawElements(GL_LINES, 4, GL_UNSIGNED_INT, indices); 
+0

嗨基督徒,許多感謝,這是非常有幫助的。 – 2011-05-13 13:19:52