我试图在我的地形测绘的第一部分画一个三角形网格,但是有一个小错误,我不确定我哪里出错了。有人可以指出我的错误或解释如何正确构建这个网格。
澄清一下,看看网格的右侧,不应该发生。
顶点:
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;
}
当我绘制一个小网格,例如10x10时,它确切地显示它应该如何
当我绘制一个更大的网格时,512x512覆盖我的地形,当索引/顶点出现问题时
编辑:我相信我发现了问题,但我不确定如何解决它。我可以绘制一个高达256x256的网格,但除此之外的任何东西都会给我这些图形问题。
答案 0 :(得分:3)
WORD
是一个16位无符号整数,最大值为65535.对于300x300网格,您有90,000个顶点,因此无法使用WORD
对它们进行索引。