2016-08-09 2 views
0

Qt와 OpenGL 및 GLEW를 사용하여 쿼드의 텍스처를 매핑하고 렌더링합니다. 각 프레임의 텍스처를 변경하고 창을 지속적으로 업데이트하려고합니다. 계속 업데이트하려면 어떻게해야합니까?Opengl 윈도우를 계속 업데이트하십시오.

타이머를 추가하고 슬롯에 신호 업데이트 기능을 연결하여 주석에 언급 된대로 문제가 해결되었습니다.

+0

"지속적으로 창을 업데이트"한다는 것은 무엇을 의미합니까? – Shumush

+0

텍스처를로드하여 표시 한 다음 두 번째 텍스처를로드하고 표시하는 등의 작업을 수행하려고합니다. 이제는 마우스가 움직일 때마다 창을 업데이트합니다. Qt와 OpenGL도 사용하고 있습니다. – user3178756

+0

그러면 이벤트를 기다리거나 이벤트를 폴링하는 경우 메인 루프를 살펴 봐야합니다. qt는 기본적으로 이벤트를 대기하므로 루프를 차단합니다. 그러나 나는 확실하지 않다. – Shumush

답변

1

qt를 사용하여 창을 만들고 마우스가 움직이는 것처럼 이벤트를 관리하는 경우 창을 다시 그리기 전에 이벤트가 발생할 때까지 응용 프로그램이 대기 할 수 있습니다. 난 당신 QTimer 개체를 사용하여 업데이트 기능에 시간 초과 신호를 연결할 수있을 것 같아요.

일부 waitEvent() 기능으로 이벤트를 처리하는 경우 비 차단 버전으로 변경하십시오.

+0

'frameSwapped'의 신호가 더 좋을 수 있습니다. – Inline

+0

'frameSwapped'는'QQuickWindow'의 신호입니다. 우리가 이벤트를 사용하고 있는지 알 수 없습니다. – Shumush

+0

QGLWidget을 사용하여 paintGL의 끝에 업데이트 만 추가하면 렌더링이 계속 강제 실행되지만 좋은 해결책입니까? – user3178756

2

버퍼를 바꾸려면 각 프레임마다 특정 스왑 함수 (wglSwapBuffers, glXSwapBuffers 등)를 호출하고 vsync가 비활성화되어 있어야합니다. 창 크기를 조정하게하면 열려있는 gl 특정 질문이 아니라는 의미이며, 이는 또한 창 시스템에 달려 있습니다.

관련 문제