我目前正在GPU上做一些GPGPU。我写了一个着色器,它执行我想要它做的所有计算,这给出了正确的结果。但是,我正在使用的引擎(Unity)要求我使用缓慢而繁琐的方法将值从GPU加载到CPU,这也是内存效率低下并且失去精度。简而言之,它有效,但也很糟糕。
然而,Unity还给我the option来检索纹理的ID(特定于openGL?),或纹理的指针(显然不是平台特定的),之后我可以用本机代码(c ++)编写DLL,将数据从GPU获取到CPU。在GPU上它是RGBAFloat中的一个纹理(每个像素有4个浮点数,但如果有必要,我可以很容易地将其改为每个像素只有1个浮点数),而在CPU上我只想要一个二维浮点数组。在我看来,这将是非常微不足道的,但我似乎无法找到有用的信息。
有没有人有任何想法如何使用指针检索纹理中的浮点数,让C ++将其作为浮点数组输出?
如果需要,请要求澄清。