2017-04-25 12 views
1

私はLWJGLでOpenGLで文字列を描画しようとしています。クワッド描画GL_TRIANGLE_STRIPで

は今、私は、文字列「トーマス」、その最後のアップなどをレンダリングするtyringよ例えば

GL11.glDrawArrays(GL11.GL_TRIANGLE_STRIP, 0, text.getModel().getRawModel().getVertexCount()); 

によってレンダリングされようとしているメッシュに各文字のための3つの頂点を追加しています(より良い問題を見てオフセットを追加して)次

Render of Thomas

あなたが見ることができるように、すべての文字の間に奇妙な「クワッド」があると:-( は、私が思うなぜ私は知りません私は多くの頂点に追加しています文字ごとに、私は

頂点(2D)...より良いそれを行うにはアイデアを得ない:

-0.3333333, 0.5875, 
-0.24800003, 0.5875, 
-0.3333333, 0.25, 
-0.24800003, 0.25, 

-0.11466664, 0.5875, 
-0.029333353, 0.5875, 
-0.11466664, 0.25, 
-0.029333353, 0.25, 

0.10399997, 0.5875, 
0.18933332, 0.5875, 
0.10399997, 0.25, 
0.18933332, 0.25, 

0.32266665, 0.5875, 
0.408, 0.5875, 
0.32266665, 0.25, 
0.408, 0.25, 

0.5413333, 0.5875, 
0.62666667, 0.5875, 
0.5413333, 0.25, 
0.62666667, 0.25, 

0.76, 0.5875, 
0.84533334, 0.5875, 
0.76, 0.25, 
0.84533334, 0.25, 

テクスチャCOORDS(2D):あなたがレイアウトされた方法を見てみると

0.23318386, 1.0, 
0.23766816, 1.0, 
0.23318386, 0.0, 
0.23766816, 0.0, 

0.32286996, 1.0, 
0.32735425, 1.0, 
0.32286996, 0.0, 
0.32735425, 0.0, 

0.3542601, 1.0, 
0.35874438, 1.0, 
0.3542601, 0.0, 
0.35874438, 0.0, 

0.34529147, 1.0, 
0.3497758, 1.0, 
0.34529147, 0.0, 
0.3497758, 0.0, 

0.29147983, 1.0, 
0.29596412, 1.0, 
0.29147983, 0.0, 
0.29596412, 0.0, 

0.3721973, 1.0, 
0.37668163, 1.0, 
0.3721973, 0.0, 
0.37668163, 0.0 
+0

インデックス配列とは何ですか? – rwols

+0

@rwolsインデックス配列はありません。なぜなら、頂点を2回使用しないと思ったからです。頂点とテクスチャ座標だけがVAOに格納されます。 –

+0

それで 'GL_TRIANGLE_STRIP'はおそらく動作しないでしょう – rwols

答えて

1

あなたの頂点は、GL_TRIANGLE_STRIPのように見えますが動作しません。のは、三角形ストリップトポロジーは、このような三角形を描画します24までの番号0を使用して、頂点にラベルを付けてみましょう:

draw triangle 0 1 2 
draw triangle 1 2 3 
draw triangle 2 3 4 
... 
draw triangle 20 21 22 
draw triangle 21 22 23 

あなたはおそらくしたいことはこれです:

draw triangle 0 1 2 
draw triangle 1 2 3 

draw triangle 4 5 6 
draw triangle 5 6 7 

draw triangle 8 9 10 
draw triangle 9 10 11 

... 
... 

draw triangle 20 21 22 
draw triangle 21 22 23 

これはGL_TRIANGLESトポロジで実現することができますあなたはTRIANGLE_STRIPと互いに素primativesをレンダリングしたい場合は、必要に

[ 0 1 2 1 2 3 4 5 6 5 6 7 ... 20 21 22 21 22 23 ] 
+1

ありがとう!それでおしまい :-) –

0

を:とインデックスを使用すると、このようにバッファ分割されていないプリムの間に縮退(ゼロ領域)三角形が含まれています。あなたがそれらを無視できることを十分に離れて最適化されてい

-0.3333333, 0.5875, 
-0.24800003, 0.5875, 
-0.3333333, 0.25, // real triangle 
-0.24800003, 0.25, // real triangle 
-0.24800003, 0.25, // ignored degenerate triangle 

-0.11466664, 0.5875, // ignored degenerate triangle 
-0.11466664, 0.5875, // ignored degenerate triangle 
-0.029333353, 0.5875, // ignored degenerate triangle 
-0.11466664, 0.25, // real triangle 
-0.029333353, 0.25, // real triangle 
-0.029333353, 0.25, // ignored degenerate triangle 
... 

Degenrateのプリム:あなたはばらばらにしたい頂点を繰り返すことによって、これを行うことができます。

ただし、クワッドの数に関係なく、TRIANGLESを使用するだけで合計2つの頂点を保存するため、基本的に不連続なクワッドをレンダリングする利点はありません。

このテクニックは、トライストリップに最適化されたメッシュのように、ばらばらな「ジャンプ」があまり一般的でない場合に、より便利です。

関連する問題