【问题标题】:Can textures once uploaded from CPU/Main Memory/RAM to GPU be deallocated on CPU?从 CPU/主内存/RAM 上传到 GPU 的纹理可以在 CPU 上释放吗?
【发布时间】:2017-09-24 04:11:19
【问题描述】:

对于带有动画的固定 3D 场景(不能部分加载到内存中),比如 1000 个对象和各种缩放级别,一旦所有纹理都上传到 GPU,它们的数据是否仍需要保存在CPU,即使从 CPU/主 RAM 中取消分配所有纹理数据,应用程序也能正常工作,但这是否完全安全,或者它们仍应继续保存在 GPU 内存之外的主内存中?

【问题讨论】:

标签: opengl webgl


【解决方案1】:

将它们发送到 OpenGL 后,可以毫无问题地删除所有 cpu 数据。纹理和缓冲区都是如此。

如果实现没有立即将数据上传到 gpu(afaik 所有桌面 GL 实现延迟),那么 OpenGL 实现必须确保备份 cpu 数据直到需要。

【讨论】:

  • WebGL 的行为如何(在 Chrome 和 Firefox 上)
  • @seahorse 同理,一旦你调用了bufferDatatexImage 或其他任何名称,你就可以随意使用 CPU 缓冲区,而不会产生任何副作用。将来请仅使用一个 API 标记您的问题,WebGL 和 OpenGL 是相同,使您的问题模棱两可。
猜你喜欢
  • 1970-01-01
  • 2013-12-07
  • 2012-07-29
  • 2016-10-18
  • 2021-12-01
  • 2018-05-26
  • 1970-01-01
  • 1970-01-01
  • 2018-09-04
相关资源
最近更新 更多