使用 C++ 和 Python 在 OpenGL 中进行资源管理

Resource management in OpenGL using C++ and Python

我在 OpenGL 中创建了一个资源加载器,并将其暴露给 Python,有一个函数叫做:

Texture* tex = ResourceManager->loadTexture('name.png')

然后我将纹理名称保存在矢量列表中,所以下次我想加载它时,我会检查它是否已经加载,如果是,那么 return 它与那个指针。

但是当我要卸载的时候,不知道用了多少次,如果直接卸载会崩溃,因为同一个指针用了很多次,都是我的class 已暴露于 Python.

我想知道我是否可以将所有这些麻烦留给 Python(自动卸载​​),并且仍然跟踪我加载和重用的纹理?

ps:

platform: linux-x64
gcc: 4.8.3
python    c++   boost-python,
editor:kdevelop

Boost.Python 将正确使用 C++ 11 或 boost shared_ptr。只需 return 一个 boost::shared_ptr,引用计数将跨语言边界以及在您的 C++ 代码中处理。