2008-10-06 6 views
0

가능하고 GDI +를 사용하는 것보다 훨씬 빠릅니다. 그러나 DirectX를 사용하여 이미지의 크기를 조정하고 디스크에 저장하는 좋은 예는 발견하지 못했습니다. 나는 GDI +에서 이것을 반복해서 구현했다. 그리 어렵지 않다. 그러나 GDI +는 하드웨어 가속을 사용하지 않으며 그래픽 카드를 사용하여 더 나은 성능을 얻길 바랍니다.DirectX를 사용하여 이미지 크기 조정을위한 예제 코드

답변

1

정말 DirectX를 사용해야합니까? GDI +는 이미지 크기 조정 작업을 잘 수행합니다. DirectX에서는 이미지 크기를 조정할 필요가 없습니다. 이미지를 텍스처로 표시 할 가능성이 큽니다. 텍스처는 3D 오브젝트 (삼각형/폴리곤/메쉬)에만 적용될 수 있기 때문에 3D 오브젝트 및 뷰 포트의 크기에 따라 실제 이미지 크기가 결정됩니다. 3D 오브젝트 내에서 텍스처의 크기를 조절하려면 텍스처 좌표 또는 행렬 만 재생하면됩니다.

텍스처를 조작하려면 알파 블렌딩, 마스킹 및 모든 종류의 텍스처 조작 기술을 사용할 수 있습니다. GDI +와 같은 개별 픽셀을 조작하려면 GDI +가 할 수있는 방법이라고 생각합니다. DirectX는 이미지 조작을 결코 고치지 않았습니다.

+0

아니요 DirectX를 사용할 필요가 없습니다. GDI +보다 빠를 수있는 현실적인 대안을 찾고 있습니다. –

+0

그럴 경우 imagemagick (http://imagemagick.org/)처럼 많은 라이브러리가 있습니다. 더 많은 것이 있지만 지금은 기억할 수 없습니다. – faulty

3

이미지를 텍스처로로드하고 텍스처를 쿼드에 텍스처 매핑하고 해당 쿼드를 화면의 어떤 크기로 그릴 수 있습니다. 그것은 스케일링을 할 것입니다. 그런 다음 화면에서 픽셀 데이터를 가져 와서 파일에 저장하거나 더 처리 할 수 ​​있습니다.

쉽습니다. SDK와 함께 제공되는 기본 텍스처링 DirectX 예제는이 작업을 수행하도록 조정할 수 있습니다.

그러나 입니다. 렌더링 그 자체가 아니라 화면에서 메모리 버퍼로 픽셀 데이터를 전송하는 것입니다.

한 버퍼에서 다른 버퍼로 쌍 선형 스케일링을 사용하여 이미지의 크기를 조정하는 코드를 작성하는 것이 훨씬 간단하고 빠릅니다.

+0

하드웨어 가속을 사용하기 때문에 DirectX를 사용하는 것이 더 빠르다고 생각했습니다. 나는 그것을 화면에 렌더링하는 것에는 관심이없고 단지 크기를 조정하고 디스크를 저장하는 것에 관심이있다. –

+0

스케일링 자체는 실제로 빨라지 겠지만 텍스처 업로드 및 화면 픽셀의 리드 백을위한 데이터 준비는 하드웨어 사용으로 인한 모든 성능 이점보다 비싸집니다. 동일한 이미지를 hundrets 시간 스케일 경우 DirectX를 사용하는 경우에만 의미가 있습니다. –

관련 문제