0
我想弄清楚如何将索引添加到已具有所有顶点的形状。我可以通过顶点看到我拥有它们的所有位置,但是由于没有正确添加索引,导致了一个奇怪的工件。不过,我不知道如何正确添加它们。将索引添加到网格
Surface::Surface()
{
int size = 200;
ofPoint p1(0, 0, 0), p2(0, 0, size), p3(size, 0, size), p4(200, 0, 0);
s1 = new Curve(p1, p2);
s2 = new Curve(p2, p3);
s3 = new Curve(p4, p3);
s4 = new Curve(p1, p4);
for(double i = 0; i <= size; i++){
for(double j = 0; j <= size; j++){
mesh.addVertex(getPoint(i, j));
}
}
int width = size, height = size;
for (int y = 0; y<=height; y++){
for (int x=0; x<=width; x++){
mesh.addIndex(x+y*width);
mesh.addIndex((x+1)+y*width);
mesh.addIndex(x+(y+1)*width);
mesh.addIndex((x+1)+y*width);
mesh.addIndex((x+1)+(y+1)*width);
mesh.addIndex(x+(y+1)*width);
}
}
}
什么画顶点给出:
但是索引连接很多的点,我不能确定哪些如何索引应连接。绘制线框:
也许这个问题是适当的凹状?每个人似乎都做多或同样的事情少的时候,他们希望添加索引到网
它现在更有意义,但它仍然增加了太多索引。这就像应该做点1到2到3到4的线条,它增加了从4到1的最后一行。我试着降低循环执行的次数,但它似乎没有帮助。没有修改,你的代码看起来像这样:http://imgur.com/N8WIRIN – Axel
对不起,我编辑了答案。你应该只需要将你的循环的条件改为<而不是<=。从概念上说,你需要创建一个比顶点少一个原语。如果你想象你在每对顶点之间创建一个四边形。想象的最简单的形式是如果大小== 1.您需要创建2个顶点,但只有1个四边形。 –
我想到了这样的事情,在做之前我已经尝试过类似于你的编辑的东西。结果是一样的。不过,我相信我不会按照您认为我要添加的顺序添加索引。例如,如果我将我的for循环更改为'y
Axel