gpt4 book ai didi

c++ - 如何为 terrain direct x 11 C++ 正确绘制平面三角形网格

转载 作者:行者123 更新时间:2023-11-30 02:34:35 25 4
gpt4 key购买 nike

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

为了澄清,请查看网格的右侧,这不应该发生。

顶点:

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 的网格,但超出该尺寸的任何内容都会给我带来这些图形问题。

最佳答案

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

关于c++ - 如何为 terrain direct x 11 C++ 正确绘制平面三角形网格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34437153/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com