如何在C#中处理OpenGL资源?

如何在C#中处理OpenGL资源?,c#,opengl,resources,idisposable,C#,Opengl,Resources,Idisposable,我正在用C#制作一个网格类,如我前面的问题所示。它确实有一些需要释放的OpenGL资源的句柄。在C++中,用析构函数来解决,但如何在C语言中实现类似的操作呢?我已经听说过IDISPOSIGNED,但是我好像需要调用它,或者用一个使用语句来包装一个对象的存在,这两个都没有C++的方便。有什么我遗漏的吗?处理使用非托管资源的对象是C#中的标准方法。正如您所说,将引用该对象的所有代码包装在using语句中是一种很好的方法。这就是为什么游戏(引擎)不是用C#编写的原因之一。这与它完全无关。用于处置非托管

我正在用C#制作一个网格类,如我前面的问题所示。它确实有一些需要释放的OpenGL资源的句柄。在C++中,用析构函数来解决,但如何在C语言中实现类似的操作呢?我已经听说过IDISPOSIGNED,但是我好像需要调用它,或者用一个使用语句来包装一个对象的存在,这两个都没有C++的方便。有什么我遗漏的吗?

处理使用非托管资源的对象是C#中的标准方法。正如您所说,将引用该对象的所有代码包装在using语句中是一种很好的方法。这就是为什么游戏(引擎)不是用C#编写的原因之一。这与它完全无关。用于处置非托管资源的正确范例是IDisposable模式。如果您不知道这一点,您应该仔细阅读,因为考虑到CLR除了有时使用非托管资源之外别无选择,这一点非常重要。它不比析构函数方便多少。