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

标签 python c++ boost-python

我在 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/

相关文章:

python - 宽东亚字符与格式功能的对齐

python - 如果map比其他的更快(列表理解、循环(各种变体)),为什么不总是使用map呢?

c++ - 如何在 C/C++ 中执行 _mm256_maskstore_epi8()?

c++ - 使用 boost 将 C++ 对象传递给 python

python - 乘以掩码数组会更改numpy中的填充值

Python:在方法中解压字典

c++ - C++ 中的析构函数调用

c++ - 使用带有 unique_ptr 的自定义删除器

c++ - 如何在 boost::python 嵌入式 python 代码中导入模块?

c++ - 如何使用 boost 和 Firebreath 从 python 中正确触发浏览器事件