我在 OpenGL 中创建了一个资源加载器,并将其暴露给 Python,有一个函数称为:
Texture* tex = ResourceManager->loadTexture('name.png')
然后我将纹理名称保存在 vector 列表中,所以下次我想加载它时,我会检查它是否已经加载,如果已经加载,则用该指针返回它。
但是当我要卸载的时候,不知道用了多少次,直接卸载会崩溃,因为同一个指针用了很多次,我的类都暴露了到 Python。
我想知道我是否可以将所有这些麻烦留给 Python(自动卸载),并且仍然跟踪我加载和重用的纹理?
附言:
platform: linux-x64
gcc: 4.8.3
python c++ boost-python,
editor:kdevelop
最佳答案
Boost.Python 将正确使用 C++ 11 或 boost shared_ptr。只需返回一个 boost::shared_ptr ,引用计数将跨语言边界以及在您的 C++ 代码中进行处理。
关于python - 使用 C++ 和 Python 在 OpenGL 中进行资源管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34575024/