标题基本上。
创建网格物体时,您可以预留超过需要的数量
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);
谢谢:)
答案 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