2009-11-27 3 views
0

Qt와 OpenGL로 프로젝트를 만들었습니다.반복적으로 Qt와 OpenGL로 루프를 렌더링합니다.

Qt paintGL()은 반복적으로 호출하므로, 해당 함수 외부에서 값을 변경하고 update()를 호출하여 새 이미지를 페인트 할 수있었습니다. 나는 또한 당신이 프로그램을 시작하자마자 initializeGL()을 호출했다고 생각한다.

이제 내 질문은 :

내가 원하는 다른 프로그램에서 같은 기능을 제공합니다. 모든 이미지 등을 그릴 필요가 없습니다. 응용 프로그램이 닫히지 않도록 계속 호출되는 paintGL()과 같은 기능을 만드는 방법이 있는지 궁금합니다. while (true) 루프를 사용하여 프로그램을 계속 실행했지만 while 루프 때문에 GUI가 비활성 상태였습니다.

스레딩보다 좋은 팁.

감사합니다.

답변

1

정확한 메커니즘은 사용중인 GUI 툴킷에 따라 다릅니다. 일반적으로 앱은 이벤트를 전달하기 위해 실행 루프에 지속적으로 서비스해야합니다. 루프가 while 회 실행될 때 앱이 응답하지 않는 이유가 여기에 있습니다.

끊임없이 다시 그리는 것이 필요한 경우 가장 쉬운 방법은 창을 만들 때 타이머를 만든 다음 타이머 짝수 처리기 또는 콜백에서 다시 칠하기를 강요하는 창을 무효화하는 것입니다. 그러면 페인트 핸들러가 타이머의 빈도 (예 : 초당 25 회)로 호출 될 수 있습니다.

+0

어떤 툴킷을 사용할 지 어떻게 결정합니까? 죄송합니다 멍청한 질문에 대한 – NeverAgain

+0

QT를 계속 사용한다고 가정하면 http://doc.trolltech.com/4.5/qtimer.html 타이머를 만들고 창에서 invalidate를 호출하는 슬롯에 제한 시간 신호를 연결하십시오. 페인트 핸들러에서 GL 드로잉을 수행합니다. – gavinb

관련 문제