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

Posted

技术标签:

【中文标题】使用 C++ 和 Python 在 OpenGL 中进行资源管理【英文标题】:Resource management in OpenGL using C++ and Python 【发布时间】: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 的组合。 【参考方案1】:

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

【讨论】:

以上是关于使用 C++ 和 Python 在 OpenGL 中进行资源管理的主要内容,如果未能解决你的问题,请参考以下文章

为 C++ 和 OpenGL 使用 Sublime Text 2

如何使用 c++ 和 opengl 在 mac 中创建窗口?

如何在 C++ 中获取 OpenGL 使用的总内存(以字节为单位)?

如何检测与 C++、OpenGL 和 freeglut 的冲突?

如何在 Windows 7 中使用 OpenGL、Glut 和 Visual Studio 2008 准备 C++ 项目

如何开始在 openGL 和 C++ 中构建cooliris?