2014-07-21 4 views
1

내 응용 프로그램 용 XY 플로터를 개발할 계획입니다. 몇 가지 기본 아이디어를 제공하려면 어떻게 구현해야하는지 (물론 구현이 다를 수 있음) herehere을 참조하십시오.Direct2D - 기존 내용을 보존하고 새 값을 덮어 씁니다.

시뮬레이션 중에 (시뮬레이션을 완료하는 데 4 시간이 걸린다 고 가정) 고정 된 X 축에서 새로운 Y 값을 작성해야합니다.

그러나 Direct2D의 문제점은 pRenderTarget->BeginDraw()이 호출 될 때마다 기존 도면 (/ Plot/BitMap/Image 등)이 삭제되고 새 이미지가 그려지는 것입니다. 그러므로 나는 오래된 가치를 잃을 것이다.

물론 이전의 Y 값을 버퍼/변수에 버퍼링하고 다음 그림에서 사용할 수 있습니다. 그러나 시뮬레이션은 4 시간 동안 실행되지만 불행히도 모든 Y 값을 저장할 여력이 없습니다. 그래서 기존의 target-image/plot/etc에 새로운 Y 값을 렌더링/그릴 필요가 있습니다.

그리고 확실한 시간 내에 pRenderTarget->EndDraw()을 호출하지 않으면 리소스 제약으로 인해 응용 프로그램이 중단됩니다.

어떻게하면이 문제를 방지하고 요구 사항을 충족시킬 수 있습니까?

답변

1

당신이 요구하는 것은 꽤 복잡한 요구 사항입니다 - 그것이 나타나는 것보다 어렵습니다! Direct2D는 Immediate-Mode drawing API입니다. 즉석 모드 그래픽에서는 화면에 그려지는 상태 유지 또는 지속성이 없습니다.

대부분의 직접 모드 그래픽 API에는 클리핑 및 더티 렉이라는 개념이 있습니다. Direct2D에서는 these three techniques 중 하나를 사용하여 화면의 하위 집합으로 그릴 수 있습니다. 오프 스크린을 비트 맵 및 더블 버퍼링으로 렌더링하는 것이 좋은 방법 일 수 있습니다. 예 : 프로세스가된다 :

  • 그리기 오프 스크린 기존 비트 맵

와 결합/새로운 비트 맵 그리기, 새로운 데이터에

  • 화면하는 비트 맵
  • 블리트 비트 맵이 기술에만 의지 새로운 데이터/드로잉을 추가 할 때 플롯이 스크롤되거나 크기가 변경되지 않으면 작업하십시오.