0

每当我尝试使用我的屏幕截图代码时,我都会收到错误消息“颜色表面的尺寸与深度表面的尺寸不匹配”,而没有任何调用堆栈或任何进一步了解我做错了什么的信息。

我的主摄像头有一个单独的摄像头,其目的是从不同角度截取屏幕截图。层次结构:

等级制度

  • 主摄像头像普通主摄像头一样捕捉 3D 场景,包括后期处理组件。没有 HDR 或 MSAA。 后处理组件
  • GUI 摄像头仅捕获 UI 层。除 MSAA 外,未启用任何内容。
  • 画布和图像只是一个水印,由 GUI 摄像头渲染。

我将主摄像头和 GUI 摄像头都指向同一个目标渲染纹理。当准备好截屏时,我启用了相机组件,因此 Unity 接管并告诉他们渲染帧。在OnRenderImage回调中,我禁用了相机以便再次使用它,我删除了之前分配的渲染纹理,提取像素,并将其保存为 PNG。

在单独的测试中,这一切似乎都按预期工作。没有错误信息。但是,在玩完整游戏时,我突然收到每个屏幕截图的尺寸错误。

我读过这RenderTexture.IsCreated将测试渲染纹理是否仍然可用。据推测,由于各种事件(例如窗口更改),它将被设置为 false。IsCreated如果不检查布尔值是否为真,我什至无法获得对渲染纹理的引用。Descriptor出于偏执,我还测试了渲染纹理是否与其属性匹配。所有这些检查都成功了。

我不知道接下来要看什么。

超级奇怪的是我有一个 GIF 生成器,使用非常相似的代码,这要复杂得多,而且它不会遇到这个问题。

有没有人处理过这个错误?有任何提示吗?

4

0 回答 0