Документация MSDN на ReleaseFrame
немного запутана. В нем конкретно говорится, что вам нужно освободить текущий кадр перед обработкой следующего, и что состояние поверхности «недействительно» после выпуска, что указывает на то, что это не копия, или не копия, которой владеет ваш процесс (что приведет к тот же эффективный результат). В нем также говорится, что вам следует отложить вызов до ReleaseFrame
до того момента, как вы вызовете AcquireNextFrame
по соображениям производительности, что может вызвать некоторые интересные проблемы синхронизации, особенно с используемой моделью потоков.
Я думаю, вам лучше сделать копию (поэтому ReleaseFrame
из предыдущего снимка AcquireNextFrame
, CopyResource
). Если вы не используете заборы, у вас нет никаких гарантий, что графический процессор будет потреблять ресурс до того, как поток вашего производителя вызовет ReleaseFrame
, что может дать вам неопределенные результаты. И если вы используете , используя заборы, и вызов AcquireNextFrame
откладывается до тех пор, пока графический процессор не завершит потребление данных предыдущего кадра, вы введете задержки и потеряете многие преимущества способности ЦП работать впереди графического процессора.
Мне любопытно, почему вы работаете с этой моделью потоков, когда работа выполняется на GPU. Я подозреваю, что это делает жизнь немного сложнее. Хотя создание копии текстуры устранит многие из этих осложнений.