Единство: Размеры цветовой поверхности не соответствуют размерам глубины поверхности. - PullRequest
0 голосов
/ 25 апреля 2020

Я получаю сообщение об ошибке «Размеры цветовой поверхности не совпадают с размерами поверхности глубины» всякий раз, когда я пытаюсь использовать код скриншота, без какого-либо вызова или стека, что-либо еще о том, что я делаю неправильно.

У меня есть отдельная камера от моей основной камеры, цель которой - делать снимки экрана под разными углами. Иерархия как таковая:

Hierarchy

  • Основная камера захватывает трехмерную сцену так же, как обычная основная камера, включая компоненты постобработки. Нет HDR или MSAA. Post-processing components
  • Камера GUI захватывает только слой пользовательского интерфейса. Ничего не включено, кроме MSAA.
  • Холст и изображение - это просто водяной знак, отображаемый камерой GUI.

Я указываю и основную камеру, и камеру GUI на та же цель визуализации текстуры. Когда я буду готов сделать снимок экрана, я активирую компоненты камеры, поэтому Unity начинает работу и говорит им визуализировать кадр. В обратном вызове OnRenderImage я отключаю камеру, чтобы ее можно было использовать снова, удаляю ранее назначенную текстуру рендеринга, извлекаю пиксели и сохраняю ее в формате PNG.

В отдельном тесте все это работает, как задумано. Нет сообщений об ошибках. Однако, когда я играю в полную игру, внезапно я получаю ошибки измерения на каждом скриншоте.

Я прочитал, что RenderTexture.IsCreated проверит, доступна ли текстура рендеринга. Предполагается, что он будет установлен в false из-за большого разнообразия событий, таких как изменения окна. Я сделал невозможным даже получение ссылки на текстуру рендеринга без проверки, является ли значение IsCreated bool истинным. Я также проверил, соответствует ли текстура рендера своему свойству Descriptor из паранойи. Все эти проверки успешны.

Я не знаю, что посмотреть дальше.

Что СУПЕР странно, у меня есть генератор GIF, использующий довольно похожий код, который намного сложнее, и он не страдает от этой проблемы.

Кто-нибудь имел дело с этой ошибкой раньше? Есть намеки?

...