Pregunta

Sé que es posible, y mucho más rápido que usar GDI +. Sin embargo, no he encontrado ningún buen ejemplo de uso de DirectX para cambiar el tamaño de una imagen y guardarla en el disco. He implementado esto una y otra vez en GDI +, eso no es difícil. Sin embargo, GDI + no utiliza ninguna aceleración de hardware, y esperaba obtener un mejor rendimiento al utilizar la tarjeta gráfica.

¿Fue útil?

Solución

¿Realmente necesitas usar DirectX? GDI + hace el trabajo bien para cambiar el tamaño de las imágenes. En DirectX, realmente no necesita cambiar el tamaño de las imágenes, ya que lo más probable es que muestre sus imágenes como texturas. Dado que las texturas solo se pueden aplicar en objetos 3D (triángulos / polígonos / malla), el tamaño del objeto 3D y el puerto de vista determinan el tamaño real de la imagen que se muestra. Si necesita escalar su textura dentro del objeto 3D, simplemente reproduzca la coordenada o matriz de textura.

Para manipular la textura, puedes usar la mezcla alfa, el enmascaramiento y todo tipo de técnica de manipulación de texturas, si eso es lo que estás buscando. Para manipular píxeles individuales como GDI +, sigo pensando que GDI + es la forma de hacerlo. DirectX nunca fue reparado para manipular imágenes.

Otros consejos

Puede cargar la imagen como una textura, mapearla en un quad y dibujar ese quad en cualquier tamaño en la pantalla. Eso hará la escala. Luego, puede tomar los datos de píxeles de la pantalla, almacenarlos en un archivo o procesarlos más.

Es fácil. Los ejemplos de DirectX de texturas básicas que vienen con el SDK se pueden ajustar para hacer exactamente esto.

Sin embargo, es lento. No la representación en sí, sino la transferencia de datos de píxeles de la pantalla a un búfer de memoria.

Imho sería mucho más simple y rápido escribir solo un pequeño código que redimensiona una imagen usando una escala bilineal de un búfer a otro.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top