Pergunta

Eu sei que é possível, e muito mais rápido do que usando GDI +. No entanto, eu não encontrei qualquer bom exemplo do uso de DirectX para redimensionar uma imagem e guardá-lo no disco. Eu tenho implementado isso mais e mais em GDI +, isso não é difícil. No entanto GDI + não usa qualquer aceleração de hardware, e eu estava esperando para obter um melhor desempenho ao tocar na placa gráfica.

Foi útil?

Solução

Você realmente precisa usar DirectX? GDI + faz o trabalho bem para redimensionar imagens. No DirectX, você realmente não precisa redimensionar imagens, como provavelmente você vai estar exibindo suas imagens como texturas. Uma vez que as texturas podem só se aplica no objecto 3d (triângulos / polígonos / mesh), o tamanho do objecto e vista 3d porta determina o tamanho real da imagem exibida. Se você precisa dimensionar sua textura dentro do objeto 3D, basta jogar a textura coordenar ou matriz.

Para manipute a textura, você pode usar mistura alfa, mascarando e todo o tipo de técnica de manipulação textura, se é isso que você está procurando. Para manipular pixel individual como GDI +, eu ainda acho que GDI + é a maneira de fazer. DirectX nunca se emendar para fazer manipulação de imagem.

Outras dicas

Você pode carregar a imagem como uma textura, textura mapear-lo em um quad e desenhar que quad em qualquer tamanho na tela. Que irá fazer o escalonamento. Depois, você pode pegar os pixels de dados da tela, armazená-lo em um arquivo ou processá-lo ainda mais.

É fácil. Os exemplos básicos texturização DirectX que vêm com o SDK pode ser ajustado para fazer exatamente isso.

No entanto, é lento. Não a própria prestação, mas a transferência de dados de pixel da tela para um buffer de memória.

Imho seria muito mais simples e mais rápido para apenas escrever um pouco de código que redimensiona uma imagem usando scaling bilinear de um tampão para outro.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top