У меня есть программа, которая сначала визуализирует текстуру, затем передает текстуру вычислительному шейдеру для обработки, а затем визуализирует результат вывода на экран через текстурированный полноэкранный четырехугольник.
Я читал в руководстве по программированию nVidia для вычислительных шейдеров, что каждый раз, когда вы запускаете вычислительный шейдер, он инициирует переключение контекста устройства графического процессора, что не следует делать довольно часто.
Я очень смущен прямо сейчас. Насколько я понимаю, в моем конвейере рендеринга GPU дважды переключает контексты. Правильно? Один раз во время первого диспетчерского вызова, в следующий раз, когда я нормально отрисовываю свой полноэкранный квадроцикл.
Если это правильно, то я могу избежать одного переключения, реорганизовав свой код следующим образом. Во-первых, визуализируйте текстуру. Во-вторых, выполните обработку в вычислительном шейдере. Затем, В СЛЕДУЮЩЕМ КАДРЕ, визуализируйте результат, затем (все еще в следующем кадре) визуализируйте все обновления текстуры, выполните обработку в вычислительном шейдере... Таким образом, в основном в каждом начале кадра я визуализирую результаты последнего кадра (в следующем кадре). первый кадр будет исключением). Тогда будет только одно переключение контекста, верно?
Но тогда GPU все равно придется делать переключение контекста между кадрами, верно? Таким образом, две версии моего конвейера рендеринга имеют два переключателя контекста. Разницы в производительности не будет. Я прав?
Любая помощь будет оценена.