1

标题基本上。

创建网格时,您可以保留比您需要的更多

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

但是没有添加顶点的方法。您可以获取 FloatBuffer 并添加到其中,但我得到了奇怪的结果。我还尝试了带有偏移量的 mesh.setVertices ,但这也不起作用。

我用绘图点调试。在我尝试以任何方式添加顶点之前一直有效(即使我调整偏移量以在一个顶点中考虑 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 回答