Пример кода для изменения размера изображения с использованием DirectX - PullRequest
0 голосов
/ 06 октября 2008

Я знаю, что это возможно, и намного быстрее, чем использование GDI +. Однако я не нашел хорошего примера использования DirectX для изменения размера изображения и сохранения его на диск. Я реализовал это снова и снова в GDI +, это не сложно. Однако GDI + не использует аппаратное ускорение, и я надеялся повысить производительность, подключившись к видеокарте.

Ответы [ 2 ]

3 голосов
/ 06 октября 2008

Вы можете загрузить изображение как текстуру, нанести на карту текстуры на квад и нарисовать этот квад в любом размере на экране. Это сделает масштабирование. После этого вы можете получить пиксельные данные с экрана, сохранить их в файле или обработать дальше.

Это просто. Основные примеры текстурирования DirectX, поставляемые с SDK, могут быть настроены именно для этого.

Однако, медленнее . Не сам рендеринг, а передача данных пикселей с экрана в буфер памяти.

Имхо, было бы намного проще и быстрее просто написать небольшой код, который изменяет размеры изображения, используя билинейное масштабирование из одного буфера в другой.

1 голос
/ 06 октября 2008

Вам действительно нужно использовать DirectX? GDI + хорошо справляется с изменением размеров изображений. В DirectX вам не нужно изменять размер изображений, так как вы, скорее всего, будете отображать их в виде текстур. Поскольку текстуры могут применяться только к трехмерному объекту (треугольники / многоугольники / сетка), размер трехмерного объекта и порта просмотра определяет фактический отображаемый размер изображения. Если вам нужно масштабировать текстуру внутри 3d-объекта, просто воспроизведите текстуру координат или матрицы.

Чтобы манипулировать текстурой, вы можете использовать альфа-смешение, маскирование и все виды техники манипулирования текстурой, если это то, что вы ищете. Чтобы манипулировать отдельным пикселем, таким как GDI +, я все еще думаю, что GDI + - это способ сделать. DirectX никогда не исправлял манипуляции с изображениями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...