首页 > 解决方案 > 如何使用 Unity 的 AsyncGPUReadback 解决此错误?

问题描述

我正在尝试从 GPU 读回一个计算缓冲区,其中有一个我已经定义和先前设置的结构数组。

var req = AsyncGPUReadback.Request(myBuffer);
if(req.hasError == false)
{
    var readback = req.GetData<myStruct>();
    print(readback);
}

当我把它放在代码中时,我得到这个错误:InvalidOperationException: Cannot access the data as it is not available。问题是数据应该可用,因为当我使用普通的 GetData 方法时,一切正常。

myBuffer.GetData(data);

有谁知道我应该在哪里解决这个错误?谢谢!

- - - - - - - - - - - - 编辑 - - - - - - - - - - - - - ------

我在这里找到了一个解决方案https://github.com/keijiro/AsyncCaptureTest/blob/master/Assets/AsyncCapture.cs,但我不太清楚为什么它现在而不是以前工作。

void Update()
{
   AsyncGPUReadback.Request(myBuffer, OnCompleteReadBack);
}

void OnCompleteReadBack(AsyncGPUReadBackRequest request)
{
    if(request.hasError == false)
    {
       var data = request.GetData<myStruct>();
    }

}

标签: c#unity3dasynchronous

解决方案


推荐阅读