Я использую управляемые библиотеки DirectX 9.0 для преобразования массивов 3D -точек в координаты 2D экрана. Для скорости я использую нефтенативметоды, чтобы сделать все преобразования.
Проблема:
Если моя функция отсечения на заказ используется, мое приложение умирает без каких -либо исключений, мне потребовалось некоторое время, чтобы выяснить, что она бросала Uncatchable system.executeengineException . Я сузил его до происходящего из -за двух последних строк моей функции отсечения. < /P>
Код: Выделить всё
List verticesAfterClipping = new List;
public unsafe void ClipLine(Line lineToClip)
{
this.verticesAfterClipping.Clear();
// Clipping algorithm happens here... (this is psuedo-code of what it does)
foreach(Vertex in lineToClip.Vertices)
{
bool thisIsClipped = // Set to whether this vertex is clipped
bool lastWasClipped = // Set to whether last vertex was clipped
if(thisIsClipped == false && lastWasClipped == true)
{
verticesAfterClipping.Add( /* intersection on clipping plane */ );
verticesAfterClipping.Add( /* thisVertex */ );
}
else if (thisIsClipped == false && lastWasClipped == false)
{
verticesAfterClipping.Add( /* thisVertex */ );
}
else if (thisIsClipped == true && lastWasClipped == false)
{
verticesAfterClipping.Add(/* intersection on clipping plane */);
}
}
// THIS IS WHERE BAD THINGS HAPPEN
lineToClip.Vertices = new Vertex[verticesAfterClipping.Count];
verticesAfterClipping.CopyTo(lineToClip.Vertices, 0);
}
Я просто не могу понять, что не так. Любая помощь будет очень оценена.
Подробнее здесь: https://stackoverflow.com/questions/410 ... eexception