2013-05-13 3 views
1

Я случайно столкнулся с нарушением нарушения доступа при GLUtessVertexProc обратном вызове при использовании GLUtessellator, может ли кто-нибудь помочь? большое спасибо! вот основной код:glutessellator пытается прочитать или записать защищенную память

public partial class Tessellation 
    { 
     [UnmanagedFunctionPointerAttribute(CallingConvention.StdCall)] 
     public delegate void GLUtessVertexProc(IntPtr data); 

    private List<Vector3> _buf = new List<Vector3>(); 
    private static readonly GLUtessVertexProc tessVertex = data => { 
     double* dt = (double*)data; 
     //exception occur... 
     _buf.Add(new Vector3(dt[0], dt[1], dt[2])); 
    }; 

    public List<Vector3> Tessellate(List<Vector3> outerBound) 
    { 
     _buf.Clear(); 

     GLUtesselator tess = GLU.gluNewTess(); 
     GLU.gluTessCallback(tess, GLU.GLU_TESS_BEGIN, tessBegin); 
     GLU.gluTessCallback(tess, GLU.GLU_TESS_END, tessEnd); 
     GLU.gluTessCallback(tess, GLU.GLU_TESS_ERROR, tessError); 
     GLU.gluTessCallback(tess, GLU.GLU_TESS_VERTEX, tessVertex); 
     GLU.gluTessCallback(tess, GLU.GLU_TESS_COMBINE, tessCombine); 
     GLU.gluTessCallback(tess, GLU.GLU_TESS_EDGE_FLAG, tessEdgeFlag); 
     GLU.gluTessProperty(tess, GLU.GLU_TESS_WINDING_RULE, GLU.GLU_TESS_WINDING_ODD); 
     GLU.gluTessBeginPolygon(tess, IntPtr.Zero); 
     //vertex data 
     GLU.gluTessEndPolygon(tess); 
     GLU.gluDeleteTess(tess); 

     return _buf.ToList(); 
    } 

} 
+0

Я не вижу, где вы установили соединение или где вы вызываете 'tessVertex'. – Amy

ответ

2

У меня была такая же проблема, как и вы, когда я использовал dllimport для импорта команд из glu.dll. Я не смог ее решить. Наконец, я нашел порт C# для цепочки GLU здесь: https://github.com/speps/LibTessDotNet, и я использовал его напрямую, вместо импорта из dll.

Эта библиотека достаточно хороша для моих нужд. Возможно, это одно решение для вас.

+0

Большое спасибо, я попробую как можно скорее. – daidudu

+0

Эта библиотека работает, но производительность плоха при рендеринге сложного многоугольника. Спасибо, в любом случае. – Howard

 Смежные вопросы

  • Нет связанных вопросов^_^