Аппаратное ускорение масштабирования изображения в Windows с использованием C++

Я должен масштабировать растровое изображение (например, от 1280 x 720 до 1920 X 180 и наоборот).

Я использую это масштабирование в захвате видео с экрана. Программное масштабирование потребляет много ресурсов ЦП и медленнее.

Есть ли аппаратное ускорение API или библиотеки для масштабирования?

Некоторые методы обсуждаются в теме. Как использовать аппаратные видео скейлеры?, Но не окончательный вывод.

Необходима поддержка: Windows 7 и выше

1 ответ

Решение

Если у вас есть IDirect3DTexture9 изображения, которое нужно масштабировать, вы можете использовать StretchRect.

В D3D11 нет эквивалентной функции, однако, если у вас есть ID3D11Texture2D Из масштабируемого изображения вы можете просто создать цель рендеринга с желаемым целевым размером, полноэкранным квадром и рендерингом цели с помощью простого шейдера, который просто выбирает исходную текстуру. Результирующая цель рендеринга будет масштабированным изображением ввода. Примечание: этот полноэкранный четырехугольный метод также будет работать в D3D9.

Другие вопросы по тегам