我已经从顶点网格成功创建了Mesh
。每个顶点都是一个二维矢量,并由一个半径小的物理Body
支持。因此,我尝试使用纹理映射Mesh
的对象并未完全覆盖。
问题的说明(注意对象没有被纹理完全覆盖):
这是我用来为网格设置每个顶点位置的代码(变量center
是渲染网格的中心,还要注意网格可以在任何方向旋转):
int idx = 0;
for (int j = 0; j < height; j++) {
for (int i = 0; i < width; i++) {
float u = (float) i / (width - 1);
float v = 1 - (float) j / (height - 1);
Vector2 pos = bodies[i][j].getLocalPoint(center);
vertices[idx++] = center.x - pos.x; // x
vertices[idx++] = center.y - pos.y; // y
vertices[idx++] = u;
vertices[idx++] = v;
}
}
这是我实例化网格的方式:
Mesh mesh = new Mesh(
false,
vertices.length,
indices.length,
new VertexAttribute(Usage.Position, 2, ShaderProgram.POSITION_ATTRIBUTE),
new VertexAttribute(Usage.TextureCoordinates, 2, ShaderProgram.TEXCOORD_ATTRIBUTE)
);
然后设置顶点并渲染它:
mesh.setVertices(vertices);
mesh.render(shaderProgram, GL20.GL_TRIANGLE_STRIP);
我一直试图解决这个问题一段时间,到目前为止,我已经尝试通过一个恒定的半径值扩展和缩放本地位置向量,但是这些尝试产生了一个变形的 bloby < / em> mesh。
问题: