1

タイトルは基本的に。

メッシュの作成時に必要以上に予約できます

mesh = new Mesh(false, 100, 0, new VertexAttribute(Usage.Position, 3, "a_position"));

ただし、頂点を追加する方法はありません。FloatBuffer を取得してそれに追加することはできますが、奇妙な結果が得られます。オフセットを指定して mesh.setVertices も試しましたが、どちらも機能しません。

描画ポイントでデバッグしました。何らかの方法で頂点を追加しようとするまで機能します(1つの頂点に3つの浮動小数点数を考慮してオフセットを微調整しても)

コピーされたコード セグメント:

mesh.setVertices(new float[] {
                -0.5f, -0.5f, 0,
                0.5f, -0.5f, 0/*,
                -0.5f,0.5f,0.f*/});//works if I uncoment this
mesh.setVertices(new float[]{-0.5f,0.5f,0.f}, 6, 3);//but comment this out

私も試しました

squareMesh.setVertices(new float[]{-0.5f,0.5f,0.f}, 2, 3);

ありがとう :)

4

1 に答える 1

0

基になるバッファを再作成する必要があり、それには多くの時間がかかるため、追加することはお勧めできません。代わりに、メッシュを一括で割り当て、現在使用されているものだけをレンダリングする必要があります。

例えばmesh.render(GL10.GL_TRIANGLES,0,num_triangles);

バッファの更新について:

FloatBuffer fbuftmp = mesh.getVerticesBuffer(); 
BufferUtils.copy(buf,fbuftmp,fbuftmp.capacity(),0);

bufフロート配列はどこにありますか。

ここで説明されている理由でBufferUtils.copyを使用してください

于 2012-09-16T16:08:48.930 に答える