Растяжка в DirectX приводит к появлению неровных краев - PullRequest
1 голос
/ 21 декабря 2009

У меня есть приложение Direct3D, которое работает с окнами или в полноэкранном режиме с фиксированным разрешением (скажем, 800x600). Чтобы поддерживать широкоэкранные режимы, я отрисовываю в задний буфер 800x600, а затем с помощью Blt рисую последний кадр в части переднего буфера, который обычно больше (скажем, 1280x720), поэтому изображение 800x600 растягивается до 960x720, чтобы сохранить соотношение сторон.

Это прекрасно работает, за исключением некоторых комбинаций видеокарт / ОС / драйверов (nVidia Quadro, DX11, Windows 7), где блиц, по-видимому, делается с использованием точечной выборки, что приводит к неровным краям и, как правило, к неравномерному финальному изображению. *

Есть ли способ избежать этого? Например, заставить Blt использовать линейный фильтр при увеличении?

(Примечание: я знаю, что могу рендерить исходные ресурсы 800x600 в 960x720 вместо растяжения в конце, но у этого есть другие недостатки, поэтому предпочтительным решением является растяжение в конце)

Ответы [ 2 ]

1 голос
/ 23 декабря 2009

Я не думаю, что есть способ контролировать это. Я прочитал что-то, сказав, что это поведение изменилось в Windows7 с некоторыми драйверами, но я не могу найти ссылку сейчас.

Возможно, вы могли бы визуализировать текстуру с разрешением 800x600, а затем нарисовать полноэкранный квад, используя эту текстуру при фактическом размере экрана. Тогда, по крайней мере, вы сможете контролировать фильтрацию.

0 голосов
/ 15 января 2010

Рассматривали ли вы рендеринг сцены в текстуру, а затем рендеринг этой текстуры в растянутый буфер? Это даст вам билинг.

Причина, по которой он работает на некоторых машинах, заключается в том, что именно так будет реализован драйвер blit

Однако, чтобы получить наилучшие результаты, вы ДЕЙСТВИТЕЛЬНО избавляетесь от простого рендеринга в буфер нужного размера. то есть, если вы хотите, чтобы 1280x720 ... визуализировались в задний буфер 1280x720 с соответствующим изменением поля зрения и соотношения сторон.

...