如果您只想绘制虚线,只需将 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 虚线/空线,因为在我的例子中,它代表每个游戏帧的游戏实体的位置——并且游戏帧不一定都等长,因此线:空间比率不一致。
绘制它的代码如下所示:
公共无效绘制(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)进行绘制来跳过某些顶点。但是,我没有可以向您展示的示例。:/