Можно ли использовать пиксельные шейдеры при рендеринге на поверхность вне экрана?
-
03-07-2019 - |
Вопрос
Я рассматриваю возможность интеграции некоторого кода D3D, который у меня есть, с WPF через новый D3DImage, как описано здесь:
У меня такой вопрос: работает ли пиксельный шейдер на внеэкранных поверхностях?
Решение
Рендеринг на внеэкранную поверхность, как правило, менее ограничен, чем рендеринг непосредственно в задний буфер. Единственное ограничение, которое приходит с использованием внеэкранной поверхности с D3DImage - это то, что он должен быть в 32-битном формате RGB / ARGB (в зависимости от вашей платформы). Кроме этого, все, что может предложить оборудование, находится в вашем распоряжении.
На самом деле, тонны шейдерных эффектов используют преимущества внеэкранных поверхностей для многопроходной или полноэкранной постобработки.
Другие советы
Не знаю, есть ли в WPF что-то особенное, но в целом да, пиксельные шейдеры работают на поверхностях за пределами экрана.
Для некоторых эффектов требуется рендеринг на другую поверхность - например, преломление стекла перед сценой с рендерингом шейдеров. Пиксельные шейдеры не могут получить доступ к текущему содержимому экрана, и поэтому вид должен сначала отображаться в буфер, а затем использоваться в качестве текстуры в проходе шейдера преломления, чтобы он мог брать цвет фона из пикселя, отличного от вычисляемого. / р>