2011-08-08 5 views
2

관리되지 않는 C++로 코딩 된 OpenGL 렌더링 엔진이 있는데 이것을 WPF 응용 프로그램에 포함하려고합니다.별도의 스레드에서 WPF로 OpenGL 엔진을 실행합니다.

http://www.codeproject.com/Articles/127141/Unmanaged-C-OpenGL-Drawing-and-C-WinForms-WPF-inte/?display=Mobile

지금까지 좋은 : 여기 (2 솔루션을) 설명에 따라 약간의 연구 후, I는 windowsformshost에서 윈도우 폼 패널의 핸들을 사용하여 그것을 할 수 있었다. 문제는 렌더링을 실시간으로해야한다는 것입니다. 일부 UI 작업이 너무 오래 걸릴 때 (예 : 속성 표를 채우는 것과 같이) 렌더링이 깜박입니다.

그런 다음 별도의 스레드에서 렌더링을 수행해야합니다. 나는이 방법을 사용하려 :

http://blogs.msdn.com/b/dwayneneed/archive/2007/04/26/multithreaded-ui-hostvisual.aspx

를하지만 나는 HostVisual 내부 windowsformshost (http://social.msdn.microsoft.com/Forums/en-AU를 배치 할 수 없습니다 것 때문에 작동하지 않습니다/wpf/thread/124cc95c-a9c6-4aca-a5fc-4f959ea715c3)

그래서 어떻게 생각하나요?

답변

0

더블 버퍼링을 사용하는 경우 절대로 깜박 거리지 않아야합니다. "깜박임 방지 방법"절을 참조하십시오. 링크 된 첫 번째 기사에서 또한 실행 시간이 오래 걸리는 코드 내에 Application.DoEvents() 호출을 삽입 할 수도 있습니다. 스레드 된 솔루션을 사용하는 것의 복잡성을 대체 할 수있는 몇 가지 제안.

편집 : 단지 실현 WPF는 DoEvents()를 지원하지 않지만 대안이 있습니다 http://nmarian.blogspot.com/2007/09/doevents-in-wpf.html

+0

나는 이미 문서의 "깜박임 방지하는 방법"절을 구현하고, 크기 조정, 정상 작동에 깜빡하지 않습니다 UI 스레드에서 자체적으로 작성되고 시간이 걸리고 OpenGL을 렌더링하는 데 동일한 Dispatcher를 사용하기 때문에 제 3 자 속성 표를 채울 때 깜박입니다. wpf DoEvents 해결 방법은 흥미 롭지 만 제 3 자 코드이므로 어디에도 삽입 할 수 없습니다. 어쨌든 답장을 보내 주셔서 감사합니다. –

관련 문제