gpt4 book ai didi

c++ - 像一维数组一样读取帧缓冲区纹理

转载 作者:行者123 更新时间:2023-11-28 01:04:39 27 4
gpt4 key购买 nike

我正在使用 GL 进行一些 gpgpu 计算,并想从帧缓冲区中读取我的结果。我的 framebuffer-texture 在逻辑上是一个一维数组,但我把它变成了二维数组以获得更大的面积。现在我想读取帧缓冲区纹理中任意给定长度的任意像素。

这意味着所有计算都已在 GPU 端完成,我只需要将某些数据传递给 cpu,这些数据可以在纹理边界上对齐。

这可能吗?如果是,它是否比整个图像上的 glReadPixels 慢/快,然后剪掉我需要的东西?

编辑我当然知道 OpenCL/CUDA,但不需要它们,因为我希望我的程序在(几乎)任何平台上开箱即用。

我还知道 glReadPixels 非常慢,原因之一可能是它提供了一些我不需要的功能(在 2D 中运行)。因此,我要求一个更基本的函数,可能会更快。

最佳答案

使用 glReadPixels 读取整个帧缓冲区只是为了丢弃除了少数像素/行之外的所有内容将是非常低效的。但是 glReadPixels 允许您在帧缓冲区中指定一个矩形,那么为什么不将其限制为获取感兴趣的几行呢?因此,您可能最终会在获取的第一行和最后一行的开头和结尾获取一些额外的数据,但我怀疑与进行多次调用相比,这样做的开销是最小的。

可能将您的数据以图 block 形式写入帧缓冲区和/或使用 Morton order可能有助于构建它,以便可以找到更紧密的边界框并最大限度地减少检索的额外数据。

关于c++ - 像一维数组一样读取帧缓冲区纹理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6930772/

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