2012-03-13 14 views
2

を縮退私は、同じ頂点配列内の行のいくつかのバッチを表示しようとしていたと私は縮退頂点を使用してそれらを分離したかったです。しかし、それは動作していないようです。頂点の各バッチの間にI線が引かれます。問題をグーグルで私はiOSの5.1</p> <p>上だ頂点とGL_LINE_STRIP

は私に頂点を縮退結果を与えたGL_LINE_STRIPと互換性がありませんでしたが、私はそれについて本当によく分かりません。誰かがそれを確認できますか?また、何が選択肢ですか?

答えて

2

私の知る限りでは、あなただけの単一頂点配列とGL_LINE_STRIPを使用して連続線を描くことができます。代わりに、GL_LINESを使用します。GL_LINESは、各頂点ペアを独立した線分として扱います。連続した線を取得するには、前のセグメントの最後の頂点を、頂点配列の次のセグメントの開始点として複製します。

2

奇妙な値(無限大、aw = 0など)の頂点を使用する可能性があるかもしれませんが、それらは狂った距離で通常のポイントとしてレンダリングされるあなたは奇妙なクリッピングされた線を得る)。したがって、これは一般的には機能しません。三角形ストリップを描画するときに

、あなたはストリップを再起動する縮退三角形を使用することができます。これは、頂点(またはより良い2つの連続する頂点)を複製することによって機能し、三角形(またはより良い4つ)が線に縮退し、したがって領域がゼロであり(描画されない)結果となります。しかし、ラインストリップを見てみましょう。そこに頂点を複製すると、ある点に縮退した線が得られます(したがって描画されません)。次の線分を開始すると、新しい頂点を取得する必要があります。また、2つの異なる頂点は常に有効な線を作成するので、頂点を複製することによってラインストリップを再開することはできません。

だから、(最新のデスクトップGLはそれを行うために他の方法がありますが)縮退頂点を使用して、単一のドローコールに複数のラインストリップを置くための本当の方法はありません。最高のアイデアは、おそらくDrewsmitsが示唆するように、通常のラインセット(GL_LINES)を用いることであろう。 (ストリップが非常に長い場合は)頂点の数を約2倍にしますが、バッチ処理によるドライバのオーバーヘッドが少ないほど、メモリとコピーのオーバーヘッドが大きくなる可能性があります。

2

縮退した頂点をラインストリップで使用することはできませんが、プリミティブリスタートインデックス(通常は数値タイプで可能な最大インデックス値)を使用することができます(Direct3D用語ではストリップカットインデックスとも呼ばれます)。 glPrimitiveRestartIndexを使用して設定できます。

+1

プリミティブリスタートは今もiOSのストリップ形状を再起動するためにアップルが推奨です。驚くばかり。 –

関連する問題