|
|
我通过智能指针share_ptr来管理资源,比如纹理,顶点/索引缓冲,音频缓冲等.但这些资源需要保证在设备被释放前释放.比如OpenAL里,如果在音频特效释放之前先把上下文删除了,音频资源的释放就会报错.
大概情况是这样的:
Audio_Device* device = Audio_Device::create_device("oal_device.dll");
device->init_device(...);
Audio_Buffer_Static_SPtr buffer = device->create_audio_buffer_static("Footsteps.wav");
.....//播放声音之类的
delete device;
但是由于buffer的释放是由share_ptr管理的,结果buffer的释放就在device之后了.即使把device包装在一个智能指针里面也不能解决释放顺序的问题.
难道说非要在buffer使用的部分加一对{}来保证它释放么,如果在更复杂的程序里面这个方法也行不通.
请教有没有什么好的方法? |
|