将顶点添加到libgdx网格

时间:2012-04-06 10:27:34

标签: android libgdx

标题基本上。

创建网格物体时,您可以预留超过需要的数量

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);

谢谢:)

1 个答案:

答案 0 :(得分:0)

添加是一个坏主意,因为必须重新创建底层缓冲区并占用大量时间。相反,应该批量分配网格,只渲染当前使用的网格。

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

至于更新缓冲区:

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

其中buf是一个浮点数组。

使用BufferUtils.copy,原因解释为here