从中心缩放网格

时间:2017-04-18 21:08:58

标签: java libgdx lwjgl

我已经从顶点网格成功创建了Mesh。每个顶点都是一个二维矢量,并由一个半径小的物理Body支持。因此,我尝试使用纹理映射Mesh的对象并未完全覆盖。

问题的说明(注意对象没有被纹理完全覆盖):

enter image description here

这是我用来为网格设置每个顶点位置的代码(变量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。

问题:

  1. 我应该如何偏移每个位置矢量,以便用纹理网格完全覆盖我的对象?
  2. 是否有更有效的缩放网格的方法而不是偏移顶点?

0 个答案:

没有答案