我正在尝试参数化生成具有给定width
和height
的平面。这应该非常简单,但却非常令人沮丧:我的代码适用于16x16或者16x16以下的所有方形尺寸,然后开始变得混乱。
生成顶点
这里没什么特别的,只按行和列布置顶点。
Float3* vertices = new Float3[width * height];
int i = 0;
for (int r = 0; r < height; r++) {
for (int c = 0; c < width; c++) {
i = (r * width) + c;
vertices[i] = Float3(c, 0, r);
}
}
生成索引
黑色数字=顶点索引,红色数字=订单
除了边缘之外,每个顶点需要6个槽来放置它们的索引。
numIndices = ((width - 1) * (height - 1)) * 6;
GLubyte* indices = new GLubyte[numIndices];
i = 0; // Index of current working vertex on the map
int j = -1; // Index on indices array
for (int r = 0; r < height - 1; r++) {
for (int c = 0; c < width - 1; c++) {
i = (r * width) + c;
indices[++j] = i;
indices[++j] = i + height + 1;
indices[++j] = i + height;
indices[++j] = i;
indices[++j] = i + 1;
indices[++j] = i + 1 + height;
}
}
逻辑哪里出错了?
答案 0 :(得分:3)
您正在超出GLubyte的限制,其最大值可以保持为255.请尝试使用GLushort。