显示部分,代码如下:
CPntCldFusion Combin2PtCld;
Combin2PtCld.dat1->Read("A.pt");
Combin2PtCld.dat2->Read("B.pt");
Combin2PtCld.CombinPntCldOLD(&G_Head3DM,1);
numPC = numPC + 1;
pointerPC[numPC].Push3DM(&G_Head3DM);
numPCchanged = true;
numPCadd = true;
if(numPCadd)
{
OpenGL->CreateList(numPC);
numPCadd = false;
}
上面计算速度是超快的,但到了 if(numPCadd) 断点并F5后,要等非常长时间,这个问题让我抓狂,砸桌子摔杯子,幸好鼠标没摔烂,因此还跟老婆吵了一架。
我一直以为是我生成的数据出了问题,
导致变慢的原因
1 : 绘制三角形时候,三角形量太大,会引起变慢,比如用N多个0点勿生成的三角形 , 但我换了最初的三角化程序后,还是一样的慢
2:OpenGL绘图代码被误更改, 所以我从新拷贝代码到back的工程,还是慢
今天早上,我开始详细比较两个back的代码,删除垃圾代码:
最后发现,是Combin2PtCld对象释放内存的问题。
if(m_pMatrixHeader)
delete []m_pMatrixHeader;
m_pMatrixHeader是对象数组指针,我直接delete掉了,why??????????
这个还真是长见识了