2011-09-10 4 views
0

QGLwidget의 하위 클래스를 개발 한 매우 정확한 타이밍 (밀리 초 단위)으로 일부 이미지를 플래시해야합니다. 이미지는 초기화시 텍스처로로드됩니다. QTimer 인스턴스를 사용하여 표시되는 이미지를 변경하고 있습니다. 타이머의 timeOut 신호는 일부 파일 I/O를 수행 한 다음 updateGL()을 호출하는 timeOutSlot에 연결됩니다.QGLWidget 업데이트 - 이벤트 또는 신호/슬롯?

이벤트 처리기는 외부 이벤트 용이며 신호/슬롯은 GUI 내부 통신을위한 것으로 알고 있지만 timeOutEvent 핸들러로도 구현할 수 있습니다.

둘 사이에 성능 차이가 있습니까? 2 ~ 3 밀리 초 이상의 성능 저하는 중요합니다 (하드웨어는 평균입니다, Intel Core 2 Duo T5700, nVidia 8600M GT 그래픽 카드 사용).

답변

0

이벤트가 이벤트 대기열에 추가되기 때문에 Qt는 최적화 및 중요도 정렬을 자주 호출하지만 s/s는 즉시 실행됩니다. 직접 호출보다 느리지 만 이벤트가 큐에 추가되기 때문에 signal/slot이라고 말합니다.

1

신호 및 슬롯은 일반적인 이전 함수 호출보다 약 10 배 느립니다. 그러나 그들은 너무 천천히 진행되기 때문에 처리하는 데 수 밀리 초가 걸릴 것입니다. 하나의 신호를 처리하는 시간은 약 0.001 ms (see slide 27)입니다.

매우 정확한 타이밍이 필요하다고 말하면 디스플레이 새로 고침 빈도가 도면에 미치는 영향을 알고 계십니까? 이미지는 (일반적으로) 60Hz 재생 빈도로 그려집니다. 이미지 사이의 시간은 16.7ms이므로 얻을 수있는 최대 정확도입니다.

+0

타이밍 정보를 보내 주셔서 감사합니다. 실제로 이미지는 DLP 프로젝터를 통해 투사됩니다. 불행하게도 프로젝터는 VGA 입력을 사용하며 VGA 수직 주사율에 의해 제한됩니다. (필자는 DLP 칩을 직접 프로그래밍하는 것을 선호했을 지 모르지만, 일부 이상한 상업적 이유 때문에 TI는 단일 칩을 가진 프로젝터의 가격보다 훨씬 높은 가격으로 단일 DLP 칩을 판매합니다.) 그러나 내 이미지 디스플레이 시간이 수직 리프레시 기간의 배수이면, 나는 안전하다고 생각합니다. – subhacom