退化的顶点和GL_LINE_STRIP

我在iOS 5.1上

我试图在同一个顶点数组中显示几批线,我想使用退化的顶点将它们分开。 但似乎没有工作。 我在每一批顶点之间画线。

谷歌search问题给了我的结果,退化的顶点与GL_LINE_STRIP不兼容,但我不确定。 有人可以证实吗? 还有什么替代方法?

据我所知,只能使用单个顶点数组和GL_LINE_STRIP绘制一条连续的线。 另一种方法是使用GL_LINES,它将每个顶点对作为一个独立的线段。 要获得连续的线条,请复制上一个线段的最后一个顶点作为您的顶点数组中的下一个线段的起点。

你可能想到的一种可能性是使用具有一些奇怪值的顶点(比如无穷大或者0),但是那些最有可能在一些疯狂的距离处被渲染为正常点(因此你会得到奇怪的修剪线)。 所以这通常不起作用。

绘制三angular形条时,可以使用退化三angular形重新开始绘制条。 这是通过复制一个顶点(或更好的两个连续的),然后导致一个三angular形(或者更好的四个)退化为一条直线,因此具有零区域(并且不被绘制)。 但让我们看看一个线条。 当在那里复制一个顶点时,会得到一个退化为点的线(因此不会被绘制),但是一旦开始下一个线条,就必须得到一个新的顶点,并且由于两个不同的顶点始终构成一个有效的线,你看到通过复制顶点你不能得到一个线条重新启动。

因此,没有真正的方法可以使用退化的顶点将多个线条放入一个绘制调用中(尽pipe现代桌面GL还有其他方法可以实现)。 Drewsmits认为,最好的想法可能就是使用一个普通的线条集( GL_LINES )。 好吧,你会大约加倍的顶点数量(如果你的带很长),但从批处理的驱动程序开销可能会超出额外的内存和复制开销。

尽pipe无法在线条中使用退化顶点,但是可以使用原始重新开始索引(通常是数字types可能的最大索引值),也称为Direct3D术语中的条带切割索引。 它可以使用glPrimitiveRestartIndex进行configuration。