문제

OpenGL로 프로그램을 작성 중인데 일종의 인터페이스 도구 모음이 필요합니다.나의 초기 반응은 GUI를 사용하는 것이었고 C++에 대한 추가 조사를 통해 GUI는 사용 중인 OS에 따라 다르다는 것을 깨달았습니다(저는 Windows를 사용하고 있습니다).그래서 나는 QT를 사용하여 나를 돕기로 결정했습니다.

내 질문은 내가 이 솔루션에 대해 최선/적절한 접근 방식을 취하고 있는지 여부입니다.OpenGL 프로그램을 작성하고 원하는 작업을 수행하기 위해 C++ 코드와의 인터페이스를 만들고 싶은 GUI를 가질 수도 있습니까?

예를 들어 각 방향에 화살표가 있는 간단한 "제어판"을 만드는 경우입니다.그리고 화면에는 글루로 생성된 상자 개체가 있습니다. 클릭할 화살표를 인터페이스하고 OpenGL 프로그램과 상호 작용하여 상자를 이동할 수 있습니까?

도움이 되었습니까?

해결책

QT를 사용하면 문제가 발생합니다. Qtopengl 모듈을 통해 OpenGL을 잘 통합 할 수 있습니다.

  1. 디스플레이 클래스를 도출하십시오 QGLWidget (QT 4.8까지) 또는 QOpenGLWidget (QT 5.4 이후) 및 가상 방법을 구현합니다 paintGL() 등.
  2. QT의 신호 및 슬롯 시스템에 액세스하여 GUI 이벤트를 포착하고 OpenGL 디스플레이를 업데이트 할 수 있습니다.

다른 팁

당신은 QGLWidget 그래서 당신이 묘사하는 것은 할 수 있습니다.

이것을 할 때 내가 만난 한 가지는 일반 위젯이 불투명해야한다는 것입니다. 그들이 어떤 식 으로든 투명한 순간 그 아래에 모든 종류의 쓰레기가있었습니다. 그것은 얼마 전 였으므로 최신 버전 이이 문제를 해결할 수 있습니다. 플랫폼에 따라 ymmv.

GLUT에 머무르세요.제어판에 Qt를 추가할 필요가 없습니다.하위 창(또는 프로그램 설계에 더 적합한 두 번째 창)을 열고 해당 창에 컨트롤을 그린 다음 GLUT를 사용하여 마우스 상호 작용을 처리할 수 있습니다.

또한 Qt와 GLUT에는 각각 자체 이벤트 루프가 있습니다.Qt의 이벤트 루프만 사용하려면 GLUT 구조의 대부분을 포기해야 합니다. GLUT 이벤트 루프가 콜백 함수를 호출할 수 없기 때문입니다.Qt에는 다른 사람이 이벤트 루프에서 Qt의 이벤트 처리 코드를 호출하도록 하는 기능이 있지만 GLUT가 이벤트 정보를 전달하도록 하는 쉬운 방법은 없다고 생각합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top