gpt4 book ai didi

opengl - OpenGL VBO 会泄漏内存吗?

转载 作者:行者123 更新时间:2023-12-04 02:07:53 30 4
gpt4 key购买 nike

假设我调用了 glGenBuffers(或 WebGL 中的 createBuffer),后来我丢失了缓冲区名称。例如。它超出范围,被垃圾收集,不管是什么情况。类比 C 编程,这似乎是内存泄漏。实际上,有一 block 分配的内存(在 GPU 上)没有指向它的指针。我猜 GPU 无法对内存进行垃圾回收,因为它无法自动推断客户端应用程序已完成处理。

首先,这确实是内存泄漏吗?其次,如果我在丢失缓冲区名称之前调用 glDeleteBuffers(或 WebGL 中的 deleteBuffer),是否会释放内存并避免泄漏?

最佳答案

是的,那会导致内存泄漏。你必须调用glDeleteBuffers对于每个分配的缓冲区。如果您调用它,它会释放 GPU 上的数据并将绑定(bind)恢复为 0。如果您不调用它,GPU 最终会耗尽内存并且您的驱动程序可能会崩溃。

另请注意,您无需在每次调用 glBufferData 后调用 glDeleteBuffers,它会破坏之前绑定(bind)到它的所有数据。当您不再使用缓冲区时,只调用一次 glDeleteBuffers

关于opengl - OpenGL VBO 会泄漏内存吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22648109/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com