破線を描くことだけが必要な場合は、GL_LINE_STRIP から GL_LINES に変更するだけです。そうすれば、Open GL は頂点 1 と 2、3 と 4、5 と 6 を接続しますが、3 と 4、または 4 と 5 は接続せず、そこにスペースを残します。これは本質的に半分/半分の比率の点線になります。これは glLineStipple(1, 0101); とほぼ同じです。
IE: 頂点配列内
[0,0,1,1,2,2,3,3,4,4,5,5,6,6]
OpenGL は (0,0) を (1,1) に接続しますが、(1,1) を (2,2) に接続しません [GL_LINE_STRIP の場合]。次に、(3,3) を (4,4) に接続しますが、(4,4) を (5,5) に接続しません。最終的な接続は (5,5) から (6,6) になります。
これは私がそれをしたときのように見えます:
Android の点線
私の場合、ゲームフレームごとのゲームエンティティの位置を表すため、線は50/50のドット/空ではありません.ゲームフレームは必ずしもすべて同じ長さではないため、線とスペースの比率に一貫性がありません.
コードは次のようになります。
public void draw(GL10 gl) { gl.glDisable(GL10.GL_TEXTURE_2D);
gl.glColor4f(color[0], color[1], color[2], color[3] / fade);
//pointsBuffer holds the points on the line
gl.glVertexPointer(2, GL10.GL_FLOAT, 0, pointsBuffer);
gl.glDrawArrays(GL10.GL_LINES, 0, points.length/2);
gl.glEnable(GL10.GL_TEXTURE_2D);
}
より意図的にパターン化された点描を作成する別のアイデアは、代わりにインデックス配列 (glDrawElements) を使用して描画することにより、特定の頂点をスキップすることです。ただし、お見せできる例はありません。:/