2008-10-06 2 views
0

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

ответ

1

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

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

3

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

Это очень просто. Основные текстурирующие примеры DirectX, поставляемые с SDK, можно настроить таким образом.

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

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

+0

Я думал, что быстрее использовать DirectX из-за использования аппаратного ускорения. Мне не интересно отображать его на экране, только изменяя его размер и сохраняя его. – 2008-10-07 00:55:44

+0

Само масштабирование действительно будет быстрее, но подготовка данных для загрузки текстуры и считывание пикселов экрана приведет к снижению производительности всех преимуществ от использования аппаратного обеспечения. Имеет смысл использовать DirectX, если вы масштабируете одно и то же изображение времени. – 2008-10-07 07:06:28

 Смежные вопросы

  • Нет связанных вопросов^_^