【问题标题】:Resource management in OpenGL using C++ and Python使用 C++ 和 Python 在 OpenGL 中进行资源管理
【发布时间】:2016-01-03 09:24:14
【问题描述】:

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

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

然后我将纹理名称保存在一个向量列表中,所以下次我想加载它时,我会检查它是否已经加载,如果是,则使用该指针返回它。

但是我想卸载的时候不知道用了多少次了,直接卸载会崩溃,因为同一个指针被使用了很多次,我的所有类都暴露了到 Python。

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

ps:

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

【问题讨论】:

  • 您可以将所有缓存移至 Python。您还可以使用智能指针,特别是可以使用shared_ptrweak_ptr 的组合。

标签: python c++ boost-python


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-03
    相关资源
    最近更新 更多