Я знаю, что это возможно, и намного быстрее, чем при использовании GDI +. Однако я не нашел хорошего примера использования DirectX для изменения размера изображения и сохранения его на диск. Я реализовал это снова и снова в GDI +, это не сложно. Однако GDI + не использует аппаратное ускорение, и я надеялся получить более высокую производительность, нажав на графическую карту.Пример кода для изменения размера изображения с помощью DirectX
ответ
Вам действительно нужно использовать DirectX? GDI + отлично работает для изменения размеров изображений. В DirectX вам не нужно изменять размеры изображений, так как, скорее всего, вы будете отображать свои изображения в виде текстур. Поскольку текстуры могут применяться только к 3D-объекту (треугольники/многоугольники/сетка), размер 3d-объекта и порта просмотра определяет отображаемый размер изображения. Если вам нужно масштабировать текстуру в 3D-объекте, просто сыграйте координату или матрицу текстуры.
Для управления текстурой вы можете использовать альфа-смешивание, маскировку и всевозможные методы манипулирования текстурой, если это то, что вы ищете. Чтобы управлять отдельным пикселем, подобным GDI +, я все же думаю, что GDI + - это способ сделать. DirectX никогда не исправлял манипуляции с изображениями.
Вы можете загрузить изображение в виде текстуры, текстуры-карты на квадрат и нарисовать квадрат любого размера на экране. Это сделает масштабирование. Впоследствии вы можете захватить пиксельные данные с экрана, сохранить его в файле или обработать его дальше.
Это очень просто. Основные текстурирующие примеры DirectX, поставляемые с SDK, можно настроить таким образом.
Однако является slow. Не сам рендеринг, а передача данных с экрана на буфер памяти.
Imho было бы намного проще и быстрее просто написать небольшой код, который изменяет размер изображения, используя билинейное масштабирование от одного буфера к другому.
Я думал, что быстрее использовать DirectX из-за использования аппаратного ускорения. Мне не интересно отображать его на экране, только изменяя его размер и сохраняя его. – 2008-10-07 00:55:44
Само масштабирование действительно будет быстрее, но подготовка данных для загрузки текстуры и считывание пикселов экрана приведет к снижению производительности всех преимуществ от использования аппаратного обеспечения. Имеет смысл использовать DirectX, если вы масштабируете одно и то же изображение времени. – 2008-10-07 07:06:28