正如标题所描述的,我正在尝试使用三角形列表来细分 BSpline 补丁。
这是我的补丁的正面图像,它看起来完全应该是这样的。
我的问题是补丁的后部,它产生了这种效果:
如您所见,前一行三角形连接到正在绘制的新行。我尝试了各种方法来避免这种情况,例如在到达行尾时将索引值增加 1。我能找到的唯一快速解决方法是将每一行放在一个单独的循环中(循环范围是因为该行的大小),这根本不直观。
这是我的补丁绘制的代码:
void drawBSplinePatch1(std::vector<int>& sample_elements_out, const int samples)
{
for(int i = 0; i <= 379; i++)
{
// first triangle
sample_elements_out.push_back(i);
sample_elements_out.push_back(i + 1);
sample_elements_out.push_back(i + samples);
// second triangle
sample_elements_out.push_back(i + samples);
sample_elements_out.push_back(i + 1);
sample_elements_out.push_back(i + samples + 1);
}
}