将纹理从GPU复制到CPU

Copy texture from GPU to CPU

本文关键字:CPU 复制 GPU 纹理      更新时间:2024-07-04

如何在WebGL中将纹理从GPU内存复制到CPU?我正在运行时使用texSubImage2D更新纹理。

我想避免:

  • 在画布上存储纹理的副本
  • 渲染到纹理并调用readPixels

还有别的办法吗?

已经阅读了这些(对于在执行过程中未更新的纹理很有用):

  • 访问WebGL上的图像/纹理数据(纹素)
  • 可以从WebGL纹理对象轻松创建HTML图像元素吗

除了将纹理附加到FBO并执行readPixels之外,没有其他方法。

readPixels或(因为readPixelss往往有点慢)您可以在画布大小的四边形上渲染它。

var img = canvas.toDataURL("image/png");

该纹理将在img变量中。为了实现这一点,您需要初始化gl有这样的

gl = canvas.getContext("experimental-webgl", {preserveDrawingBuffer: true});