Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 将带有退化三角形的索引三角形带索引数组转换为基元重新启动_Arrays_Opengl_Direct3d_Gl Triangle Strip - Fatal编程技术网

Arrays 将带有退化三角形的索引三角形带索引数组转换为基元重新启动

Arrays 将带有退化三角形的索引三角形带索引数组转换为基元重新启动,arrays,opengl,direct3d,gl-triangle-strip,Arrays,Opengl,Direct3d,Gl Triangle Strip,这是Direct3D 10或OpenGL 3.2/3.0和原语重新启动的问题 我试图寻找一种方法,将包含退化三角形条带的索引数组转换为另一个索引数组,其中退化索引被NVTrip转换的0xFFFF索引三角形条带替换 比如我有 索引列表 0,1,2,2,3,3,4,5,6 到 0,1,2,0xFFFF,3,4,5,6 但我想保持“缠绕顺序”,因为仅仅删除一个索引是不够的 我试过这样的方法 bool isRestarting = true; vector<GLushort> newindi

这是Direct3D 10或OpenGL 3.2/3.0和原语重新启动的问题

我试图寻找一种方法,将包含退化三角形条带的索引数组转换为另一个索引数组,其中退化索引被NVTrip转换的0xFFFF索引三角形条带替换

比如我有

索引列表 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++;
   }
}
但我正在丢失这些信息


根据这段代码,您的建议是什么?这段代码似乎不能正常工作。

什么让您认为删除顶点是不够的?乍一看,的确如此。如果更改顶点顺序,则会打断条带。如果删除一个索引,则缠绕顺序会反转。但如果删除两个索引,它会反转两次,因此不会更改。开始的部分对我来说没有意义。