고해상도 이미지 렌더링에 대해 질문 있습니다

안녕하세요
가입 이후 처음으로 프로그래밍 관련 질문을 남깁니다. :slight_smile:

질문을 남기기 전에 배경 설명과 제가 시도한 것들을 먼저 서술하겠습니다.

고해상도 카메라(5M 이상, 최대 25M 카메라)의 실시간 영상을 렌더링하는 것이 목표인데요.
(frame rate는 최대 20을 넘지 않도록 하고 있습니다)
확대, 축소도 가능하고 마우스 drag & drop에 따라 움직이는 기능과 도형 그리는 것도 포함하는 뷰어 프로그램을 만드는 것입니다.

제가 지금까지 시도해 본 것은 다음과 같습니다.

  1. GDI로 구현하기.
  2. GDI+로 구현하기.
  3. GDI+로 구현하고, 마지막에 GDI로 변환하여 그리기.
    (모두 더블 버퍼링 적용)

이와 더불어 이미지 전체 영역을 그릴지, 그려지는 컨트롤의 크기(ROI) 만큼만 1차로 그리고 컨트롤에 그릴지 등 여러 방법론을 적용해 봤습니다.

결론은, 확실히 GDI가 GDI+보다 빠르더군요. 여기서 제가 궁금한 점이 있습니다.

  1. GDI 또는 GDI+ 사용 시 렌더링 속도를 높일 수 있는 어떤 옵션 같은 것이 있을까요?
  2. GDI외에 direct2d를 사용하는 방법도 있던데, 이는 GDI에 비해 속도가 빠를까요?
  3. GDI 또는 GDI+를 사용하더라도 효율적인 이미지 렌더링 방법론이 있다면 조언을 듣고 싶습니다.

고수님들의 조언 부탁드립니다.

즐거운 하루 되세요!
감사합니다.

좋아요 1

GDI, GDI+ 는 실시간 동영상을 그리기에는 속도가 많이 느립니다.
저는 예전에 DirectDraw 를 사용했는데 요즘은 DirectX 를 많이 사용하는 것으로 알고 있습니다.
제 경험상 GDI, GDI+ 로 동영상 렌더링은 무리입니다. 마치 c로 메모리 카피를 하는데 memcpy 를 사용하지않고 for 문으로 하나씩 복사하는 수준일겁니다.

좋아요 2

안녕하세요. 답변 감사합니다.
찾아보니 GDI와 DirectX의 비교 자료가 많더군요.
한번 DirectX로 실시간 고해상도 이미지 출력을 테스트해 봐야겠습니다.
새로 공부할게 생겼네요.
감사합니다 :slight_smile:

좋아요 3