这是Direct3D 10或OpenGL 3.2 / GLES 3.0和原始重启的问题。
我试图研究一种方法,将包含退化三角形条带的索引数组转换为另一个索引数组,其中退化索引替换为0xFFFF(由nvTriStrip转换的索引三角形条带)。
例如我有
索引列表 0,1, 2,2,3,3 ,4,5,6
到
0,1,2, 0xFFFF ,3,4,5,6
但是我想保留'绕线顺序',因为只删除一个索引是不够的。
我试过像
这样的方式bool isRestarting = true;
vector<GLushort> newindices; // Optimized with primitive restart
vector<GLushort> indices; // The original indices
int i = 0;
for (; i < indices.size();)
{
if (i < indices.size() - 4 && indices[i+0] == indices[i+1] && indices[i+2] == indices[i+3])
{
// Looks degenerated
newindices.push_back(indices[i+0]);
newindices.push_back(0xFFFF);
newindices.push_back(indices[i+2]); // Winding changes!
isRestarting = true;
i+=4;
}
else if (isRestarting)
{
// Restarting the primitive.
newindices.push_back(indices[i+2]);
newindices.push_back(indices[i+1]);
newindices.push_back(indices[i+0]);
isRestarting = false;
i+=3;
}
else
{
newindices.push_back(indices[i]);
i++;
}
}
但我失去了蜿蜒的信息。
根据这段代码,您的建议是什么,似乎无法正常运行。