unity3d 异步GPU回读错误- GfxBufferID无效

wbrvyc0a  于 2022-12-27  发布在  其他
关注(0)|答案(1)|浏览(255)

我尝试使用AsyncGPUReadback从游戏包示例化的游戏对象的网格中获取数据,但我一直收到以下错误
异步GPU回读- GfxBufferID无效
找不到有关它的任何信息。下面是代码:

public static void Run(Mesh sourceMesh, System.Action<Mesh> callback)
{
    GraphicsBuffer sourceDataBuffer = sourceMesh.GetVertexBuffer(0);
    GraphicsBuffer sourceIndexBuffer = sourceMesh.GetIndexBuffer();

    var vertexCount = sourceDataBuffer.count;
    var indexCount = sourceIndexBuffer.count;

    byte[] sourceData = new byte[vertexCount * (sourceDataBuffer.stride / sizeof(byte))];
    byte[] sourceIndex = new byte[(int)(indexCount * ((float)sourceIndexBuffer.stride / sizeof(byte)))];

    UnityEngine.Rendering.AsyncGPUReadback.Request(sourceDataBuffer, result =>
    {
        ...
    });
}

AsyncGPUReadback不能和资产包一起使用吗?我也试过非异步GetData,但是效果不好--我没有返回任何错误,但是数据是空的。

pod7payv

pod7payv1#

对于可能遇到相同问题的用户,将源网格中的vertexBufferTarget设置为“原始”可停止错误:

sourceMesh.vertexBufferTarget = GraphicsBuffer.Target.Raw;

我从调用中得到的结果仍然不正确,但至少错误消失了。

相关问题