使用 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_ptr
和weak_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++ 项目