OpenGL 패키지를 사용 중이며 GLUT 패키지도 사용하고 있습니다. GLUT 패키지에는 마우스 휠 콜백이있는 것으로 보일지라도 작동하지 않는 것 같습니다 (doc에서는 freeglut에만 해당).Haskell의 GLUT 윈도우에서 마우스 휠 이벤트에 어떻게 반응합니까?
그래서 ... GLUT 생성 된 창 내부에서 마우스 휠 이벤트에 어떻게 접근합니까?
OpenGL 패키지를 사용 중이며 GLUT 패키지도 사용하고 있습니다. GLUT 패키지에는 마우스 휠 콜백이있는 것으로 보일지라도 작동하지 않는 것 같습니다 (doc에서는 freeglut에만 해당).Haskell의 GLUT 윈도우에서 마우스 휠 이벤트에 어떻게 반응합니까?
그래서 ... GLUT 생성 된 창 내부에서 마우스 휠 이벤트에 어떻게 접근합니까?
OpenGL은 창을 만들지 않습니다. 본질적으로 그 기능은 단지 에 그치며 것들을 그립니다. 이벤트를 OpenGL의 범위 밖으로 완전히 처리합니다. GLUT는 OpenGL의 핵심 부분이 아닙니다. 간단한 OpenGL 자습서를 쉽게 작성하기위한 목적으로 작성된 다소 오래된 라이브러리입니다. 아무것도 더. 당신이 훨씬 뛰어난 GLFW를 사용해야하는 대신 GLUT의
이있는 또한 우수한 하스켈 바인딩이 존재 : http://hackage.haskell.org/package/GLFW
죄송합니다. "GLFW 응용 프로그램은 하나의 창만 열 수 있습니다." 배가 필요해. 내가 ... WX를 사용해야 할 것 같은데? OpenGL에 대해 wx 또는 wxcore에서 아무 것도 찾을 수 없습니다. – mentics
@taotree : 아마도 WX 또는 GTK 중 하나 일 것입니다. 당신은 WX에 GLCanvas를 원합니다; 주요 패키지에는 존재하지 않는 것 같아요. 수요가 부족하기 때문에 wxcore에는 존재합니다. –
나는 그것이 wxcore에 있지만 wx에는 없다는 것을 의미하는만큼 아직 WX를 모른다. 즉, 여전히 간단하게 사용할 수 있다는 의미입니까, 아니면 먼저 지원해야 wx로 구현해야합니까? – mentics
그냥 다른 옵션을 추가 할 수 ...
내가 GLUT 불만을 품고있어, 나는 Gtk2Hs로 전환 . GtkGLext를 시연하는 위키에 몇 가지 간단한 샘플이 있습니다.
또한 GLUT를 피하는 것이 좋습니다. 어쨌든 꽤 제한되어 있습니다.
또 다른 옵션은 콜백을 사용하지 않고 자신의 메인 이벤트 루프를 처리하려는 경우 SDL을 사용하는 것입니다. 예, 게임용이지만 GL 컨텍스트를 제공 할 수 있으며 표준 UI 위젯을 필요로하지 않는 대부분의 대화 형 OpenGL 응용 프로그램에 적합합니다. 키보드/마우스 이벤트, 밀리 초 타이머 및 몇 가지 매우 기본적인 창 관리 기능을 제공합니다.
KINDA POINTLESS POST-HOC EDIT : GLFW에서 자체 이벤트 루프를 실행할 수 있다는 의견을 들었습니다. 다시 한번 살펴본 후, 나는 확실히 GLFW가 표준 UI 위젯이 필요없는 대부분의 것들을 처리하는 방법이라고 동의한다.
GLUT에서 벗어난 답변이 정확하고 유용하지만 문자 질문에 대한 대답은 keyboardMouseCallback을 사용하는 것입니다. mousewheel 이벤트는 작동하지 않지만 keyboardMouseCallback은 휠 이벤트도 처리하므로 GLUT에서 작동합니다. – mentics