dra*_*hnr 7 opengl memory-leaks memory-management gpu
我是否必须通过glDelete*函数手动清理所有DisplayLists,Textures,(Geometry-)着色器等,或者当我的程序退出/崩溃时GPU mem是否会自动释放?
注意:GPU mem是指专用显卡上的专用内存,而不是CPU内存.
正如其他人所提到的,您的操作系统(与驱动程序资源管理器合作)应该释放资源.这就是操作系统的用途.值得注意的是,这与OpenGL无关,但它是行为良好的操作系统及其相关驱动程序的一部分.操作系统可以处理所有系统资源.OpenGL只是它们的一部分,它们与文件句柄没什么区别.现在要更具体,您应该指定您关心的操作系统.
顺便说一句,这是我对ChrisF的答案不以为然的地方.决定它需要进行清理不应该由驾驶员决定.操作系统驱动程序模型将在用户模式OpenGL驱动程序(不应该执行实际的gfx资源分配,因为它在机器中共享),操作系统(提供相当于系统调用以分配资源)和内核模式驱动程序(仅用于以与gpu兼容的方式执行OS命令).这至少是WIN2K和WDDM型号的情况.
因此......如果您的进程崩溃或以其他方式终止,在这些模型中,操作系统负责调用内核模式驱动程序以释放与该进程关联的所有资源.
现在,无论你是否应该这样做,有点像在源代码中询问标签或空格.不同的人在这里有不同的信仰."操作系统无论如何都会这样做,立即退出是一种更好的最终用户体验"vs"我想知道我是否在泄漏内存,因为如果我的程序长时间运行,我真的不希望它出现OOM错误最好的方法是在整个过程中保持无泄漏"这是我所知道的两条主要思路.
| 归档时间: |
|
| 查看次数: |
8233 次 |
| 最近记录: |