如何正确地为地形直接绘制三角形的平面网格x 11 C ++

时间:2015-12-23 13:51:22

标签: c++ directx

我试图在我的地形测绘的第一部分画一个三角形网格,但是有一个小错误,我不确定我哪里出错了。有人可以指出我的错误或解释如何正确构建这个网格。

澄清一下,看看网格的右侧,不应该发生。

顶点:

vector<Vertex> Terrain::generateVertices(int width, int height) {
    vector<Vertex> vertices;
    Vertex v;
    float du = 1.0f / (width - 1);
    float dv = 1.0f / (height - 1);
    for (int r = 0; r < width; ++r) {
        for (int c = 0; c < height; ++c) {
            v.Pos = XMFLOAT3((float)c, (float)r, 0.0f);
            v.Normal = XMFLOAT3(0.0f, 0.0f, 0.0f);
            v.TextureCoordinate = XMFLOAT2(c * du, r * dv);
            vertices.push_back(v);
        }
    }
    return vertices;
}

指数:

vector<WORD> Terrain::generateIndices(int width, int height) {
    vector<WORD> indices;
    for (int r = 0; r < width; ++r) {
        for (int c = 0; c < height; ++c) {
            indices.push_back(r * height + c);
            indices.push_back(r * height + (c + 1));
            indices.push_back((r + 1)*height + c);

            indices.push_back((r + 1) * height + c);
            indices.push_back((r * height + (c + 1)));
            indices.push_back((r + 1) * height + (c + 1));
        }
    }
    return indices;
}

结果:enter image description here

当我绘制一个小网格,例如10x10时,它确切地显示它应该如何

enter image description here

当我绘制一个更大的网格时,512x512覆盖我的地形,当索引/顶点出现问题时

编辑:我相信我发现了问题,但我不确定如何解决它。我可以绘制一个高达256x256的网格,但除此之外的任何东西都会给我这些图形问题。

1 个答案:

答案 0 :(得分:3)

WORD是一个16位无符号整数,最大值为65535.对于300x300网格,您有90,000个顶点,因此无法使用WORD对它们进行索引。