我正在使用 GL 进行一些 gpgpu 计算,并希望从帧缓冲区中读取我的结果。我的帧缓冲区纹理在逻辑上是一个一维数组,但我将其设为二维以拥有更大的区域。现在我想从帧缓冲纹理中任意给定长度的任意像素中读取数据。
这意味着所有计算都已经在 GPU 端完成,我只需要将某些数据传递给可以在纹理边界上对齐的 cpu。
这可能吗?如果是,它是否比glReadPixels
整个图像更慢/更快,然后剪掉我需要的东西?
编辑 当然,我知道 OpenCL/CUDA,但它们不是我们想要的,因为我希望我的程序在(几乎)任何平台上开箱即用。
我也知道 glReadPixels 非常慢,一个原因可能是它提供了一些我不需要的功能(在 2D 中操作)。因此我要求一个可能更快的更基本的功能。